35c30ecce0
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>
87 lines
4.2 KiB
HTML
87 lines
4.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Лидерра — прямой эфир приёмочного теста (ИМИТАЦИЯ)</title>
|
|
<style>
|
|
:root { --teal:#0F6E56; --ivory:#F6F3EC; --noir:#012019; }
|
|
* { box-sizing:border-box; }
|
|
html,body { margin:0; }
|
|
body { background:var(--noir); color:var(--ivory);
|
|
font-family: Inter, Arial, sans-serif; font-size:12px; }
|
|
header { background:var(--teal); padding:8px 14px; display:flex;
|
|
align-items:center; gap:10px; }
|
|
.dot { width:11px; height:11px; border-radius:50%; background:#e5484d;
|
|
box-shadow:0 0 0 0 rgba(229,72,77,.7); animation:pulse 1.4s infinite; }
|
|
@keyframes pulse { 0%{box-shadow:0 0 0 0 rgba(229,72,77,.7)}
|
|
70%{box-shadow:0 0 0 9px rgba(229,72,77,0)}
|
|
100%{box-shadow:0 0 0 0 rgba(229,72,77,0)} }
|
|
h1 { font-size:15px; margin:0; font-weight:600; }
|
|
.sub { font-size:11px; opacity:.8; margin-left:auto; }
|
|
.progress { background:#7a4b12; color:#ffffff; padding:7px 14px; font-size:13px;
|
|
font-weight:600; white-space:pre-wrap; }
|
|
.wrap { display:flex; gap:10px; padding:10px; align-items:flex-start; }
|
|
.col { display:flex; flex-direction:column; gap:10px; min-width:0; flex:1 1 50%; }
|
|
.panel { background:#06281f; border:1px solid var(--teal); border-radius:7px; overflow:hidden; }
|
|
.panel h2 { margin:0; font-size:12px; padding:6px 11px; background:var(--teal); font-weight:600; }
|
|
.panel.supplier h2 { background:#7a4b12; }
|
|
.panel.load h2 { background:#7a4b12; }
|
|
img { width:100%; max-height:32vh; object-fit:contain; object-position:top;
|
|
display:block; background:#ffffff; }
|
|
.caption { font-size:12px; background:#08332a; padding:8px 12px; border-radius:7px; }
|
|
pre { margin:0; padding:10px 11px; font-family:"JetBrains Mono",Consolas,monospace;
|
|
font-size:11.5px; line-height:1.45; white-space:pre-wrap; color:#dff3ec; }
|
|
.meta { font-size:10px; opacity:.55; padding:2px 2px 0; }
|
|
@media (max-width:780px){ .wrap{flex-direction:column} img{max-height:40vh} }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<span class="dot"></span>
|
|
<h1>Лидерра — прямой эфир приёмочного теста</h1>
|
|
<span class="sub">ИМИТАЦИЯ · движется само</span>
|
|
</header>
|
|
<div class="progress" id="prog">прогон…</div>
|
|
<div class="wrap">
|
|
<div class="col">
|
|
<div class="panel client">
|
|
<h2>🟢 Наш портал — экран клиента (liderra.ru)</h2>
|
|
<img id="live" src="latest.png" alt="экран">
|
|
</div>
|
|
<div class="panel supplier">
|
|
<h2>🟠 Портал поставщика — заказ глазами (crm.bp-gr.ru)</h2>
|
|
<img id="sup" src="supplier.png" alt="поставщик">
|
|
</div>
|
|
<div class="caption" id="cap">…</div>
|
|
<div class="meta" id="meta"></div>
|
|
</div>
|
|
<div class="col">
|
|
<div class="panel load">
|
|
<h2>🖥 Загрузка боевого сервера (live · тикает сам)</h2>
|
|
<pre id="load">…</pre>
|
|
</div>
|
|
<div class="panel">
|
|
<h2>🗄 Деньги и инварианты (боевой)</h2>
|
|
<pre id="db">…</pre>
|
|
</div>
|
|
<div class="panel">
|
|
<h2>⚙️ Журнал конвейера — поток лидов</h2>
|
|
<pre id="ev">…</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
const img=document.getElementById('live'), sup=document.getElementById('sup'), meta=document.getElementById('meta');
|
|
function tick(){ const t=Date.now(); img.src='latest.png?t='+t; sup.src='supplier.png?t='+t;
|
|
meta.textContent='обновлено: '+new Date().toLocaleTimeString('ru-RU'); }
|
|
setInterval(tick,800); tick();
|
|
async function load(f,el){ try{const r=await fetch(f+'?t='+Date.now());
|
|
if(r.ok)document.getElementById(el).textContent=await r.text();}catch(e){} }
|
|
function all(){ load('progress.txt','prog'); load('caption.txt','cap');
|
|
load('load.txt','load'); load('db.txt','db'); load('events.txt','ev'); }
|
|
setInterval(all,800); all();
|
|
</script>
|
|
</body>
|
|
</html>
|