Files
portal/app/resources/js/components
Дмитрий bcbbb25b09 feat(телеграм-реклама): пачка 4а — единый каркас экрана: вкладки, карточка денег, кампании карточками
Замечание владельца: два рекламных экрана выглядят как сделанные разными людьми.
Телеграм был простынёй на одной странице — панель авто-рекламы поперёк экрана,
под ней форма, под ней список строчками. Теперь каркас тот же, что у Яндекса.

Что сделано:
- вкладки «Мои кампании» / «Новая реклама» / «Авто-реклама»; экран открывается
  на своих кампаниях и сам возвращает к ним после запуска — как у Яндекса;
- панель авто-рекламы уехала в свою вкладку и больше не мешает читать форму;
- карточка денег сверху в яндексовом виде, сумма по-человечески («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>
2026-08-02 17:05:02 +03:00
..
@
2026-07-12 12:56:22 +03:00
@
2026-07-12 12:56:22 +03:00
@
2026-07-12 12:56:22 +03:00
@
2026-07-12 12:56:22 +03:00
@
2026-07-12 12:56:22 +03:00