Дмитрий
ac16861b87
телеграм: у рекламы появился конец — закрытие отработавших кампаний и возврат переплаты
...
Статус launched был терминальным: конца у рекламы не существовало вовсе. Отсюда две беды
разом — робот ходил за цифрами вечно, а неоткрученные деньги возвращать было некуда.
Живая улика, кампания №15: списано 255,36 ₽ за 380 показов, показан 21, площадка
израсходовала 10,08 ₽. Переплата 241,25 ₽ не вернулась бы никогда. Портал честно читал
stats_spend_rub и не использовал его нигде.
Ш1 робот перестаёт долбиться в потерянные кампании: 5 неудач подряд уводят в разбор,
считаются только заходы после последней правки строки кампании
Ш2 статус кабинета доезжает до портала; незнакомое слово идёт в журнал
Ш3 новый статус completed «Показы закончились», переход launched → completed
Ш4 суточная задача в 04:40 закрывает отработавшую рекламу и возвращает переплату;
возврат идемпотентен ключом tg:campaign:ID:vozvrat, неизвестный расход не закрываем
Ш5 тревога в журнал, если заморозка денег висит дольше суток
Попутно вскрыто и починено: разбор кампании писал клиенту «деньги вернулись на рекламный
кошелёк», не вернув ни рубля. Новый вход в старый узел сделал его сообщение ложью.
Новая колонка client_tg_campaigns.spend_changed_at — двигается только при реальном
изменении суммы; stats_read_at для этого не годится, он растёт на каждом заходе робота.
Журнал схемы v9.74.
Кнопка «Остановить» не сделана, закрытие по слову кабинета тоже: разведка 08.08 показала,
что кабинет говорит «Останавливается, до 30 минут», но итогового слова мы так и не узнали,
а вернулись ли деньги — не замерено. Подробности и что делать дальше — в плане.
На боевой не выкачено: нужна миграция и разрешение владельца.
Сторожа: ClientTg 438 зелёных, экраны телеграма 47 зелёных.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-08 18:36:51 +03:00
..
2026-08-01 13:25:55 +03:00
2026-05-11 17:51:33 +03:00
2026-06-27 12:47:49 +03:00
2026-05-16 17:01:51 +03:00
2026-05-17 09:30:21 +03:00
2026-05-18 03:42:41 +03:00
2026-05-18 17:20:28 +03:00
2026-05-19 12:55:06 +03:00
2026-05-20 10:45:02 +03:00
2026-05-20 10:54:50 +03:00
2026-05-20 10:57:04 +03:00
2026-05-20 10:59:27 +03:00
2026-05-20 11:06:13 +03:00
2026-05-20 11:15:14 +03:00
2026-05-21 08:24:25 +03:00
2026-05-23 15:50:37 +03:00
2026-05-24 19:29:05 +03:00
2026-05-23 11:48:20 +03:00
2026-05-23 18:46:08 +03:00
2026-05-24 06:43:40 +03:00
2026-05-24 06:43:40 +03:00
2026-06-03 20:01:55 +03:00
2026-05-24 18:51:17 +03:00
2026-05-25 08:38:31 +03:00
2026-05-25 17:59:11 +03:00
2026-05-25 17:59:11 +03:00
2026-06-17 08:03:35 +03:00
2026-06-19 13:37:48 +03:00
2026-05-29 09:20:56 +03:00
2026-06-19 12:55:04 +03:00
2026-06-17 17:24:48 +03:00
2026-06-18 19:33:33 +03:00
2026-06-19 12:58:37 +03:00
2026-06-19 08:53:07 +03:00
2026-06-19 11:48:26 +03:00
2026-06-19 14:53:57 +03:00
2026-06-19 16:21:32 +03:00
2026-06-22 09:20:42 +03:00
2026-06-22 18:03:42 +03:00
2026-06-22 22:30:36 +03:00
2026-06-25 18:07:15 +03:00
2026-06-25 18:52:39 +03:00
2026-06-26 09:39:19 +03:00
2026-07-06 14:35:22 +03:00
2026-07-06 14:35:22 +03:00
2026-07-06 14:35:22 +03:00
2026-07-06 14:35:22 +03:00
2026-06-28 13:41:06 +03:00
2026-06-28 07:12:14 +03:00
2026-07-02 11:07:22 +03:00
2026-07-02 11:07:22 +03:00
2026-06-30 04:18:46 +03:00
2026-06-30 15:40:30 +03:00
2026-07-01 15:45:11 +03:00
2026-07-14 19:46:59 +03:00
2026-07-14 19:46:59 +03:00
2026-07-10 08:46:47 +03:00
2026-07-10 08:46:47 +03:00
2026-07-03 17:34:03 +03:00
2026-07-05 19:25:19 +03:00
2026-07-05 14:28:38 +03:00
2026-07-05 14:28:38 +03:00
2026-07-05 14:28:38 +03:00
2026-07-05 13:52:43 +03:00
2026-07-07 15:50:59 +03:00
2026-07-09 09:45:08 +03:00
2026-07-09 09:45:12 +03:00
2026-07-12 19:14:22 +03:00
2026-07-12 12:56:22 +03:00
2026-07-13 06:45:54 +03:00
2026-07-14 05:22:46 +03:00
2026-07-14 05:06:27 +03:00
2026-07-14 04:51:16 +03:00
2026-07-15 16:50:57 +03:00
2026-07-18 10:43:18 +03:00
2026-07-16 14:50:01 +03:00
2026-07-18 11:39:48 +03:00
2026-07-18 13:04:02 +03:00
2026-07-18 14:00:55 +03:00
2026-07-19 07:57:22 +03:00
2026-07-19 10:03:17 +03:00
2026-07-19 10:54:21 +03:00
2026-07-19 19:21:44 +03:00
2026-07-21 11:52:34 +03:00
2026-07-20 07:53:34 +03:00
2026-07-22 10:05:40 +03:00
2026-07-21 06:35:43 +03:00
2026-07-21 06:35:43 +03:00
2026-07-21 06:35:43 +03:00
2026-07-22 14:24:32 +03:00
2026-07-23 13:54:09 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-24 20:27:46 +03:00
2026-07-27 16:15:17 +03:00
2026-07-24 21:26:37 +03:00
2026-07-24 22:33:09 +03:00
2026-07-24 22:38:32 +03:00
2026-07-24 22:38:32 +03:00
2026-07-24 22:46:03 +03:00
2026-07-25 00:25:01 +03:00
2026-07-25 11:44:30 +03:00
2026-07-26 00:43:26 +03:00
2026-07-26 00:43:26 +03:00
2026-07-26 11:35:31 +03:00
2026-07-26 11:49:17 +03:00
2026-07-26 21:13:20 +03:00
2026-07-26 21:13:20 +03:00
2026-07-26 21:13:20 +03:00
2026-07-26 23:41:48 +03:00
2026-07-27 00:21:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 16:15:17 +03:00
2026-07-27 18:41:33 +03:00
2026-07-28 15:07:53 +03:00
2026-07-27 15:55:16 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-27 15:55:16 +03:00
2026-07-28 11:42:37 +03:00
2026-07-27 15:55:16 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-27 17:13:02 +03:00
2026-07-27 19:36:03 +03:00
2026-07-27 19:36:03 +03:00
2026-07-28 05:37:56 +03:00
2026-07-29 06:26:07 +03:00
2026-07-28 08:49:01 +03:00
2026-07-28 11:29:23 +03:00
2026-07-28 14:02:56 +03:00
2026-07-28 14:02:56 +03:00
2026-07-28 15:07:53 +03:00
2026-07-29 06:26:07 +03:00
2026-07-28 09:08:03 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-25 23:20:51 +03:00
2026-07-28 12:28:20 +03:00
2026-07-26 14:38:21 +03:00
2026-07-28 14:37:43 +03:00
2026-07-28 15:07:20 +03:00
2026-07-28 15:07:20 +03:00
2026-07-28 15:07:20 +03:00
2026-07-28 19:28:31 +03:00
2026-07-28 20:10:18 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 11:42:37 +03:00
2026-07-28 13:56:14 +03:00
2026-07-27 20:17:16 +03:00
2026-07-31 08:52:14 +03:00
2026-07-31 08:52:14 +03:00
2026-07-28 11:42:37 +03:00
2026-08-01 03:23:36 +03:00
2026-07-28 11:42:37 +03:00
2026-08-01 03:23:36 +03:00
2026-07-28 11:42:37 +03:00
2026-07-31 10:45:10 +03:00
2026-08-01 11:42:46 +03:00
2026-07-28 15:20:13 +03:00
2026-08-01 12:05:04 +03:00
2026-07-28 15:46:53 +03:00
2026-07-28 20:28:00 +03:00
2026-07-29 07:37:01 +03:00
2026-07-29 08:34:02 +03:00
2026-07-29 09:44:42 +03:00
2026-07-29 11:30:41 +03:00
2026-07-29 15:25:37 +03:00
2026-07-29 17:30:03 +03:00
2026-07-30 07:47:02 +03:00
2026-07-30 11:24:35 +03:00
2026-07-31 06:04:56 +03:00
2026-07-31 06:04:56 +03:00
2026-07-31 16:03:35 +03:00
2026-08-01 14:20:31 +03:00
2026-08-02 13:41:26 +03:00
2026-08-02 22:15:46 +03:00
2026-08-02 16:16:54 +03:00
2026-08-03 12:31:21 +03:00
2026-08-04 12:25:09 +03:00
2026-08-05 11:01:19 +03:00
2026-08-05 13:42:34 +03:00
2026-08-05 20:35:21 +03:00
2026-08-06 00:47:47 +03:00
2026-08-06 18:33:35 +03:00
2026-08-07 17:24:58 +03:00
2026-08-08 18:36:51 +03:00