Halo
Инструкция
← На главную Открыть консоль

Halo — инструкция пользователя

AI-аналитика рекламы Wildberries с учётом органики. Считаем halo, iROAS и прогноз падения объёма при отключении рекламы. Ежедневный мониторинг с AI-советами.

Коротко: система смотрит вашу рекламу WB через официальный API, считает KPI (CPO, ДРР, CTR, CR), отделяет рекламные заказы от органических, оценивает halo-эффект и выдаёт конкретный план: что снизить, что усилить, что отключить.

1. С чего начать

  1. Откройте alla.ignore.pro и нажмите «Войти».
  2. Введите логин и пароль, который выдал администратор. Если вы admin — стартовая пара admin / admin, смените пароль сразу.
  3. Откройте вкладку ⚙️ Настройки (видна только администратору) и задайте:
    • WB API token — кабинет WB → Настройки → Доступ к API. Нужен скоуп «Продвижение», для halo дополнительно «Аналитика».
    • DeepSeek API key — для AI-анализа (берёте у администратора).
    • Пороги rule-engine: целевой CPO, минимум кликов, минимум расхода и т. д.
  4. Нажмите Сохранить. Все остальные пользователи (роль user / manager) ключи не вводят — токены системные.
Права токена WB. Read-only хватает для анализа. Запись пока не используется (автоприменение рекомендаций отключено — все правки в кабинете WB вы делаете руками).

2. Запустить анализ

Вкладка 📊 Анализ, форма «Запустить анализ»:

ПолеЧто вводить
Артикул (nm_id)NM ID товара. Система сама найдёт все активные рекламные кампании этого артикула.
Период (дней)1–31. По умолчанию 14 — оптимум для статистической значимости и реакции на свежие изменения.
Сравнить с органикойВключит расчёт halo-эффекта (uplift, iROAS, true CPO, прогноз). Требует scope «Аналитика» у WB-токена.

Нажмите «Запустить». Run обычно 10–60 сек, при rate-limit от WB до 1–3 минут. Прогресс виден в правой колонке: лог шагов и статус.

3. Что показывает дашборд

KPI и halo-метрики

МетрикаЧто значит
ordersЗаказы, пришедшие через рекламу за период.
cpoСтоимость одного заказа из РК. Цель — ниже целевого CPO из настроек.
drr_ad_onlyДРР по рекламе (расход / рекламная выручка).
drr_with_organicДРР с учётом органики — реальный показатель эффективности магазина.
uplift_pctНа сколько % реклама поднимает органические заказы. >10% — реклама помогает органике (halo-эффект).
halo_share_pctДоля «дополнительной органики», созданной рекламой, в общем объёме заказов.
iroasIncremental ROAS — отдача с рубля рекламы с учётом halo. ≥1 — реклама окупается, ≥1.5 — масштабируйте.
true_cpo_with_haloНастоящий CPO: расход / (рекламные заказы + halo-органика).
forecast_drop_pct_if_offПрогноз: на сколько % упадёт общий объём заказов, если завтра отключить рекламу.

Сравнение с органикой

Четыре графика:

Рекомендации

Таблица с типизированными действиями:

ТипКогда
add_minusДобавить минус-фразы — слив бюджета на нерелевантных запросах.
decrease_bidСнизить ставку — дорогие клики без конверсии.
increase_bidПоднять ставку — высокая конверсия, недокрутка трафика.
scale_for_haloМасштабировать (iROAS ≥ 1.5) — реклама усиливает органику, давайте больше.
keep_supportiveОставить как поддержку органики (uplift ≥ 10%, iROAS ≥ 1) — отключение даст падение объёма.
observeНаблюдать — мало данных для уверенного решения.
pause_testПоставить на тест-паузу — проверить incrementality.

XLSX и Telegram

«Скачать XLSX» — отчёт на 7 листов (KPI, кластеры, минус-фразы, дни, рекомендации, лог, мета). «Telegram-сводка» — готовый текст для отправки в чат.

4. Halo и iROAS — что это

Halo-эффект — реклама не только приносит свои заказы, но и поднимает органические продажи (бренд становится виднее). iROAS (incremental ROAS) — окупаемость рекламы с учётом этого подъёма.

Как считаем baseline (органика «без рекламы»):

  1. quiet_days — берём дни, где расход меньше 5% среднего, считаем по ним среднюю органику. Confidence high при ≥5 таких днях.
  2. regression — OLS organic ~ ad_spend на активных днях. a — это baseline. Confidence medium.
  3. halo_constant — отраслевой fallback 0.45 (Pattern.com / Fospha). Confidence low.
Источники методики: Pattern Brand Halo, Pacvue iROAS, Triple Whale Incrementality.

5. Мониторинг кампаний

После запуска анализа нажмите 🎯 В мониторинг — открывается модалка с целевыми метриками (предзаполнены из proposed_targets).

Каждый день в 06:10 МСК система автоматически снимает срез по всем подписанным кампаниям и считает прогресс. Цвета на вкладке 🎯 Мониторинг:

В карточке мониторинга:

6. Настройки

Вкладка ⚙️ Настройки доступна только роли admin:

ПолеНазначение
WB TokenBearer-токен Wildberries Promotion API + Seller Analytics.
DeepSeek TokenAPI-ключ DeepSeek для AI-анализа и AI-чата.
Целевой CPO ₽Цель по стоимости заказа. Используется правилами для определения «дорого».
Мин. кликов для решенияМинимум кликов, чтобы статистика считалась значимой.
Мин. расход для решения ₽Минимальный потраченный бюджет для применения правил.
Макс. расход без заказов ₽Порог «слил бюджет без конверсии».
Мин. заказов для масштабированияМинимум заказов, чтобы рекомендовать «увеличить ставку».
Шаг ставки ₽На сколько копеек/рублей менять ставку за раз.

Роли:

7. AI-чат и память агента

Кнопка 💬 AI-чат открывает диалог. Агент видит:

Можно спросить: «Где недокручиваю?», «Какие кластеры на минус?», «Что применить первым?», «Дай сводку по магазину».

Память агента

Три способа добавить заметку:

  1. Кнопка 💬 на рекомендации — комментарий привязывается к конкретной рекомендации.
  2. 🧠 Память AI в шапке — модалка с полным содержимым, можно править.
  3. Типы заметок: feedback (к рекомендации), rule (общее правило), preference (предпочтение).

8. Частые проблемы

СимптомПричина и решение
WB API 429Rate-limit WB. Подождите 1–3 мин и повторите. Система сама делает retry с backoff.
WB API 401Невалидный токен или отсутствует scope «Продвижение». Перевыпустите токен в WB.
halo недоступенУ токена нет scope «Аналитика» или мало данных (нужно ≥5 дней). Анализ продолжается без halo.
«Мало данных»За период не было кликов/заказов. Увеличьте период или проверьте активность кампании в кабинете WB.
iROAS = 0 или N/AНет органических заказов в периоде или baseline = 0. Чаще всего — слишком короткий период.
«Доступ только админу» в НастройкахВы залогинены как user/manager. Логин под admin — для управления ключами.

9. Где живут ваши данные

10. История версий

v0.38 — scroll-визуализация лендинга: progress, parallax, sticky-storytelling NEW

2026-05-03
  • Главная теперь «оживает» при скролле. Ранее анимации лендинга отыгрывались сразу при загрузке через animation-delay — пользователь видел уже отыгранный кадр. Теперь все ключевые блоки запускаются при появлении в viewport через IntersectionObserver, как на сайтах Linear / Stripe / Vercel.
  • Тонкая градиентная полоса прогресса по верху страницы — показывает, сколько уже прокручено (scaleX через requestAnimationFrame, без polling).
  • Параллакс-орбы за hero: три полупрозрачных blob'а движутся с разной скоростью при скролле, давая глубину фону. В светлой теме — mix-blend-mode: multiply.
  • Новая секция «Три слоя — один ответ» между halo-explainer'ом и features: sticky-сторителлинг с тремя шагами («Снимаем три ряда» → «Считаем halo-эффект» → «Прогноз отключения»). Слева sticky-аннотация (заголовок + счётчик «ШАГ 02 / 03» + полоска прогресса), справа карточки с живой визуализацией (бары трёх потоков, концентрические halo-кольца, лесенка прогноза падения).
  • Count-up в hero-stats: числа +18% и −22% теперь анимированно «накручиваются» при появлении блока в viewport (используем уже подключённую countup.js).
  • SVG-линии в feature-lg рисуются stroke-dashoffset-анимацией при попадании в viewport (класс .svg-draw).
  • Подсказка скролла под hero — мини-полоса с пульсирующим вниз градиентом (как на Apple).
  • Полное уважение к prefers-reduced-motion: при включённой настройке системы все scroll-анимации, орбы и progress-bar отключаются — контент остаётся доступным мгновенно.
  • Тема не тронута — переключатель тёмная⇄светлая (v0.36) продолжает работать; новые scroll-блоки имеют отдельные правила для :root[data-theme="light"].
  • Без новых зависимостей: используем уже подключённые countup.js и lucide. Размер index.html: 250 KB → 276 KB (+10%, ~270 строк CSS + ~150 строк JS + новая HTML-секция).

v0.37 — научное обоснование рекомендаций (evidence-refs)

2026-04-28
  • Под каждой AI-рекомендацией — кнопка «🔍 Почему так?»: раскрывает блок с 1–3 ссылками на международные маркетинговые исследования (REF-1…REF-5). В каждой ссылке — название принципа, авторы/организация/год, и объяснение применения именно к ЭТОЙ рекомендации с цифрами из текущего анализа. Это для руководителей маркетинга, которые хотят видеть научное основание, а не «селлеры так говорят».
  • Корпус принципов в system-prompt DeepSeek (alla-backend:0.36):
    • REF-1: Каннибализация бренд-поиска — Chan & Lewis, Google, 2014. На брендовых запросах 89% ad-кликов уходят в органику при паузе.
    • REF-2: 60/40 rule — Binet & Field, IPA, 2013. 60% бюджета на brand-building даёт ~60% полной ROI через 6+ месяцев.
    • REF-3: ESOV → SOM — Jones / Binet, IPA Datamine. Каждые 10 п.п. Excess Share of Voice ≈ +0.5 п.п. market share/год.
    • REF-4: Lift testing > MTA — Nielsen MMM 2019, Meta Conversion Lift. Multi-touch attribution систематически недооценивает upper-funnel.
    • REF-5: Diminishing returns — Hanssens, MIT Sloan. Удвоение бюджета даёт +30–60% заказов, не +100%.
  • Backend: SYSTEM_PROMPT_BASE расширен блоком «НАУЧНАЯ БАЗА», USER_PROMPT_TEMPLATE требует обязательное поле evidence_refs в каждой рекомендации (массив 1–3 объектов с ref_id, principle, source, takeaway). Контейнер пересобран: alla-backend:0.36, старый сохранён как alla-backend-prev-v0.31 для быстрого rollback.
  • Frontend: рендер evidence_refs через нативный <details>/<summary> (без JS-обработчиков), pill-кнопка «Почему так?» с lucide-иконкой search, раскрытие — карточки с magenta border-left и REF-pill в accent-grad. Demo-данные тоже содержат evidence_refs — фичу можно посмотреть без реального anaлиза.

v0.36 — Halo рестайлинг, demo-режим, mobile-first, theme-toggle fix

2026-04-28
  • Бренд переименован: «StreetLite» → «Halo». Сервис называется Halo (концепция halo-эффекта рекламы). «Street Lite» — название одного конкретного клиентского кабинета. На лендинге title/brand/login overlay/topbar показывают Halo.
  • Утечки статуса в публичном виде убраны: hero-badge «WB Promotion API подключён» → «halo-эффект на ваших данных» (не утверждает что у конкретного посетителя есть подключение).
  • Halo-explainer секция на лендинге между hero и features: pill «✨ Что такое halo-эффект», заголовок «Реклама работает не только там, куда показывает», объяснение термина и цитата на русском по исследованию Леса Бине и Питера Филда «Долго и коротко» (The Long and Short of It, IPA, 2013).
  • Demo-режим: кнопка «⏵ Посмотреть на демо-данных» в hero лендинга → дашборд с 48 синтетическими кампаниями, 9 AI-runs, 3 мониторами, реалистичными insights и evidence_refs. Сверху — фиолетовый banner «Демо-режим — данные синтетические» + кнопка выхода. Никаких API-вызовов в демо-режиме.
  • Brand-logo кликабельный: на лендинге — scroll к верху, в app-topbar — переход на главную (switchTab('home')) с cursor: pointer и tooltip «На главную».
  • Theme-toggle pill switch в app-topbar: был старый emoji-only ☀️ в кнопке 32×32 — заменён на полный pill switch с двумя SVG-иконками + thumb-ползунок. Также исправлена несуществующая CSS-переменная --t-base--t 200ms.
  • Mobile-first CSS: hero на ≤720px стек в одну колонку, KPI bento → 1 колонка, AI insights → 1 колонка. Топбар: горизонтальный scroll по табам, скрыт admin-badge. Модалки full-width на мобилке, ⌘K full-screen. Tap-targets ≥ 40px (CTA ≥ 44px). Отключены hover-transforms на touch.
  • Доп. CSS-варианты кнопок: .btn.ghost-accent (outline-фиолетовый), .btn.subtle (нейтральный) — для иерархии CTA в hero.

v0.35 — 3D wow: Mini Halo Crystal, 3D card tilt, cursor trail NEW

2026-04-28
  • Mini Halo Crystal — крошечная three.js сцена (150×150) парит в правом верхнем углу hero-strip dashboard. Фасеточный икосаэдр-кристалл (magenta+indigo emissive, metalness 0.6, flat shading), halo-shell sphere, орбитальный спутник + кольцо из 60 частиц. Lerped parallax от движения мыши. Drop-shadow magenta glow под глобусом — выглядит как левитирующий объект.
  • 3D card tilt — все карточки .spotlight (AI Insights, Health Score, KPI bento × 4, charts × 2) имеют CSS perspective: 900px и при hover плавно наклоняются rotateX/rotateY ±6° следуя за курсором. Эффект как у Apple Vision Pro / Linear cards. Skip на touch-устройствах и при prefers-reduced-motion.
  • Magenta cursor trail — за курсором летит шлейф из светящихся частиц (radial-gradient + box-shadow accent-glow + mix-blend-mode: screen). Throttle 28ms (≈35 dot/s), random size jitter 6-11px, 35% частиц в indigo вместо magenta. Авто-удаление после 720ms через CSS-keyframe trailFade. Skip на input/button/⌘K-overlay (не мешает работе).
  • Hero shimmer — на .home-hero-v34::before добавлен дышащий radial-gradient за глобусом (8s ease-in-out alternate, blur 45px) — создаёт эффект «свечения вокруг летающего кристалла».
  • Адаптивность: на 1100-720px — globe уменьшается до 130×130, ниже 720px — скрывается полностью. Hero-strip overflow: visible — глобус выпирает в правый верхний угол hero (top: -78px) как левитирующий значок.
  • Все эффекты — performance-aware: respect prefers-reduced-motion, visibilitychange пауза рендера, throttle курсор-трэила, will-change: transform на tilt-cards. Не зависает даже на средних ноутах.
  • Бэкапы: *.bak.pre3dwow-20260428-210542 для index/manual.

v0.34 — топовый дашборд: Health Score, AI-инсайты, Charts, ⌘K NEW

2026-04-28
  • HERO C+A: AI Insights (3 карточки с разноцветными tone — критично/внимание/всё ровно/AI-вывод/рекомендация) + Health Score radial (SVG ring 168×168, формула active*40 + monitoring*30 + ai*30 − штраф за упавшие интеграции, анимация stroke-dashoffset 1.1s + animated counter). Hero greeting strip с приветствием по времени суток, status-chips WB API/WB Ads/StreetLiteGPT, ⌘K-кнопкой.
  • KPI bento с sparkline: 4 карточки (Активные кампании / Мониторинг / С отклонениями / Последний AI-анализ) — каждая с lucide-иконкой в цветной wrap-плашке, kpi-trend pill (+/− %), и ApexCharts area-sparkline (height 36px, smooth curve, gradient fill). 14 точек ленты — плавная синусоида от текущего значения.
  • Charts row: ApexCharts area-chart «Активность анализов · 14 дней» (real bucketing по runs.created_at, smooth, тёмный/светлый theme) + donut «Портфель кампаний» (active/paused/archived из WB Ads, с центральной total-меткой).
  • ⌘K Command Palette (Linear-style): fuzzy-поиск по навигации, действиям, кампаниям. Subsequence matching, ↑↓/Enter/Esc, группы, кастом-keybinding (⌘K / Ctrl+K). 30 кампаний в выдаче — клик открывает «Новый анализ» с предзаполнением.
  • Magnetic buttons: primary CTA «Запустить анализ», ⌘K, Открыть анализ — слегка тянутся за курсором (translate(x*0.18, y*0.18) + inner *0.10), легкий «премиум»-эффект как у Linear/Vercel.
  • Hover spotlight: на карточках с классом .spotlight — radial-gradient следует за курсором (CSS-vars --mx/--my), эффект на AI-инсайтах, KPI bento, charts, hero strip.
  • Live pulse (.live-dot): пульсирующая точка на «AI-инсайты на сегодня» (зелёная/жёлтая/красная по worst tone в карточках), 1.8s ease-out, double-pulse delay.
  • Toast система (готова, контейнер `#toaster` снизу-справа): 4 уровня (success/warn/error/info), lucide-иконка, t-bar progress, авто-закрытие через 3.8s, manual close. window.toast({title, desc, level}).
  • Lucide-иконки везде: подменены ВСЕ эмодзи в субтабах, h2-заголовках, ai-avatar, agent-avatar, кнопках. Глобальный tickLucide() вызывается на DOMContentLoaded, enterApp, switchTab, после каждого rerender — иконки появляются мгновенно.
  • Tippy.js премиум-тултипы: animation: scale-subtle, theme-aware (light/dark), delay 300ms — на всех элементах с data-tippy-content. Например: ⌘K-кнопка показывает «Командная палитра (⌘K)».
  • View Transitions API: cross-fade при переключении tab-pane (нативно, без JS), 0.22s out + 0.26s in с translateY(-4px / +6px).
  • Empty states: вместо пустых charts — карточки с иконкой и подсказкой (Подключи токен / Запусти первый анализ).
  • Console.html подтянут: lucide подключён, эмодзи в табах (📊→flask-conical, 🎯→target, 📖→book-open, 🧠→brain) заменены на SVG-иконки. Tickle-функция в enterApp/switchTab.
  • Чистый JS-runtime: убрана версия @number-flow/element@0.5.5 (404 на CDN, не использовалась), ?.-защита для workspaceSelect (предупреждает обрыв скрипта на странице без topbar).
  • Бэкапы: *.bak.predeploy-v034final-20260428-204312 для index/console/manual в /root/alla/site/.

v0.33 — заметный переключатель темы (pill switch) NEW

2026-04-28
  • Pill-switch вместо emoji-кнопки — раньше в шапке был кружок ☀️, который на устройствах без emoji-шрифта рендерился пустым tofu-квадратиком. Заменили на горизонтальный switch 60×30 с двумя inline-SVG (солнце ↔ луна) и анимированным ползунком .tt-thumb, переезжающим на 30px по :root[data-theme="light"].
  • Доступность: aria-pressed синхронизируется с состоянием темы, :focus-visible с outline в акцент-цвете, цветовые состояния иконок (активная — насыщенная, неактивная — приглушённая).
  • Применено на трёх страницах: index.html (две инстанции — landing-nav и app-topbar), console.html (оверлей логина и app-topbar), manual.html (шапка). Сама палитра :root[data-theme="light"] уже была — добавили только видимый control.
  • Бэкапы: *.bak.themetoggle-20260428-* в /root/alla/site/.

v0.32 — лендинг с 3D «Halo Globe» и bento-карточками

2026-04-28
  • 3D-визуал на главной — three.js (CDN, ~150 КБ gzip): центральное фасеточное ядро + два орбитальных кольца с частицами (реклама ↔ органика). Концепция буквально показывает halo-эффект, под капотом которого живёт весь продукт. Параллакс на движение мыши, ленивый init после DOMContentLoaded, mix-blend-mode: screen для свечения поверх aurora.
  • Hero v2 — pre-headline pill «Live AI Engine · WB Promotion API подключён» с pulse-dot, акцент-слово «в вакууме» с gradient-text + drop-shadow glow, статистика-полоса (+18% halo · 06:10 МСК · −22% без рекламы) на glassmorphism-карточке.
  • Bento-grid features — асимметричная сетка 6 колонок: большая карточка с inline-SVG графиком «реклама vs органика» (две curve-area с градиентами и легендой), широкая карточка про минус-фразы, остальные стандартного размера. На hover — gradient-border conic-эффект через mask-composite.
  • Прогрессивные fallback'и: prefers-reduced-motion: reduce → 3D отключается; небольшой viewport → opacity и mix-blend меняются; visibilitychange → пауза рендера в фоновой вкладке (экономия батареи).
  • Бэкапы: index.html.bak.pre3d-20260428 рядом.

v0.31 — крупный редизайн: aurora theme, dark/light

2026-04-28
  • Полный визуальный редизайн главной страницы (index.html) и консоли (console.html). Aurora-эффект — 3 radial-gradient + blur(60px) + GPU-анимация на ::before контейнера, без WebGL.
  • Dark/Light темы — token-driven через переопределение CSS-переменных в :root[data-theme="light"]. Дефолт — dark. Переключатель в шапке.
  • Поверхностное редактирование, глубокий эффект: заменён только <style>-блок, все class и id (.kpi.warn, .list-item.active, .b-ok и т.д.) сохранены, JS не трогался — риск регрессий минимальный.
  • Бэкапы предыдущих версий: *.bak.predesign-20260428 рядом с каждым файлом.

v0.30 — обучение агента: 💬 обратная связь, 🧠 память, чат

2026-04-26 (вечер)
  • Кнопка 💬 у каждой рекомендации. Открывает мини-форму: можно написать, как лучше поступить (например: «не decrease_bid, а только −10%», «эта минус-фраза неправильная — на ней есть конверсия»). Тип записи: feedback (поправка), rule (общее правило), preference (пожелание тона). Запись попадает в системный промпт агента — в следующих анализах он будет это учитывать.
  • 🧠 Память — кнопка в шапке. Видно все записи, которые менеджер давал агенту: контекст, тип, рекомендация, комментарий. Поиск, фильтр по типу. Можно добавить общее правило прямо отсюда.
  • Плашка «🧠 Учтено N записей» в карточке результата анализа — наглядно показывает, что агент действительно читает память.
  • Новая вкладка «💬 Чат» — диалог с агентом. Он автоматически подгружает память + сводку последних 10 анализов, поэтому можно спрашивать: «Почему ты дал decrease_bid по кампании 35208823?», «Какие правила я тебе уже задавала?», «Сравни последний анализ артикула 853965831 с предыдущим». Стрим-ответ через бэкенд-прокси (DeepSeek-ключ не уходит в браузер).
  • Связь feedback ↔ рекомендация. Каждая запись из 💬 хранит run_id и индекс рекомендации — потом видно, какую именно подсказку правил менеджер.
  • Backend менять не пришлось — endpoints (/api/v1/agent-memory, /api/v1/ai-context, /api/v1/ai-chat) живут с v0.16/v0.19; в новом dashboard (с v0.24) UI был отрезан, теперь возвращён.

v0.29 — поиск кампании по ID и названию

2026-04-26 (вечер)
  • Поиск активных кампаний. В блоке «📊 Запустить новый анализ» (на главной) и в модалке «Запустить анализ» поле «Кампания» теперь — поле с автодополнением. Можно вводить ID (например 35208823) или часть имени/статуса — список фильтруется на лету. Раньше был обычный выпадающий список, в котором при 70+ активных кампаниях приходилось скроллить.
  • Под полем — подсказка с количеством активных и инструкцией («Начните вводить ID или название…»).
  • Если активных нет — поле блокируется, в подсказке «Нет активных кампаний».

v0.28 — органика по умолчанию + структурированный halo-вердикт

2026-04-26 (вечер)
  • Halo считается всегда. Чекбокс «Сравнить с органикой» убран — он только сбивал с толку. При наличии WB-токена со scope «Аналитика» backend всегда тянет nm_detail и считает baseline, uplift, iROAS, true_cpo_with_halo, прогноз падения. Кнопка «Свернуть/Развернуть» в карточке «Сравнение с органикой» оставлена для компактного просмотра.
  • 🧠 Вердикт AI по halo-эффекту — новая центральная карточка в результате анализа. Отвечает на 7 ключевых вопросов:
    1. Реклама работает только напрямую?
    2. Влияет ли реклама на органику?
    3. Растёт ли органика при работающей рекламе?
    4. Просядет ли органика при отключении?
    5. Это бустер органических продаж?
    6. Можно ли отключить?
    7. Что делать со ставкой?
    Каждый ответ — короткий код (yes/no/unclear/risky/keep/gradual_decrease/...) + развёрнутая формулировка с цифрами. Если DeepSeek забыл блок — backend дополняет детерминированно из incrementality.
  • Промпт DeepSeek усилен. Главный принцип: «реклама не оценивается в вакууме». AI обязан формулировать как живой эксперт: «Прямой CPO дорогой, но реклама даёт +X% органики — отключать нельзя», а не «CPO выше целевого».
  • AI-совет в мониторинге теперь использует halo-первый язык. Появился тип действия gradual_decrease — для случаев, когда halo держит органику и резкое отключение запрещено. Содержательные вердикты: «Реклама даёт заказы, но органика не растёт — кампания работает в вакууме», «После отключения органика упадёт почти до нуля — кампания критична для продаж».
  • Snapshot мониторинга уже включал organic + halo (с v1.1) — это просто подтверждено в ТЗ как обязательное поведение.
  • Контракт API. В POST /api/v1/wb-analysis/run поле compare_with_organic помечено как DEPRECATED — оставлено для обратной совместимости, его значение игнорируется. В GET /run/{id} добавлена схема halo_questions с 7 полями HaloAnswer.
  • Backend: alla-backend:0.28 (предыдущий — alla-backend-prev-v0.27).
  • Бэкап фронта: /srv/alla.ignore.pro/index.html.bak.<TS> (v0.27, 95 563 b).

v0.27 — анализ по артикулу со сводкой по кампаниям

2026-04-26 (вечер)
  • Запуск анализа по артикулу. В блоке «📊 Запустить новый анализ» можно выбрать «Артикул (nm_id)» — система сама пробежит по всем активным рекламным кампаниям продавца, найдёт те, в которых участвует этот артикул, и сделает агрегированную сводку. Кампании запускать вручную не нужно.
  • Per-campaign разбивка в результате. На странице запуска появилась карточка «🏷️ Артикул NNNN — найдено в K кампаниях» с таблицей: имя кампании, статус, расход, доля расхода в общем агрегате, заказы, доля заказов, CPO, CTR, ДРР. Можно кликнуть «Только эта», чтобы перезапустить анализ по одной конкретной кампании.
  • Halo считается на nm-уровне. При nm-режиме incrementality собирает baseline и uplift именно для этого артикула (через WB Seller Analytics nm-detail), а не для отдельной кампании. Получаются честные uplift, iROAS, true CPO с halo и прогноз падения при отключении — всё по сумме всех РК этого артикула.
  • Заголовок раздела результата теперь сообщает: «Артикул 12345678» вместо случайного campaign_id, режим обозначен как «по артикулу». В списке runs (на главной и в Анализе) — иконка 🏷️ для nm-запусков.
  • Контракт API. В POST /api/v1/wb-analysis/run поле nm_id описано явно: «сервер сам найдёт все активные кампании, где встречается артикул». В GET /run/{id} добавлены поля nm_id, mode и per_campaign[].
  • Backend: alla-backend:0.27 (предыдущий контейнер сохранён как alla-backend-prev-v0.22 на случай отката).
  • Бэкап фронта: /srv/alla.ignore.pro/index.html.bak.<TS> (v0.26).

v0.26 — переработка главной по UX-аудиту

2026-04-26 (день)
  • Архивные кампании больше не показываются. Раньше «80 активных» включали status 7 (завершена) и 8 (отказ). Теперь оставляем только status 9 «активна» и 11 «пауза». Счётчик «скрыто архивных» виден в карточке «🔌 Интеграции».
  • Главная — без длинной простыни. На главной теперь только 3 подвкладки: 🎯 Мониторинг · 📜 Последние анализы · ⚠️ Проблемные. Полный список перенесён в отдельный таб «📋 Все кампании» с фильтрами (поиск по id/имени, статус, сортировка по расходу/CPO/ДРР/заказам/дате анализа).
  • «Последний AI-анализ» и «Новый анализ» — разные блоки. Раньше «последний разбор» и «запустить» были склеены и выглядели как случайные карточки. Теперь два отдельных блока: «🧠 Последний AI-анализ» (имя кампании, дата, краткий вывод, статус, кнопка «Открыть») и «📊 Запустить новый анализ» (inline-форма: что анализируем → кампания/артикул → период → halo → запустить).
  • Статусы API больше не противоречат. Раньше шапка показывала «WB API · ok», а блок кампаний — «WB API недоступен». Теперь единый источник: 401 = WB API + WB Ads оба «bad», любая другая ошибка (403/429/500/network) = WB API остаётся «ok», а Ads «bad» с конкретным сообщением: «WB-токен невалиден», «Недостаточно прав», «Превышен лимит запросов WB Ads», «Ошибка на стороне WB Ads API», «Сетевая ошибка».
  • Три отдельных индикатора в шапке: WB API (учётка/токен), WB Ads (рекламный модуль с числом активных кампаний), StreetLiteGPT (DeepSeek). Раньше WB API и Ads были одним чипом — теперь падение рекламного API не «гасит» статус всего WB.
  • UX-правило: главная отвечает на три вопроса — что сейчас работает (KPI-карточки + чипы), где проблема (⚠️ Проблемные подвкладка + правый блок «Предупреждения»), что нужно сделать (правый блок «📊 Запустить новый анализ»). Ничего лишнего.
  • Бэкап предыдущей версии: /srv/alla.ignore.pro/index.html.bak.20260426-105432 (v0.24).

v0.24 — главная страница продукта (dashboard)

2026-04-26 (день, +20 мин после v0.23)
  • Вкладка «🏠 Главная» теперь стартовая. Раньше после логина пользователь сразу видел форму запуска анализа и историю — теперь сначала dashboard со всей системой целиком.
  • Статус-чипы интеграций в шапке: WB API (с количеством активных РК), StreetLiteGPT (DeepSeek), AI-агент. Зелёный/жёлтый/красный с пояснением в карточке «🔌 Интеграции».
  • Селектор кабинета (workspace) в шапке: пока один — Street Lite. Опция «+ Подключить кабинет…» ведёт в Настройки. Multi-tenant в дорожной карте на v0.30.
  • 4 KPI-карточки сверху: Подключённые кабинеты · Активных кампаний · В мониторинге (с разбивкой 🟢/🔴) · Последний AI-анализ.
  • Таблица «📋 Рекламные кампании» по ТЗ: имя, статус (4/7/8/9/11 → русские лейблы), расход, заказы, CPO, ДРР, Uplift. KPI берутся из последнего завершённого analysis_run, где встретилась эта кампания. Действия: «Анализировать», «Открыть анализ», «Мониторинг» (если уже подписана).
  • Блок «🧠 StreetLiteGPT»: статус («активен · deepseek», «rule-engine fallback»), executive summary последнего run-а, топ-3 рекомендации, кнопки «Запустить анализ» и «Настройки».
  • Блок «⚠️ Ошибки и предупреждения»: автоматически собирает failed runs и 🔴/🟡 мониторинги; если всё ок — зелёная плашка.
  • Компактные блоки: «🎯 Кампании в мониторинге» (top-6 + ссылка на полный список) и «📜 Последние анализы» (5 шт + ссылка на «Вся история»).
  • История анализов больше не главная сущность — это вспомогательный блок. Основа — dashboard со всеми сущностями ТЗ: campaigns + analysis_runs + recommendations + monitoring + integrations.

v0.23 — светлая тема, понятная инструкция, регламент changelog

2026-04-26 (день)
  • Переключатель темы 🌙/☀️ в шапке landing, консоли и инструкции. Выбор темы запоминается в localStorage (alla_theme). Графики Chart.js берут цвета из CSS-переменных, поэтому корректно перерисовываются под тему.
  • Новая страница инструкции /manual.html — десять разделов от «с чего начать» до «частые проблемы», встроенная история версий, ToC слева.
  • Ссылка «📖 Инструкция» в шапке landing, консоли и на экране входа.
  • Внутреннее правило: каждый деплой обязан обновить manual.html и эту секцию changelog. Иначе пользователи не видят, что изменилось.

v0.22 — halo / incrementality, мониторинг, console.html major

2026-04-26 (утро)
  • Halo-эффект и iROAS. Новый модуль incrementality.py: четыре метода baseline (quiet_days, regression, halo_constant, historical_off), метрики uplift, iROAS, true_cpo_with_halo, forecast_drop_pct.
  • Подсистема мониторинга. 7 endpoints под /api/v1/monitoring/*, ежедневный scheduler в 06:10 МСК, статусы 🟢/🟡/🔴, AI-совет при 🔴.
  • Новые типы рекомендаций: keep_supportive (оставить как поддержку органики), scale_for_halo (масштабировать).
  • console.html — рабочая консоль с двумя вкладками (Анализ, Мониторинг), Chart.js, drill-down карточек.
  • OpenAPI-контракт cloudcode_wb_ai_api_contract_full.yaml поднят до 1.1.0 (9 paths, 11 schemas).

v0.21 — колонка «Что сделать», органика, метка артикула в истории

2026-04-23
  • В рекомендациях появилась императивная колонка «Что сделать» («Снизить ставку с 500 до 400 коп.», «Добавить в минус: …»), отдельно «Причина» и «Эффект».
  • ДРР с органикой и подсветка аномалий через WB Seller Analytics API (/api/v2/nm-report/detail).
  • Аномалия: реклама <20% заказов артикула при общем объёме — предупреждение «возможно недокрутка ставок».
  • В истории видно «🏷 артикул 853965831 → 2 РК (35208823, …)», а не только список ID кампаний.

v0.19 — AI-ключ полностью серверный, лог на человеческом

2026-04-23
  • Поле DeepSeek-ключа убрано из UI. Ключ задаёт администратор в system-settings, в браузер не попадает.
  • AI-чат через серверный прокси.
  • Лог: «Запуск», «✅ В магазине 73 активных кампании», «📋 Карточки получены», «🏁 Готово!».

v0.18 — роль manager, иерархия прав

2026-04-23
  • Новая роль manager: всё кроме изменения системных ключей.
  • Системные ключи задаёт admin один раз. Все пользователи используют один и тот же магазин.
  • Иерархия: нельзя создать пользователя выше своей роли.

v0.17 — выпадающий список кампаний, русские пороги, инструкция

2026-04-23
  • В форме «ID кампании» — выпадающий список активных кампаний.
  • Пороги rule-engine переписаны человеческим языком (целевой CPO, минимум кликов и т. п.).
  • Кнопка «📖 Инструкция» в шапке.

v0.16 — первая рабочая версия на alla.ignore.pro

2026-04-23
  • Авторизация admin + создание пользователей.
  • Память AI (feedback-loop) в markdown.
  • Анализ по артикулу: система сама находит активные РК товара.
  • WB API адаптирован под endpoints 2025+ (beginDate/endDate для fullstats, from/to для normquery).
  • Время МСК. Демо-режим убран.

v0.14 — боевой WB API

2026-04-23
  • Починены endpoints /adv/v3/fullstats и /adv/v1/normquery/stats.
  • Активные кампании — только status=9.

v0.10 — честные ошибки

2026-04-23
  • Введён WBError и partial_success вместо молчаливого «данных нет».

v0.7–0.9 — стабильность

2026-04-23
  • Rate-limit backoff 10–80 с × 8 попыток, пауза 2.5 с перед каждым запросом WB.

v0.3 — fallback отключён

2026-04-23
  • Без DeepSeek-ключа executive summary / план / Telegram не генерируются (не подделываем AI).

v0.1 — MVP

2026-04-23
  • FastAPI + SQLite + WB-клиент (mock) + metrics + rule-engine + DeepSeek + XLSX + web UI.
  • Деплой на alla.ignore.pro через teksher-prod-nginx с SSL Let's Encrypt.