# Спека — Проверка запущенного портала глазами клиента (нефинансовый периметр)

## Цель

Пройти запущенный локальный портал по адресу 127.0.0.1:8000 глазами активного
клиента через браузер, снять скриншоты ключевых экранов и зафиксировать
логические и визуальные расхождения. Периметр — только нефинансовые экраны.
Экраны финансовой части в эту проверку не входят и осматриваются отдельно.

## D1 Вход {#D1}

Контракт: на экране входа клиент вводит email и пароль и попадает в свою рабочую
область; двухфакторная проверка у сид-пользователя выключена.

Edge: неверная пара email/пароль показывает понятную ошибку, не пускает внутрь.

Критерий: вход первого сид-клиента проходит, открывается рабочая область с
навигацией.

## D2 Проекты и лента сделок {#D2}

Контракт: после входа видны список проектов и карточка проекта; лента сделок
показывает новые сделки; карточка сделки содержит телефон и поле «Город» = имя
настоящего региона заявки.

Edge: при подмене региона код субъекта сделки = регион клиента, «Город» = имя
настоящего региона заявки.

Критерий: лента непуста, поля сделки заполнены, «Город» соответствует региону
заявки.

## D3 Смена статуса сделки {#D3}

Контракт: клиент меняет статус сделки из карточки или ленты; новый статус
сохраняется и виден в списке.

Edge: переход между допустимыми статусами воронки.

Критерий: статус сделки изменился и сохранился после перезагрузки страницы.

## D4 Экспорт ленты {#D4}

Контракт: клиент выгружает ленту сделок в форматы CSV и XLSX; файл скачивается и
непуст.

Edge: выгрузка уважает текущие фильтры ленты.

Критерий: оба формата скачиваются без ошибки.

## D5 Колокольчик и уведомления {#D5}

Контракт: индикатор уведомлений показывает in-app уведомление о новой сделке;
список уведомлений открывается.

Edge: матрица предпочтений уведомлений у пользователя по умолчанию.

Критерий: в списке уведомлений есть событие о новой сделке.

## D6 Отчёт о находках {#D6}

Контракт: по каждому осмотренному экрану фиксируется тройка «ожидали / получили /
вывод» (OK либо находка) с приложенным скриншотом; итог собирается в отдельный
отчёт-файл.

Edge: визуальные и UX-расхождения, не ловимые автотестами — пустые поля,
сломанная вёрстка, неинформативные пустые состояния, нечитаемый текст.

Критерий: отчёт содержит строку по каждому осмотренному экрану и сводный вывод.

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