Мастер-документ точки входа для свежей сессии: тест на боевом liderra.ru,
порядок R1-R5, карта 26 планов, безопасность, эфир, вердикт GO/NO-GO.
Планы 24 помощь, 25 имперсонизация, 26 публичный API.
Поправка: F-DIGEST снята — была ошибкой чтения устаревшего комментария,
не отставанием локалки (она байт-в-байт с боевым 01a9029c). Канон-схема
db/schema.sql:796 new_lead.email:true — дайджест вкл по умолчанию. План 20
и реестр обновлены. Тесты — только на проде.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
20 KiB
МАСТЕР-ХЭНДОФФ: полный приёмочный тест боевого liderra.ru — точка входа для свежей сессии
🟢 ЧИТАЙ ЭТО ПЕРВЫМ. Ты — новая сессия-исполнитель. Этот документ ведёт тебя от старта до вердикта GO/NO-GO. Не угадывай — иди по ссылкам.
Дата: 20.06.2026. Кодовая фраза стены: «роутер-наставник» (на приёмке стена снята — действуй свободно, но строго по §1 безопасности).
Что ты делаешь: прогоняешь полное приёмочное тестирование боевого портала liderra.ru «глазами клиента» — перед передачей продажникам. Доказываешь, что платящему клиенту всё реально работает (вход → проект → заказ поставщику → поставка лида → сделки → деньги → изоляция → отчёты/импорт/онбординг/помощь/API), и оцениваешь ёмкость/железо.
⛔ §1. БЕЗОПАСНОСТЬ — прочитать дважды (это БОЕВОЙ прод)
Полный свод — R0 §3-§4. Кратко, неотменяемо:
- ⛔ НЕ трогать
lkomega/ tenant 2 — реальный бизнес владельца («Компания 1»,info@lkomega.ru, баланс ~1.83М ₽, 1013 сделок ЦЕЛ). Не править/удалять/вливать/менять баланс. - ⛔ Реальный заказ у поставщика crm.bp-gr.ru — только тест-проектами, вычищать ДО 21:00 МСК (иначе поставщик зафиксирует слепок и начнёт слать реальные платные лиды).
- ⛔ НЕ светить секреты (вебхук-секрет, пароли, креды) в чат/логи/коммиты. Берёшь у владельца.
- ✅ Все тест-объекты — с маркером
TEST-(для teardown). - ✅ Мутации прода — осознанно (стены нет; вся ответственность на тебе). Read-only SELECT — свободно.
- 🛑 Критдефект (деньги расходятся / изоляция течёт / чужие данные): СТОП по пункту, зафиксируй «ожидали/получили/факт из БД», доложи владельцу, НЕ чини на боевом. UX-косяки — отдельным списком, прогон не блокируют.
- ⚠️ Прод спит (0 активных проектов) — рабочее окно; железо слабое (2 ГБ / 2 vCPU@20%) → на нагрузке (R4) со SAFETY-стопом.
§2. ЧТО ПРОЧИТАТЬ — строгий порядок
- Этот мастер (точка входа, маршрут, формат отчёта, безопасность).
- prod-logic-map.md §0–§21 — логика прода построчно. Без неё не понять, что проверяешь.
- Хартия — объём (10 клиентских пунктов + слой D + блок ПЕРЕСМОТР — каноничный).
- R0 — доступ, безопасность, формат карточки.
- Ранбуки R1→R5 + R3b по порядку (исполняемая техформа) — см. §4.
- 26 пер-пунктовых планов (этой серии,
docs/superpowers/plans/2026-06-20-acceptance-*) — детальныебыло→ожидали→стало+ код-факты file:line + что снимать 📸 / что 💡 — см. §5. - Реестр находок — что уже найдено, что перепроверить.
- Хэндофф эфира §1, §4 — формат живого показа владельцу.
✅ ЛОКАЛЬНЫЙ РЕПОЗИТОРИЙ В СИНХРОНЕ С БОЕВЫМ. Деплой
01a9029c(G1–G7, schema v8.49) — в локальной истории (предок HEAD), код байт-в-байт с прода. Код-факты планов читаны из локальногоapp/и валидны. ⚠️ НО канон — это сама схема/код, а не комментарии-докблоки. Одна находка (F-DIGEST) была ложной, потому что я прочитал устаревший комментарий вNotificationService.phpвместо канонаdb/schema.sql(дефолт письма). Правило: критичные факты сверяй по схеме/живому коду, не по комментариям; и поскольку это прод-тест — подтверждай ключевые числа на самом проде (R0 §2). См. §7.
§3. ДВА ВЫХОДА: техническая сверка + живой эфир владельцу
Ты делаешь одно действие, но фиксируешь его двумя способами:
| Слой | Для кого | Формат | Где |
|---|---|---|---|
| Техническая сверка | для тебя/контроля | карточка R0 §6: ID · §ref · Предусловие · Действие · Ожидаем · Сверка(команды) · Если не так · Покрывает; статус PASS/FAIL/SKIP + «ожидали/получили» |
накапливаешь в отчёт (R5) |
| Живой эфир | для владельца (НЕ программист) | карточка было→ожидали→стало простым языком + 📸 живой скриншот того, что видно на экране + 💡 объяснение внутреннего; бэйдж ✅/🔴/ℹ️ |
live-demo/steps/NNNN.json |
Правило: что видно на экране портала (баланс, сделки, плашка, реквизиты) — обязательно 📸 живой скриншот (Playwright против https://liderra.ru). Что внутри (раздача, списание, цепочка) — 💡 простыми словами + 📝 сверка в БД (read-only).
Механика эфира (поднять перед показом)
- В
live-demo/:php -S 0.0.0.0:8899→ открытьhttp://localhost:8899/efir.html(кнопки ▶/⏸ — пульт владельца). - Карточки роняешь в
live-demo/steps/NNNN.json(формат — эфир-хэндофф §1), увеличиваешьsteps/count.txt, скриншоты вlive-demo/img/. - Авто-продолжение/пауза —
ScheduleWakeup+ читатьsteps/control.txt(play/pause). - Уже отснято 13 образцовых карточек (онбординг/раздача/баланс/изоляция/помощь/API) — на боевом пересними живыми снимками
liderra.ru.
§4. ПОРЯДОК ИСПОЛНЕНИЯ — ранбуки (техническая спина)
| Этап | Ранбук | Что делает | Уборка/риск |
|---|---|---|---|
| 1 | R1 | провижининг 7 тест-клиентов / 16 проектов / 12 rt (SQL TEST-, owner-escape; проекты — через ПОРТАЛ, иначе нет синка) + парный teardown-скрипт |
rt у поставщика → чистить до 21:00 |
| 2 | R2 | инъекционный стенд: слепок (snapshot:backfill) → POST /api/webhook/supplier/<СЕКРЕТ>; TOTP для 2FA |
секрет у владельца |
| 3 | R3 | движок карточками: распределение/деньги/сделки/изоляция + Часть E all-pairs (27 прогонов) + блокировка share-aware | тест-баланс, не реальные деньги |
| 3б | R3b | онбординг (G1), дайджест-письма (G2), напоминания убраны (G3) — после деплоя, перечитать на проде | живые ящики kdv1@/stels_info@ |
| 4 | R4 | слой D — нагрузка: адаптивный ramp до ~3000 лидов + параллельные правки + SAFETY-стоп (2 ГБ), цель 10k/сут, кривая+прогноз | боевая коробка, lkomega рядом |
| 5 | R5 | финал: сверки денег/изоляции, audit:verify-chains, teardown (поставщик→слепки→тест-тенанты→Redis), вердикт GO/NO-GO |
teardown строгий порядок |
Логика порядка: R1 строит популяцию → R2 даёт инструмент → R3 гоняет корректность+all-pairs → R3b онбординг/UI → R4 нагружает → R5 убирает и выносит вердикт.
§5. КАРТА: пункт свода → пер-пунктовый план (детализация было→ожидали→стало + код-факты)
26 планов этой серии в docs/superpowers/plans/2026-06-20-acceptance-*. Каждый — детальный разбор пункта с file:line, что снимать 📸, что 💡, и где честно помечены расхождения свода с кодом (находки).
| Пункт | План-файл | Гонится в |
|---|---|---|
| PR2 проекты→12 rt | …-PR2-projects-plan.md |
R1 |
| PR3 балансы | …-PR3-balances-plan.md |
R1 |
| №1 распределение/CAP=3 | …-01-distribution-cap-plan.md |
R3 |
| №2 второй круг | …-02-second-round-plan.md |
R3 |
| №3 каскад региона | …-03-region-cascade-plan.md |
R3 |
| №4 лимит/пауза под локом | …-04-limit-pause-under-lock-plan.md |
R3 |
| №5 идемпотентность | …-05-idempotency-plan.md |
R3 |
| №6 каналы/парсинг | …-06-channels-parsing-plan.md |
R3 |
| №7 списание+тройная запись | …-07-charge-triple-entry-plan.md |
R3 |
| №8 тариф-ступень | …-08-tier-step-plan.md |
R3 |
| №9 нехватка→откат+автопауза | …-09-insufficient-rollback-plan.md |
R3 |
| №10 два проекта=одно списание | …-10-two-projects-one-charge-plan.md |
R3 |
| №11 лента денег+калькуляторы | …-11-money-ledger-calculators-plan.md |
R3 |
| №12 денежный аудит | …-12-money-audit-plan.md |
R3/R5 |
| №13 сделки лента/карточка/статусы | …-13-deals-list-card-status-plan.md |
R3 |
| №14 ручная/массовые/экспорт | …-14-manual-bulk-export-plan.md |
R3 |
| №15 сделки переживают удаление проекта | …-15-deals-survive-project-delete-plan.md |
R3 |
| №16 изоляция | …-16-isolation-plan.md |
R3/R5 |
| №18 онбординг | …-18-onboarding-plan.md |
R3b |
| №19 гейт реквизитов+ИНН | …-19-requisites-gate-inn-plan.md |
R3b |
| №20 колокольчик+дайджест | …-20-bell-digest-plan.md |
R3b |
| №21 напоминания убраны | …-21-reminders-gone-plan.md |
R3b |
| №22 отчёты | …-22-reports-plan.md |
R3b |
| №23 импорт CSV | …-23-csv-import-plan.md |
R3b |
| №24 помощь | …-24-help-support-plan.md |
R3b |
| №25 имперсонизация (клиентская плашка) | …-25-impersonation-client-plan.md |
R3/прод |
| №26 публичный API+ключи | …-26-public-api-keys-plan.md |
R3b |
№17 all-pairs (27 прогонов) — не отдельный пункт, а матрица прогона пунктов №1–№16 в сочетаниях S×R×B×Lim×D → R3 Часть E (генератор 111 пар). Фаза 4 (нагрузка) → R4. Фаза 5 (финал/вердикт) → R5. PR1 (7 клиентов) + PR4 (teardown-скрипт) → R1.
⚠️ Планы писались по локальному коду с пометками «(лок)». На проде исполняй те же шаги против
liderra.ru(провижининг SQL+escape, реальная DaData/Россвязь, реальный поставщик, живые письма). Пометки «🟦 на прод-прогоне» в планах — теперь основной режим.
§6. ПРОВИЖИНИНГ И ДОСТУП (кратко; полно — R0 §2, R1)
- Доступ:
ssh liderra-prod '<cmd>'(бастион). Read-only SQL:ssh liderra-prod 'psql -h 127.0.0.1 -U crm_app_user -d liderra -tA -c "SELECT …"'. RLS-таблицы —sudo -u postgres psql -d liderra -c "SET app.current_tenant_id='<ID>'; SELECT …". - Тест-клиенты: SQL-INSERT
tenants(TEST-…,active, баланс) +users(bcrypt,is_active=true), маркерTEST-, owner FLOOR-ESCAPE.imitation:seedна проде запрещён, endpoint создания тенанта нет. - Проекты: создавать через портал (иначе нет синка к поставщику и rt не появятся).
- Живые ящики:
kdv1@bk.ru,stels_info@bk.ru— на тех клиентов, кому письма важны (сброс пароля, новый лид, заморозка). Остальным — пустой адрес, токены смотреть в БД read-only. - Браузер: Playwright против
https://liderra.ru. - Секреты (вебхук-секрет, пароли) — у владельца, в чат не писать.
§7. НАХОДКИ — что уже известно и что перепроверить на проде
Полный реестр — findings-register. Сводка с поправкой по боевому:
| ID | Суть | Статус на проде |
|---|---|---|
| F-CSV 🔴 | экспорт без защиты от CSV-инъекции (формулы =+-@) |
перепроверить файлом на проде (№14, №11) — возможен фикс |
| F-DELPROJ 🟡 | свод «сделки сохраняются»; код запрещает удаление проекта со сделками | поправить свод (№15) |
| F-DIGEST ✅ снята | ложная: читал устаревший комментарий NotificationService.php; канон db/schema.sql:796 = new_lead.email:true — дайджест вкл по умолчанию (G2-B). Локалка в синхроне |
комментарий поправлен; №20 обновить (дайджест вкл) |
| F-PDF 🟡 | PDF-отчёт → штатно failed (заглушка) |
подтвердить на проде (№22) |
| F-REMIND 🧹 | фронт-хвосты снятой фичи напоминаний (auth.ts 'reminder', коммент) |
проверить мёртвый переключатель на проде; дочистить (№21) |
| F1/F2/F4/F5 | прежний осмотр 17.06 (город/цена0₽/пустой столбец/мок-средняя) | перепроверить (№3,№11,№13) |
| F3 | «хватит на дней» Дашборд↔Биллинг | закрыта (единый источник) |
§8. МАСТЕР-ЧЕК-ЛИСТ «ничего не пропущено»
- Прочитан prod-logic-map §0–§21, хартия (ПЕРЕСМОТР), R0.
- Поднят эфир (
:8899), пульт работает; готов ронять карточки. - R1: 7 клиентов/16 проектов/12 rt заведены (
TEST-), teardown-скрипт готов. - R2: инъекция работает (слепок→вебхук→сделка).
- R3: пункты №1–№16 пройдены карточками (тех. PASS/FAIL + эфир); R3 Часть E all-pairs (27) покрыта.
- R3b: №18–№26 (онбординг/реквизиты/колокольчик/напоминания/отчёты/импорт/помощь/имперсонизация/API) — перечитаны на проде, пройдены.
- R4: нагрузка — ramp, кривая, прогноз ёмкости, SAFETY-стоп не сорван.
- R5: F1 Σ-сверка денег, F2 изоляция, F3
audit:verify-chainsзелёный, F4 маржа, teardown ДО 21:00 (поставщик→слепки→тенанты→Redis→проверка чистоты), tenant 2 ЦЕЛ. - Все находки §7 перепроверены/обновлены; новые — в реестр.
- Итоговый отчёт + вердикт GO / NO-GO (GO = 0 расхождений по деньгам и изоляции, ядро проходит сквозь).
§9. ВЕРДИКТ
GO — если: деньги сходятся копейка-в-копейку (F1), изоляция 0 утечек (F2), аудит зелёный (F3), ядро движка (раздача→списание→сделка→изоляция) проходит сквозь, критдефектов нет. UX-косяки GO не блокируют (список владельцу). NO-GO — любой критдефект денег/изоляции/чужих данных.
Итоговый отчёт — формат R5: по пунктам PASS/FAIL/SKIP + находки + ёмкость + вердикт.
§10. ОТКУДА СТАРТОВАТЬ ПРЯМО СЕЙЧАС
- Прочитай §2 (в порядке): map → хартия → R0.
- Возьми у владельца: вебхук-секрет, пароли тест-клиентов, подтверждение окна (прод спит, до 21:00 для поставщика).
- Подними эфир (§3).
- Иди R1 → R2 → R3(+E) → R3b → R4 → R5, на каждом пункте сверяясь с пер-пунктовым планом (§5); ключевые числа (тарифы, дефолты) подтверждай по схеме/живому коду и на проде (это прод-тест), не по комментариям.
- Критдефект → СТОП + владельцу. Teardown ДО 21:00. Финал → вердикт.