# План v2 — Осмотр портала глазами клиента (Фаза 1 имитации)

## Цель

Подготовить наполненный локальный портал и пройти по нему глазами оплаченного
клиента, зафиксировав находки по восьми экранам клиентского пути (спека D1–D9).

## Подготовка к осмотру (шаги)

1. Команда наполнения дополняется выводом готового логина первого имитационного
   клиента: в конце метода добавляется строка вывода с email пользователя первого
   тенанта и паролем `password` — чтобы вход был самодостаточным без чтения базы
   вручную (D2).
2. Идемпотентная миграция схемы локальной базы (применяет только недостающие
   миграции; существующие данные не трогает) — гарантия, что схема готова под
   наполнение (D1).
3. Запуск команды наполнения на 20 заявок и 3 клиента — появляются сделки,
   списания, движения баланса и уведомления (D1).
4. Сборка фронтовых ассетов на уже присутствующих зависимостях копии, чтобы
   локальный сервер отдавал готовое приложение (D3).
5. Подъём локального сервера приложения — портал становится доступен по адресу
   для прохода по экранам (D3, D4).

После подъёма сервера: проход глазами клиента начинается с экрана входа (D2)
первым сид-клиентом, затем экраны D3–D8 со скриншотами. По каждому экрану
собирается тройка «ожидали / получили / вывод»; наполнение D1 подтверждается тем,
что данные (сделки, списания, движения баланса, уведомления) видны на экранах
D3/D6/D8 и согласованы с базой. Итог пишется отдельным сводным отчётом (D9).

```skills-json
["verify"]
```

```steps-json
[
  {"op":"Edit","object":"app/app/Console/Commands/Imitation/ImitationSeedCommand.php","ref":"D2"},
  {"op":"Bash","object":"php app/artisan migrate --force","ref":"D1"},
  {"op":"Bash","object":"php app/artisan imitation:seed --leads=20 --clients=3","ref":"D1"},
  {"op":"Bash","object":"npm --prefix app run build","ref":"D3"},
  {"op":"Bash","object":"php app/artisan serve","ref":"D3"}
]
```

```verified-context-json
[
  {"id":"vc1","kind":"EXTRACTED","ref":"app/app/Console/Commands/Imitation/ImitationSeedCommand.php","anchor":"imitation:seed is forbidden in production"},
  {"id":"vc2","kind":"EXTRACTED","ref":"docs/superpowers/runbooks/2026-06-03-phase1-imitation-runbook.md","anchor":"Ручной проход глазами клиента"}
]
```

## Переговоры

### Круг 1

Шаг 1 — минимальная аддитивная правка: добавляет в команду наполнения строку
вывода логина первого клиента, поведение наполнения не меняет. Шаги сборки и
подъёма сервера обязательны, чтобы приложение рендерилось и было доступно для
прохода глазами клиента; без них экраны D3–D8 не открыть. Завершающий шаг —
подъём сервера; отчёт по находкам пишется отдельным новым файлом после прохода и
в шаги подготовки не входит.

### Круг 2

Покрытие всех восьми экранов: проход начинается с экрана входа (D2) первым
сид-клиентом, затем экраны D3–D8; наполнение (D1) — это подготовка данных, и оно
подтверждается тем, что сделки, списания, движения баланса и уведомления видны на
экранах D3, D6, D8 и согласованы с базой. Таким образом D1 и D2 в проходе
охвачены явно, а не пропущены.

Готовность схемы: перед наполнением добавлен шаг идемпотентной миграции — он
применяет только недостающие миграции и не трогает существующие данные, поэтому
наполнение не упадёт из-за отсутствия схемы.

Установка зависимостей отдельным шагом не закладывается намеренно: копия —
рабочая dev-сборка, её фронтовые зависимости уже присутствуют и используются
скриптами сборки, линта и тестов. Если зависимостей вдруг нет, шаг сборки явно
завершится ошибкой и это будет зафиксировано как блокер окружения, а не пройдёт
незаметно.

Проверяемость полноты данных: списания и остаток проверяются на экране баланса
(D6), уведомление о новой сделке — на экране уведомлений (D8), сами сделки и поле
«Город» — на ленте и карточке сделки (D3); каждое наблюдение сверяется с базой,
не ограничиваясь фактом успешного входа.
