Files
portal/docs/superpowers/specs/2026-06-17-phase1-client-inspection-spec.md
T
Дмитрий 3ba703d9c9 docs(приёмка): корпус приёмочного теста + поправка №15 + статусы реестра
F-CORPUS: ключевые документы приёмки liderra.ru лежали untracked — мастер-
хэндофф ссылался на отсутствующие в git файлы (битые ссылки в новом клоне).
Закоммичены: R0–R5 + stepbystep ранбуки, хартия, prod-logic-map, эфир-хэндофф,
imitation-checks-table, live-demo/ (эфир-плеер) + смежные specs/планы серий
f1-card/phase1/televizor/g1/g2 (решение владельца — «корпус + смежные»).

F-DELPROJ: пункт №15 checks-table → «удаление проекта со сделками запрещено
(422), сделки целы» (было неточно «сделки сохранены», сверено по
ProjectService::delete).

Реестр находок: статусы F-DEPTRAC/F-CSV/F-REMIND/F-DELPROJ/F-CORPUS → закрыто.
.gitleaks.toml: ранбуки приёмки добавлены в allowlist (синтетические тест-
телефоны, та же категория что plans/specs/audits).
live-demo HTML: stylelint --fix (#fff→#ffffff).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 04:48:50 +03:00

7.0 KiB
Raw Blame History

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

Цель

Пройти локальный портал Лидерры глазами оплаченного клиента на наполненной имитацией копии (= боевой код) и зафиксировать логические и визуальные расхождения по восьми экранам клиентского пути. Деньги локальные, внешний геосервис выключен — регион берётся из тега заявки.

D1 Наполнение портала

Контракт: команда наполнения imitation:seed --leads=20 --clients=3 создаёт три профинансированных тенанта (баланс 100000.00 ₽), по пользователю на каждого, активный проект на Москву, общего B2-поставщика, пересобирает снапшот активной даты и вливает 20 синтетических заявок через настоящий конвейер маршрутизации заявок. Ожидаемый эффект в базе: появляются сделки (часть в статусе «новая»), записи списаний, движения баланса и in-app уведомления.

Edge: заявка на регион вне проектов оседает непроданной (число созданных сделок = 0); при достаточном балансе все 20 заявок проходят конвейер.

Критерий: после команды у сид-тенанта в базе есть хотя бы одна сделка и хотя бы одно движение баланса.

D2 Вход клиента

Контракт: вход — email и пароль через сессию (двухфакторная проверка у сид-пользователей выключена, пароль фабрики — password). Email сид-пользователя генерируется случайно, поэтому команда наполнения обязана вывести готовый логин первого клиента в консоль, чтобы осмотр был самодостаточным.

Edge: неверный пароль → ответ 422; превышение числа попыток → ответ 429.

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

D3 Проекты и лента сделок

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

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

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

D4 Смена статуса сделки

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

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

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

D5 Экспорт CSV и XLSX

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

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

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

D6 Баланс и списания

Контракт: экран баланса показывает текущий остаток и историю движений; после вливания заявок остаток меньше стартовых 100000 ₽ на сумму списаний.

Edge: суммы в рублях без потери копеек.

Критерий: остаток меньше 100000.00 ₽, история списаний непуста и согласована с суммой списаний.

D7 Тарифы

Контракт: экран тарифов показывает текущую ступень клиента, рассчитанную по числу доставленных за месяц заявок.

Edge: граница ступени (например, сотый доставленный лид переводит на следующую ступень).

Критерий: отображается корректная текущая ступень и её цена.

D8 Колокольчик и уведомления

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

Edge: матрица предпочтений уведомлений (восемь событий на три канала) у пользователя по умолчанию.

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

D9 Отчёт о находках

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

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

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

[
  {"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":"Ручной проход глазами клиента"}
]