bcbbb25b09
Замечание владельца: два рекламных экрана выглядят как сделанные разными людьми.
Телеграм был простынёй на одной странице — панель авто-рекламы поперёк экрана,
под ней форма, под ней список строчками. Теперь каркас тот же, что у Яндекса.
Что сделано:
- вкладки «Мои кампании» / «Новая реклама» / «Авто-реклама»; экран открывается
на своих кампаниях и сам возвращает к ним после запуска — как у Яндекса;
- панель авто-рекламы уехала в свою вкладку и больше не мешает читать форму;
- карточка денег сверху в яндексовом виде, сумма по-человечески («5 000 ₽»);
- кампании карточками: цветной ярлык со значком, номер, кандидаты, лимит, дата;
пустой список зовёт завести первую рекламу кнопкой.
🔴 Карточка денег — ОТДЕЛЬНЫЙ компонент, а не яндексовая шапка кошелька.
Экраны берут деньги из разных мест: Яндекс — из ad_wallets, телеграм — из общего
баланса тенанта (решение владельца, коммит 6f469fb1). Вставить сюда AdWalletHeader
значило бы показать одни деньги, а списать другие.
🔴 Слова «Заморожено» на телеграм-карточке нет намеренно: сервер отдаёт заморозку
жёстким нулём, и вечный ноль клиент прочитает как «деньги не резервируются». Это
враньё того же сорта, что и зелёное «Крутится» при нуле показов (замечание З-6).
На это стоит отдельный тест.
Цвета ярлыков не переписаны, а сверяются с живым campaignStatusMeta Яндекса;
подпись tgStatusMeta берёт из той же таблицы TG_STATUS_LABELS — второй копии нет.
Тесты: +2 файла (telegram-karkas, telegram-balance-header), +26 тестов.
Поправлено 15 прежних — все про переезд формы во вкладку. Один из них
(«на Тексте объявления подсказки НЕТ») после переезда зеленел по ложной причине:
подсказки «нет» и у поля, которого нет вовсе — добавлена проверка, что поле есть.
Замер: 239 файлов экранов, 1813 тестов, 0 падений (было 237/1787); ESLint 0;
типы — те же 7 чужих ошибок, ни одной своей. PHP не трогали.
Пачка 4б (мастер шагов + живой счётчик охвата) НЕ делалась: у телеграма нет
серверной ручки оценки, охват возвращает только POST /campaigns, а она создаёт
черновик в базе. Нужна новая ручка — это работа с сервером.
На боевой НЕ выкачено. Глазами не принято — приёмка в пачке 5.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>