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>
7.0 KiB
Спека — Осмотр портала глазами клиента (Фаза 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":"Ручной проход глазами клиента"}
]