docs телеграм: оба хвоста плана закрыты — закрытие по слову и кнопка «Остановить»
План утверждал, что закрытия по слову кабинета и кнопки нет, потому что слова мы не знали. Слово узнали живьём в тот же вечер («Завершена»), и обе задачи закрыты. В документ дописано, что теперь есть, три обезвреженные мины и три мёртвых сторожа, вскрытых строгой проверкой: ключ от двойного возврата (со сломанным ключом ВСЕ денежные тесты оставались зелёными), развилка отчёта об остановке, и порядок «сначала цифры, потом закрытие» (при перестановке клиенту уходило 253,96 ₽ вместо 240,58 ₽). Сторожа: модуль телеграма 459, робот 263, экраны 63, статанализ 0. 🔴 На боевой не выкачено: нужны миграция, весь фронт и подмена рабочей копии робота — всё ждёт отдельного разрешения владельца. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -125,9 +125,32 @@ completed → [] терминальный
|
||||
**Реклама правда встала.** Робот перечитал кабинет трижды после нажатия (14:00, 15:01,
|
||||
16:01 МСК): показы застыли на **22**, расход площадки — **10,56 ₽**, ни единицы движения.
|
||||
|
||||
🔴 **Слово для законченной кампании так и не узнали — и потеряли его три раза.** Разборщик
|
||||
робота его не узнал и прислал пустоту (`status: null`); до нажатия там было `approved`.
|
||||
Ш2 на боевом не стоит, поэтому в журнал не попало ничего.
|
||||
🔴 **Слово потеряли три раза подряд.** Разборщик робота его не узнал и прислал пустоту
|
||||
(`status: null`); до нажатия там было `approved`. Ш2 на боевом не стоит, поэтому в журнал
|
||||
не попало ничего.
|
||||
|
||||
### ✅ Замер добит вечером 08.08 — оба ответа есть
|
||||
|
||||
Владелец вошёл в кабинет руками, замер прошёл (только чтение):
|
||||
|
||||
| Что | Ответ |
|
||||
|---|---|
|
||||
| Слово кабинета для законченной кампании | **«Завершена»** |
|
||||
| Слово, пока идёт остановка | **«Останавливается»** + «Это займёт до 30 минут» |
|
||||
| Баланс кабинета до / после | 4 812,51 ₽ → **4 984,35 ₽** |
|
||||
| Вернулось | **+171,84 ₽ — ровно `182,40 − 10,56`** |
|
||||
| Кнопки у завершённой строки | только «Посмотреть настройки» — запустить заново нельзя |
|
||||
|
||||
🔑 **Кабинет отдаёт неоткрученный остаток ЦЕЛИКОМ, сам, без просьбы.** Предсказание сошлось
|
||||
до копейки. Значит правило Б («встала») — про наш возврат клиенту, а не про деньги кабинета:
|
||||
их площадка уже вернула.
|
||||
|
||||
🔑 **`parseModerationStatus` не знает НИ ОДНОГО из двух слов** — он знает «отклонен»,
|
||||
«одобрен/активн/запущен», «модераци/запланирован», «черновик». Теперь есть чем его научить,
|
||||
и закрытие по слову кабинета делать уже из чего.
|
||||
|
||||
🔴 **Клиенту переплата пока НЕ возвращена:** кампания №15 на боевом всё ещё `launched`,
|
||||
задача закрытия не выкачена. Клиенту причитается `255,36 − 10,56 × 1,4` = **240,58 ₽**.
|
||||
|
||||
🔴 **Ш2 в нынешнем виде слово НЕ спасёт.** `TelegramStatsApplier` запишет «слово незнакомое
|
||||
— посмотреть глазами», но самого слова в записи не будет: `readCampaignStats` в
|
||||
@@ -145,16 +168,57 @@ completed → [] терминальный
|
||||
`bots/mts-telegram-ads/_stop-nazhat.mjs` (нажатие), `_stop-zamer-do.mjs` / `_stop-zamer-itog.mjs`
|
||||
(замеры, только чтение), снимки `_stop-do.png` / `_stop-posle.png`.
|
||||
|
||||
**Первое, что сделать следующей смене:** попросить владельца войти руками
|
||||
(`cd /c/liderra/mts-telegram-robot && node bin/login.js`), прогнать `_stop-zamer-itog.mjs` и
|
||||
получить ОБА ответа разом — вернулись ли 171,84 ₽ и каким словом кабинет зовёт законченную
|
||||
рекламу. Пока ответов нет, закрытие по слову кабинета делать не из чего.
|
||||
✅ **Оба ответа получены в тот же вечер** (владелец вошёл руками, замер прошёл только чтением):
|
||||
остаток вернулся целиком, слово кабинета — «Завершена». Дальше по ним сделаны и закрытие по
|
||||
слову, и кнопка «Остановить» — см. раздел «Что было дальше» в конце.
|
||||
|
||||
## Итог
|
||||
|
||||
Сделано: Ш1–Ш5 целиком. Кнопка «Остановить» — НЕ сделана (портальной кнопки нет; про
|
||||
кабинетную теперь знаем, что она говорит «Останавливается» и занимает до 30 минут),
|
||||
закрытие по слову кабинета — НЕ сделано (слова по-прежнему не знаем).
|
||||
Сделано: Ш1–Ш5 целиком. На момент написания кнопка «Остановить» и закрытие по слову кабинета
|
||||
сделаны НЕ были — слова мы тогда ещё не знали. Обе задачи закрыты позже в тот же день, см.
|
||||
ниже.
|
||||
|
||||
## Что было дальше — оба хвоста закрыты 08.08.2026
|
||||
|
||||
Слово кабинета узнали живьём («Завершена»), и по нему сделана отдельная работа: замысел
|
||||
[2026-08-08-telegram-knopka-ostanovit-design.md](../specs/2026-08-08-telegram-knopka-ostanovit-design.md),
|
||||
план [2026-08-08-telegram-knopka-ostanovit.md](2026-08-08-telegram-knopka-ostanovit.md).
|
||||
|
||||
**Что теперь есть:**
|
||||
|
||||
- робот знает слова «Завершена» и «Останавливается» и передаёт наверх сырой текст строки —
|
||||
следующее незнакомое слово больше не потеряется;
|
||||
- портал закрывает кампанию и возвращает переплату **по слову кабинета**, а не через трое
|
||||
суток по правилу «встала». Правила А и Б остались подстраховкой;
|
||||
- у клиента появилась кнопка **«Остановить рекламу»** с честным окном: назад пути нет,
|
||||
остановка до 30 минут, деньги вернутся когда площадка закончит;
|
||||
- робот умеет нажимать «Завершить» — в строке ИМЕННО своей кампании — и доказывает результат
|
||||
сменой слова, а не отчитывается успехом вслепую.
|
||||
|
||||
**Три мины, найденные при разведке кода и обезвреженные:**
|
||||
|
||||
1. читалка собирает текст строки вместе с подписями кнопок, а у идущей рекламы там стоит
|
||||
кнопка «Завершить» — совпадение по корню закрывало бы работающую рекламу и возвращало
|
||||
деньги за то, что крутится прямо сейчас;
|
||||
2. очередь заданий считала одинаковыми любые два задания по одной кампании — просьба
|
||||
остановить, поданная в час опроса цифр, молча терялась бы;
|
||||
3. поиск кнопки по всей странице (как в разведке) у двух клиентов сразу завершил бы чужую
|
||||
рекламу.
|
||||
|
||||
**Три мёртвых сторожа, вскрытых строгой проверкой** (код был верен, охраны не было):
|
||||
|
||||
- ключ, не дающий вернуть деньги дважды: со сломанным ключом **все** денежные тесты
|
||||
оставались зелёными;
|
||||
- развилка «отчёт об остановке → свой применитель»: отчёт мог уехать в применитель запуска;
|
||||
- порядок «сначала цифры, потом закрытие»: при перестановке клиенту уходило 253,96 ₽ вместо
|
||||
240,58 ₽.
|
||||
|
||||
Сторожа после работы: модуль телеграма **459**, робот **263**, экраны телеграма **63**,
|
||||
статанализ **0**.
|
||||
|
||||
🔴 **На боевой НЕ выкачено.** Выкат несёт миграцию (одна колонка) и весь фронт; рабочая копия
|
||||
робота на машине кода остановки ещё не знает — её подмена это тоже изменение боевого. Всё
|
||||
ждёт отдельного разрешения владельца.
|
||||
|
||||
Сторожа: ClientTg **438** зелёных (было 412), Larastan **0**, Pint чисто, экраны Телеграма
|
||||
**58** зелёных. Оба «молчаливых» сторожа (тревога по заморозке, незнакомое слово) проверены
|
||||
|
||||
Reference in New Issue
Block a user