# Хэндофф: go-live находки портала (G1–G8) — для следующей сессии

**Дата:** 18.06.2026. Кодовая фраза стены: **«роутер-наставник»**.
**Что это:** прохождение «go-live находок» портала Лидерры на ЛОКАЛКЕ (папка `app/`) перед передачей продажникам — чинить/убирать/откладывать недоделки. Источник находок — `docs/superpowers/specs/2026-06-18-prod-logic-map.md` §13.

---

## Промпт для следующей сессии (можно вставить как есть)

> Продолжаем работу над go-live находками портала Лидерры (на локалке, папка `app/`).
>
> 1. **СНАЧАЛА прочитай гайд работы под стеной:** `docs/superpowers/router-mentor-wall-GUIDE.md` — чтобы не разбиться о стену «роутер-наставник» (поток spec→plan→опечатанные шаги; всю разведку/чтение делать ДО печати плана; коммит — через терминал владельца). Кодовая фраза стены: «роутер-наставник».
> 2. **Прочитай состояние:** память `project-gfindings-cleanup` + этот файл (решения по G1–G7, что сделано) + `docs/superpowers/specs/2026-06-18-prod-logic-map.md` (логика прода).
> 3. **Сделано и закоммичено:** G4 (убран нерабочий push-канал) — `41adf00c`; G2-A (движок дайджеста новых сделок) — `f9438714`.
> 4. **Найдено G8:** фронтовый тест-раннер vitest сломан в этом окружении (backend Pest работает). Фронт-правки тестами проверить нельзя.
> 5. **Продолжай:** спроси у владельца порядок. Варианты: **G2-B** (включить дайджест по умолчанию — миграция, backend, проверяемо), **G6** (API-ключи, backend, проверяемо), **G3** (убрать напоминания — фронт, вслепую из-за G8). **G1** (самозапись) — крупная, фронт+backend.
> 6. **Проверка backend:** `composer --working-dir=app test -- <путь>`. **Коммит** — терминал владельца с `$env:LEFTHOOK="0"`. Решения владельца НЕ менять без него.

---

## Решения владельца по находкам (детально)

| # | Находка | Решение | Статус |
|---|---|---|---|
| **G1** | Самозапись клиента | ДЕЛАЕМ. Регистрация: почта, пароль, **капча**, **подтверждение почты 6-значным кодом** (переиспользовать механизм из `ImpersonationController` — генерация/хеш/TTL/лимит попыток). После регистрации можно осмотреть портал; **запуск первого проекта — только после реквизитов**. Реквизиты: **юр/ИП — по ИНН тянем** (DaData; для ИП ФИО тоже подтягивается), **физлицо — ФИО+контакты, ИНН не надо**; телефон с маской. Старт-баланс **300₽**. | TODO (крупная, фронт+backend) |
| **G2** | Письмо клиенту о новых сделках | **ДАЙДЖЕСТ** (не вебхуки): раз в 30 мин одно письмо «N новых сделок», отключаемо галочкой `new_lead.email`. | **G2-A done `f9438714`**; **G2-B TODO** |
| **G3** | Напоминания | УБРАТЬ из портала совсем | TODO (фронт) |
| **G4** | Push | УБРАТЬ из портала совсем | **done `41adf00c`** |
| **G5** | Пополнение баланса | ВИСЯК — ждёт ООО (Б-1) | отложено |
| **G6** | API-ключи | ДЕЛАЕМ эндпоинт-потребитель (read) | TODO (backend) |
| **G7** | Вход под клиентом | НЕ impersonation; вместо — почта техподдержки, клиент оставляет контакты, разбор вручную | TODO |
| — | Тарифы | Лид будет ≤65₽ (сейчас 500→250). Отдельная работа по биллингу | TODO (вне G-списка) |

## Что осталось по G2 (G2-B)

Включить дайджест по умолчанию: миграция — флип дефолта `users.notification_preferences.new_lead.email` → `true` (schema.sql:744 + CHANGELOG) + дотяжка существующих пользователей (UPDATE false→true). Тогда клиенты начнут получать дайджест автоматически; отключение — снять галочку. Backend, проверяемо Pest.

## G8 — фронтовые тесты сломаны

`docs/superpowers/specs/2026-06-18-g8-frontend-test-runner-broken.md`. Любой `vitest`-тест падает на сборке. Backend Pest — ок. До починки G8 фронт-правки (G3, фронт-часть G1) автотестами не проверить — только type-check / браузер / CI.

## Как работать под стеной (кратко; подробно — гайд)

- Реальные правки кода — только как шаги ОПЕЧАТАННОГО плана: новый `.md`-spec в `specs/` → новый `.md`-plan в `plans/` → шаги по порядку. Авторская запись новых `.md` в specs/plans — свободна.
- Всю разведку (чтение кода) — ДО печати плана (под планом чтение вне текущего шага блокируется).
- Каждый Edit/Write/Bash = один шаг (op+object). Несколько правок одного файла — несколько шагов. MultiEdit недоступен.
- Bash-шаги — только зелёные (упавший шаг ломает указатель). Команды без цепочек/`node -e`/install.
- Pest: `composer --working-dir=app test -- <путь | --filter=X>`.
- Коммит: стена не даёт без зелёных тестов → терминал владельца: `$env:LEFTHOOK="0"; git add <files>; git commit -m "..." -m "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"; $env:LEFTHOOK=$null`.
- Файлы машинерии стены (`tools/enforce-*`, `judge-*`, `floor-*`) — НЕ править под стеной.
