Files
portal/live-demo/rep.html
T
Дмитрий 35c30ecce0 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

98 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ОТЧЁТ · PR1 · образец (живые скриншоты)</title>
<style>
:root{--teal:#0F6E56;--ivory:#F6F3EC;--noir:#012019;--amber:#caa23a;--ok:#1a9e74;--red:#e5484d;--ink:#15302a;--mut:#5d7771;}
*{box-sizing:border-box;} html,body{margin:0;}
body{background:var(--noir);color:var(--ivory);font-family:Inter,'Segoe UI',Arial,sans-serif;font-size:13.5px;}
header{background:var(--teal);padding:11px 18px;display:flex;align-items:center;gap:12px;}
header h1{font-size:15px;margin:0;font-weight:600;}
.verd{margin-left:auto;background:#0a4f1f;color:#7dffb4;font-weight:800;padding:4px 13px;border-radius:13px;border:1px solid #1c7e44;font-size:13px;}
.sub{background:#0d6b4f;padding:9px 18px;font-size:13px;border-bottom:1px solid #19a079;}
.sub b{font-size:15px;}
.wrap{padding:16px 18px;max-width:1180px;}
.rule{background:#05241c;border:1px solid #14463a;border-radius:9px;padding:11px 14px;margin-bottom:16px;font-size:13px;color:#cfe9df;line-height:1.55;}
.rule b{color:#7ee0bd;}
.step{background:#06281f;border:1px solid var(--teal);border-radius:11px;margin-bottom:18px;overflow:hidden;}
.step>h2{margin:0;background:var(--teal);font-size:14px;padding:10px 14px;font-weight:700;display:flex;gap:10px;align-items:center;}
.step>h2 .ok{margin-left:auto;background:#0a4f1f;color:#7dffb4;font-weight:800;padding:2px 10px;border-radius:11px;font-size:12px;border:1px solid #1c7e44;}
.did{padding:10px 14px;font-size:13px;color:#d8f0e6;border-bottom:1px solid #0e3a2e;}
.did b{color:#7ee0bd;}
table.rep{width:100%;border-collapse:collapse;font-size:13px;}
table.rep th{background:#08312a;color:#9fe3c8;text-align:left;padding:8px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid #14463a;}
table.rep td{padding:10px 12px;border-bottom:1px solid #0e3a2e;vertical-align:top;line-height:1.5;}
table.rep .was{color:#c0b48a;} table.rep .exp{color:#bfe6d6;} table.rep .got{color:#eafff7;font-weight:600;}
.pill{display:inline-block;font-weight:800;font-size:11px;padding:2px 9px;border-radius:10px;white-space:nowrap;}
.pill.shot{background:#143a2e;color:#7ee0bd;border:1px solid #1c7e44;}
.pill.txt{background:#2c2a1a;color:#ffd766;border:1px solid #5a4f1a;}
.shots{display:flex;gap:14px;padding:14px;flex-wrap:wrap;align-items:stretch;}
.shotcard{flex:1 1 44%;min-width:300px;background:#0a3328;border:1px solid #15463a;border-radius:9px;overflow:hidden;display:flex;flex-direction:column;}
.shotcard .cap{display:flex;align-items:center;gap:8px;padding:8px 11px;font-size:12.5px;font-weight:700;background:#08312a;border-bottom:1px solid #14463a;}
.shotcard.before .cap{color:#c0b48a;} .shotcard.after .cap{color:#7ee0bd;}
.shotcard img{width:100%;display:block;background:#ffffff;}
.frame{padding:8px;}
.arrowrow{display:flex;align-items:center;justify-content:center;color:var(--amber);font-weight:800;font-size:24px;flex:0 0 26px;}
.inside{margin:12px 14px;background:#2a2410;border:1px solid #5a4f1a;border-radius:9px;padding:11px 13px;font-size:13px;color:#ffe9b8;line-height:1.55;}
.inside b{color:#ffd766;}
.inside .h{font-weight:800;color:#ffd766;display:flex;align-items:center;gap:7px;margin-bottom:4px;}
@media(max-width:820px){.shotcard{flex:1 1 100%}}
</style>
</head>
<body>
<header>
<h1>ОТЧЁТ ПРИЁМКИ · образец · ПУНКТ PR1 — завести клиента (самозапись)</h1>
<span class="verd">✅ СОШЛОСЬ</span>
</header>
<div class="sub"><b>Шаг 1 из плана</b> · регистрация клиента → подтверждение по коду → открытие кабинета с 300 ₽ · живой портал · 20.06.2026</div>
<div class="wrap">
<div class="rule">📸 <b>Скриншот</b> — для всего, что видно на экране (показываю «было» и «стало»). 💡 <b>«Что внутри»</b> — то, что на экране не показать (что портал сделал «под капотом»), объясняю простыми словами. Каждый шаг: <b>было → ожидалось → стало</b>.</div>
<!-- ШАГ A1 -->
<div class="step">
<h2>Шаг 1а — Регистрация клиента <span class="ok">✅ так и задумано</span></h2>
<div class="did">🎬 <b>Что я сделал:</b> открыл страницу регистрации, ввёл почту и пароль, поставил галочки согласия и «я не робот», нажал «Создать аккаунт».</div>
<table class="rep">
<tr><th>Что смотрим</th><th>Было</th><th>Ожидали</th><th>Стало (на самом деле)</th><th>Чем доказано</th></tr>
<tr><td>Экран</td><td class="was">пустая форма регистрации</td><td class="exp">портал просит ввести код из письма; войти пока нельзя</td><td class="got">форма принята, портал просит код</td><td><span class="pill shot">📸 скриншот ниже</span></td></tr>
<tr><td>Кабинет клиента</td><td class="was">клиента ещё нет</td><td class="exp">кабинет создан, но закрыт до подтверждения; денег пока нет</td><td class="got">кабинет создан и закрыт, на счету 0 ₽</td><td><span class="pill txt">💡 объясняю словами</span></td></tr>
<tr><td>Письмо с кодом</td><td class="was"></td><td class="exp">клиенту уходит письмо с кодом, код живёт 15 минут</td><td class="got">код выдан, действует 15 минут</td><td><span class="pill txt">💡 словами</span></td></tr>
</table>
<div class="inside"><div class="h">💡 Что произошло внутри портала (простыми словами)</div>
Портал принял заявку: завёл кабинет нового клиента, но держит его <b>закрытым</b>, пока человек не введёт код из письма. Денег на счету пока <b>нет (0 ₽)</b> — стартовые деньги дают только после подтверждения. Код действует 15 минут, ввести можно не больше 5 раз — защита от подбора.</div>
<div class="shots">
<div class="shotcard before"><div class="cap">📸 «БЫЛО» — экран регистрации (живой портал)</div><div class="frame"><img src="img/pr1-register-before.png" alt="register"></div></div>
</div>
</div>
<!-- ШАГ A2 -->
<div class="step">
<h2>Шаг 1б — Ввод кода → кабинет открыт, на счёт легло 300 ₽ <span class="ok">✅ так и задумано</span></h2>
<div class="did">🎬 <b>Что я сделал:</b> ввёл код из письма и подтвердил.</div>
<table class="rep">
<tr><th>Что смотрим</th><th>Было</th><th>Ожидали</th><th>Стало (на самом деле)</th><th>Чем доказано</th></tr>
<tr><td>Кабинет (Дашборд)</td><td class="was">вход закрыт</td><td class="exp">кабинет открылся, на счету <b>300 ₽</b></td><td class="got">вошёл в кабинет, на счету <b>300 ₽</b></td><td><span class="pill shot">📸 скриншот ниже</span></td></tr>
<tr><td>Деньги на счету</td><td class="was">0 ₽</td><td class="exp">ровно 300 ₽ (стартовый подарок)</td><td class="got">ровно 300 ₽</td><td><span class="pill shot">📸 видно на Дашборде</span></td></tr>
<tr><td>Код</td><td class="was">был действителен</td><td class="exp">после входа больше не работает</td><td class="got">погашен, повторно не пускает</td><td><span class="pill txt">💡 словами</span></td></tr>
</table>
<div class="inside"><div class="h">💡 Что произошло внутри портала (простыми словами)</div>
Клиент ввёл верный код — портал <b>открыл кабинет</b> и сразу положил на счёт <b>стартовые 300 ₽</b>. Это видно и на экране (Дашборд показывает 300 ₽), и так и задумано. Старый код после этого больше не действует. Всё прошло одним махом, без сбоев — кабинет не мог остаться «полуоткрытым».</div>
<div class="shots">
<div class="shotcard before"><div class="cap">📸 «БЫЛО» — кабинет ещё закрыт (экран регистрации/кода)</div><div class="frame"><img src="img/pr1-register-before.png" alt="before"></div></div>
<div class="arrowrow"></div>
<div class="shotcard after"><div class="cap">📸 «СТАЛО» — кабинет открыт, БАЛАНС 300 ₽ (живой портал)</div><div class="frame"><img src="img/pr1-dashboard-after.png" alt="dashboard 300"></div></div>
</div>
</div>
<div class="rule" style="border-color:#1c7e44;background:#06281f">
<b style="color:#7dffb4">ИТОГ по шагу: ✅ СОШЛОСЬ.</b>
Ждали, что после кода кабинет откроется и на счёт лягут 300 ₽ — так и вышло. Видно глазами (📸 Дашборд) и понятно, что внутри (💡 кабинет открыт, деньги начислены). Ничего не разошлось.
<br>На полном прогоне так же показываем всех 7 клиентов (📸 7 кабинетов) + у клиента C4 потом опускаем счёт до 600 ₽ (тоже скриншотом).
</div>
</div>
</body>
</html>