# Хэндофф: приёмка liderra.ru через «живой эфир» (отчёт по шагам с живыми скриншотами)

**Дата:** 20.06.2026. **Кодовая фраза стены:** «роутер-наставник» (на этой сессии стена СНЯТА).
**Статус одной строкой:** формат отчёта **согласован и обкатан реальным локальным прогоном** (13 карточек с живыми скриншотами портала). Дальше — раскатать формат на все пункты списка; прод-only части — на живой боевой прогон.

---

## 0. Что согласовано с владельцем (главное — не переспрашивать)
- Владелец **НЕ программист** → язык отчёта **простой, человеческий, без SQL/кода/жаргона**. Технику держим «под капотом».
- Отчёт = не слово «проверил», а **`было → ожидали → стало`** на каждый шаг.
- **Что видно на экране — обязательно 📸 скриншот** (живой портал). Что внутри (раздача, списание) — **💡 объяснение простыми словами**, без скриншота.
- Показ — **живой эфир**: карточки прилетают по ходу, страница сама обновляется; владелец может **⏸ паузить / ▶ продолжать**, отвлекаться.
- Прогон — на **локальном портале** (имитация), прод НЕ трогаем. Что нельзя локально (реальный поставщик crm.bp-gr.ru, нагрузка на боевом железе, плашка impersonation, уборка на проде) — карточка-заметка **«только на живом прод-прогоне»**.
- Порядок «было плоско» → исправлено: показываем **все 7 клиентов**, при инъекции реально меняются разделы **Сделки** и **Баланс/Биллинг**.

## 1. Что собрано (артефакты)
**Живой эфир — папка `live-demo/` (мини-сервер `php -S 0.0.0.0:8899` уже работал; открывать `http://localhost:8899/efir.html`):**
- `efir.html` — страница-эфир: сама опрашивает `steps/count.txt` и рисует карточки `steps/NNNN.json`; кнопки **▶ Дальше / ⏸ Пауза** (пульт). Бэйджи: зелёный ✅ СОШЛОСЬ / красный 🔴 НЕ СОШЛОСЬ / синий ℹ️ на прод-прогоне (status: `ok`|`fail`|`note`).
- `control.php` — пульт: `?set=play|pause` пишет `steps/control.txt`. **Баг кнопки исправлен** (слала `?set=play?t=…` → чинено на `&t=`).
- `steps/NNNN.json` — карточки шагов (формат ниже). `steps/count.txt` — сколько шагов. `steps/control.txt` — `play`/`pause`.
- `live-demo/img/*.png` — живые скриншоты (используются эфиром, НЕ удалять).
- `rep.html` — статичный образец одной карточки PR1 (можно показать отдельно).
- (старое) `player.html`, `proof.html` — прежние прототипы «телевизора», superseded эфиром.

**Формат карточки `steps/NNNN.json`:**
```json
{
  "punkt": "Группа (заголовок секции в эфире)",
  "title": "Заголовок шага",
  "status": "ok | fail | note",
  "did": "Что я сделал — простыми словами",
  "rows": [{"what":"...","was":"...","exp":"ожидали...","got":"стало...","proof":"shot|text"}],
  "inside": "💡 Что внутри портала простыми словами (без жаргона)",
  "shots": [{"cap":"📸 подпись","img":"img/файл.png"}]
}
```

**Планы/своды (нормативка прогона):**
- Свод всех проверок (23+3 новые фичи=26 типов, с колонкой «видно глазами») — `docs/superpowers/specs/2026-06-20-acceptance-imitation-checks-table.md` (сверен с текущим кодом 20.06; найдены G6 API, G7-A Помощь, G7-B impersonation — добавлены).
- Пошаговый план + правило отчёта (ФОРМАТ ЗАФИКСИРОВАН) — `docs/superpowers/runbooks/2026-06-20-acceptance-stepbystep-plans.md` (готов PR1 целиком, дальше по тому же формату).
- Ранбуки исполнения R0–R5+R3b — `docs/superpowers/runbooks/2026-06-18-acceptance-r*.md`.
- Карта логики прода — `docs/superpowers/specs/2026-06-18-prod-logic-map.md`. Хартия — `2026-06-18-acceptance-test-charter.md`.

## 2. Что РЕАЛЬНО прогнали локально (13 карточек в эфире, ✅)
1–2. Онбординг (самозапись → код → кабинет открыт, **300 ₽**). 3. Завели **7 клиентов** (по 100 000 ₽) + влили **15 заявок** → раздача **45** по всем 7 (CAP=3, лимит цел). 4. **Сделки** появились (📸 5 сделок). 5. **Баланс** упал 100 000→**97 500** (📸), деньги **до копейки** (5×500=2500). 6. **Изоляция** (второй клиент видит свои 10; чужая сделка закрыта 404). 7. **Помощь** (заявка отправлена). 8. **API-ключ** `lpkapi_…` (создан, по ключу только свои 10 сделок, без ключа отказ).
9–12. Заметки **«на прод-прогоне»**: impersonation-плашка, заказ у поставщика, нагрузка, уборка. 13. **Итог**.

## 3. Локальный портал — факты для следующей сессии
- Запущен на **`http://localhost:8000`** (Laravel 13.15, фронт Vue/Vuetify собран). Postgres 5432 + Redis 6379 подняты. APP_ENV=local.
- **Завести стенд:** `cd app && php artisan imitation:seed --clients=7 --leads=15` — создаёт N клиентов (баланс 100 000 ₽), проект Москва, вливает N заявок через настоящий движок (Сделки+списания появляются). Печатает логин первого: `<email> / password`. Команда **local-only**.
- **Тест-клиенты этой сессии** (пароль у всех `password`): anton.muravev@example.net (id4, 5 сделок), sukin.varvara@example.org (id5, 10 сделок) и др. id6–10. Онбординг-клиент: report-demo-0620@example.org / `Password123!` (300 ₽).
- **Вход через браузер (Playwright):** открыть `localhost:8000`, затем в странице fetch `POST /api/auth/login {email,password}` (XSRF берётся из cookie, заголовок `X-XSRF-TOKEN`). Регистрация: `POST /api/auth/register {email,password,captcha_token,accept_offer:true,accept_pdn:true}` → на local в ответе `_dev_plain_code`; затем `POST /api/auth/confirm-email {email,code}`. Капча на local — Null (пропускает).
- **Разделы для скриншотов:** `/dashboard` (баланс), `/deals` (Сделки), `/billing` (кошелёк+лента списаний), `/help` (Помощь), `/settings` → вкладка «API и Webhook».
- Тариф на local — **500 ₽/лид** (T1).

## 4. Как ПРОДОЛЖИТЬ прогон в эфир (механика автопродолжения)
- Прогон гонится **батчами** через самопланирование `ScheduleWakeup` (~90с между батчами). Каждый wake: читаем `steps/control.txt`; `pause` → ждём (reschedule 200с); `play` → следующий батч + новые карточки + `count.txt++`.
- Где остановились — смотреть по `live-demo/steps/` (сейчас 13 карточек, прогон образца завершён).
- **Дальше по плану:** либо углубить отдельные пункты (например все 7 кабинетов реальными снимками, каскад региона, тариф-ступень, заморозка, отчёты, импорт), либо готовить **живой боевой прогон** (прод-only части) — по явному «делаем прод-прогон».

## 5. Рамки безопасности (жёстко)
Прод НЕ трогать; lkomega/tenant 2 не касаться; БД read-only кроме явного добра; коммит — спрашивать; реальный поставщик/нагрузку/уборку — только на согласованном боевом прогоне с чисткой до 21:00.

---

## 6. ГОТОВЫЙ СТАРТОВЫЙ ПРОМТ для следующей сессии (вставить как есть)

> Продолжаем приёмку боевого liderra.ru через «живой эфир» — отчёт по шагам с живыми скриншотами. Кодовая фраза стены: «роутер-наставник».
>
> **Прочитай сначала:** этот хэндофф `docs/superpowers/specs/2026-06-20-acceptance-efir-handoff.md` (там всё — формат, файлы, что сделано, факты локального портала); затем свод проверок `docs/superpowers/specs/2026-06-20-acceptance-imitation-checks-table.md` и план `docs/superpowers/runbooks/2026-06-20-acceptance-stepbystep-plans.md`.
>
> **Контекст:** формат отчёта согласован и обкатан реальным прогоном (13 карточек в `live-demo/efir.html`). Каждый шаг = `было → ожидали → стало`, простым человеческим языком (я НЕ программист — без SQL/кода/жаргона); что видно на экране — обязательно живой 📸 скриншот, что внутри — 💡 простыми словами. Прогон на локальном портале `localhost:8000` (прод НЕ трогать); прод-only пункты — заметкой «на живой прод-прогон».
>
> **Подними эфир:** в `live-demo/` мини-сервер `php -S 0.0.0.0:8899`, открой `http://localhost:8899/efir.html` (кнопки ▶/⏸ — пульт). Локальный портал должен работать на `:8000` (если нет — `cd app && php artisan serve`; стенд — `php artisan imitation:seed --clients=7 --leads=15`).
>
> **Что делать:** [ВЫБОР ВЛАДЕЛЬЦА — впишет при старте] либо (а) углубить отдельные пункты живыми скриншотами в эфир (каскад региона, тариф-ступень, заморозка, отчёты, импорт, все 7 кабинетов), либо (б) готовить и проводить живой БОЕВОЙ прогон прод-only частей (поставщик, нагрузка, impersonation-плашка) — только по явному «делаем прод-прогон».
>
> Карточки роняй в `live-demo/steps/NNNN.json` (формат — в хэндоффе §1), увеличивай `steps/count.txt`, скриншоты в `live-demo/img/`. Автопродолжение/паузу — через `ScheduleWakeup` + `steps/control.txt` (см. хэндофф §4). Коммит/выкат — спрашивать.
