Files
admins d17fd7ef5d fix(pitch): корректная цифра очереди в деке дня 3 (4 239, не 273)
273 — это снятые защитой от переобобщения ложные матчи (подмножество), а не вся
очередь. Очередь верификации = 4 239 (26%, как на дашборде). Выправлено в KPI и
на слайде точности.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:21:29 +05:00

174 lines
14 KiB
HTML
Raw Permalink 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, maximum-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>MedArchive — итоги дня 3</title>
<link rel="preconnect" href="https://fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=geologica:300,400,500,600,700&display=swap" rel="stylesheet">
<!-- ассеты reveal переиспользуются с /demo (вендорены на сервере) -->
<link rel="stylesheet" href="/demo/reveal/dist/reveal.css">
<link rel="stylesheet" href="/demo/reveal/dist/theme/white.css" id="theme">
<style>
:root{ --brand:#ff4713; --brand-soft:#ffede7; --tg:#6b788e; --lg:#f5f7f9; --ink:#111827; --muted:#6b7280; --border:#ebedf0; --ok:#0f973d; }
.reveal{font-family:"Geologica",ui-sans-serif,system-ui,sans-serif;color:var(--ink);font-weight:400}
.reveal h1,.reveal h2,.reveal h3{font-family:"Geologica";color:var(--ink);font-weight:700;text-transform:none;letter-spacing:-.01em;line-height:1.12}
.reveal h1{font-size:2.0em}.reveal h2{font-size:1.5em;margin-bottom:.4em}.reveal h3{font-size:1.05em;font-weight:600}
.reveal .slides section{text-align:left}
.reveal section.center{text-align:center}
.accent{color:var(--brand)}
.reveal .badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--brand-soft);color:var(--brand);
font-size:.4em;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.35rem .8rem;border-radius:999px;margin-bottom:.6rem}
.reveal p.lead{color:var(--muted);font-size:.85em;line-height:1.5}
.reveal ul{margin-left:1em}.reveal li{margin:.28em 0;line-height:1.35;font-size:.92em}
.reveal section.compact li{font-size:.72em;line-height:1.3;margin:.22em 0}
.reveal section.compact h2{font-size:1.35em}
.reveal table{font-size:.5em;border-collapse:collapse;width:100%;margin-top:.3em}
.reveal th{background:var(--lg);color:var(--tg);text-align:left;padding:.45em .7em;font-weight:600;border-bottom:2px solid var(--border)}
.reveal td{padding:.4em .7em;border-bottom:1px solid var(--border)}
.reveal .pct{font-weight:700;text-align:center;white-space:nowrap}
.reveal .up{color:var(--ok);font-weight:700}
.reveal .kpi{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.5rem}
.reveal .kpi .card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:.8rem 1.1rem;min-width:150px}
.reveal .kpi .num{color:var(--brand);font-size:1.4em;font-weight:700;display:block}
.reveal .kpi .lbl{color:var(--muted);font-size:.45em}
.reveal .flow{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.56em;margin:.4rem 0}
.reveal .flow .b{background:var(--lg);border:1px solid var(--border);border-radius:10px;padding:.45rem .7rem;font-weight:500}
.reveal .flow .b.hl{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:600}
.reveal .flow .ar{color:var(--tg);font-weight:700}
.reveal .ok{color:var(--ok);font-weight:600}
.reveal .brandbar{position:fixed;bottom:0;left:0;right:0;height:5px;background:var(--brand);z-index:30}
.reveal small{color:var(--muted)}
.reveal .two{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.reveal .new{display:inline-block;background:var(--ok);color:#fff;font-size:.4em;font-weight:700;padding:.1rem .5rem;border-radius:6px;vertical-align:middle;margin-left:.4rem;text-transform:uppercase;letter-spacing:.03em}
</style>
</head>
<body>
<div class="brandbar"></div>
<div class="reveal"><div class="slides">
<!-- 1 -->
<section class="center">
<span class="badge">● Medtech · Terricon Valley · день 3 · к защите</span>
<h1>MedArchive — <span class="accent">итоги третьего дня</span></h1>
<p class="lead">Автоматическая обработка архива прайсов клиник-партнёров.<br>Отчёт перед трекером · 28.06.2026 · команда 107</p>
<p style="margin-top:1rem"><span class="ok">● работает в проде:</span> <b>med.secondbrain.tools</b></p>
</section>
<!-- 2 -->
<section class="compact">
<h2>Что сделано за день 3</h2>
<p class="lead">День 3 — точность сопоставления и упаковка к защите.</p>
<ul>
<li><b>Точность сопоставления</b>: уточнили эмбеддинг-матчинг — убрали ложные матчи, сохранив верные вариации; <b>73,7%</b> автонормализации.</li>
<li><b>Справочник вычищен</b>: 720 повреждённых Excel-ошибкой service_id (<code>#REF!</code>) заменены на чистые id.</li>
<li><b>Презентация</b> по официальному шаблону (PPTX, команда 107) + лендинг-питч с прогрессом по дням.</li>
<li><b>Демо-видео</b> — трейлер MVP, встроен в питч и репозиторий как страховка к живому показу.</li>
<li><b>ARCHITECTURE.md</b> — единое описание системы; репозиторий причёсан к сдаче.</li>
</ul>
</section>
<!-- 3 -->
<section>
<h2>Итоговые метрики</h2>
<div class="kpi">
<div class="card"><span class="num">16 140</span><span class="lbl">позиций извлечено из 10 файлов</span></div>
<div class="card"><span class="num">73,7%</span><span class="lbl">нормализовано автоматически (цель ≥70%)</span></div>
<div class="card"><span class="num">4 239</span><span class="lbl">в очереди верификации — на подтверждение оператору (26%)</span></div>
<div class="card"><span class="num">live</span><span class="lbl">все эндпоинты + Swagger 200</span></div>
</div>
<p class="lead" style="margin-top:.8rem">Все форматы ТЗ §4.2 покрыты: PDF-текст, скан (Vision), XLSX/XLS, DOCX. Извлечение, нормализация, валидация и версионирование — на реальном архиве 8 клиник.</p>
</section>
<!-- 4 -->
<section class="compact">
<h2>Точность сопоставления <span class="new">день 3</span></h2>
<p class="lead">Уточнили матчинг к справочнику — убрали ложные сопоставления, сохранив верные.</p>
<ul>
<li><b>Умный guard:</b> снимаем только <b>неуверенные</b> эмбеддинг-матчи (&lt;0,72) в концентрированных группах — отсекается сиблинг-захват («Магний (моча)» подтягивал соседние тесты-металлы на пороге 0,70).</li>
<li><b>Верные вариации остаются:</b> одна «МРТ головного мозга» под десятками протоколов сопоставляется корректно — число формулировок не признак ошибки.</li>
<li><b>Итог:</b> <b class="accent">73,7%</b> автонормализации (≥70% ✅). Защита от переобобщения сняла <b>273</b> ложных матча в очередь — система знает, в чём не уверена.</li>
<li><b>Справочник вычищен:</b> 720 service_id с <code>#REF!</code> заменены на чистые — поиск отдаёт корректные идентификаторы.</li>
</ul>
</section>
<!-- 5 -->
<section class="compact">
<h2>Сверх ТЗ — продуктовые фишки</h2>
<p class="lead">Функции, которых детальное ТЗ не требует, но которые делают систему живым продуктом.</p>
<div class="flow">
<span class="b hl">авто-забор из папки</span><span class="ar"></span>
<span class="b">нормализация</span><span class="ar"></span>
<span class="b hl">алерт об изменении цены</span><span class="ar"></span>
<span class="b">экспорт в Excel</span>
</div>
<ul>
<li><b>Авто-загрузка</b>: новые прайсы из отслеживаемой папки подхватываются без ручного запуска.</li>
<li><b>Алерты об изменении цен</b> — при отклонении цены от прошлой версии (правило ТЗ §4.4 об аномалии &gt;50%).</li>
<li><b>Экспорт</b> единого сравнительного прайса в Excel — готовый артефакт для биллинга/закупок заказчика.</li>
<li><b>Демо-видео</b> — трейлер MVP своим голосом, субтитры, встроен в питч.</li>
</ul>
</section>
<!-- 6 -->
<section>
<h2>Готовность по ТЗ <span class="accent" style="font-size:.5em">день 2 → день 3</span></h2>
<table>
<tr><th>Раздел</th><th class="pct">день 2</th><th class="pct">день 3</th><th>Состояние</th></tr>
<tr><td>§4.1 Загрузка архива</td><td class="pct">90</td><td class="pct up">95</td><td>ZIP через интерфейс, очередь, статусы ✅</td></tr>
<tr><td>§4.2 Извлечение по формату</td><td class="pct">92</td><td class="pct up">95</td><td>PDF/скан-Vision/XLSX-XLS/DOCX ✅</td></tr>
<tr><td>§4.3 Нормализация</td><td class="pct">92</td><td class="pct up">94</td><td>каскад + честный порог + справочник вычищен</td></tr>
<tr><td>§4.4 Валидация + верификация</td><td class="pct">88</td><td class="pct up">92</td><td>проверки, версионирование, дообучение ✅</td></tr>
<tr><td>§4.5 API + OpenAPI</td><td class="pct">95</td><td class="pct up">98</td><td>7 эндпоинтов + Swagger ✅</td></tr>
<tr><td>§4.6 Интерфейс</td><td class="pct">88</td><td class="pct up">95</td><td>поиск, страница партнёра, админка, дашборд ✅</td></tr>
<tr><td>§7 Что сдаём</td><td class="pct">80</td><td class="pct up">98</td><td>БД, отчёт качества, OpenAPI, README, презентация, видео ✅</td></tr>
</table>
</section>
<!-- 7 -->
<section>
<h2>Готовность по рубрике оценки</h2>
<table>
<tr><th>Критерий жюри</th><th class="pct">вес</th><th class="pct">день 1</th><th class="pct">день 2</th><th class="pct">день 3</th></tr>
<tr><td>Качество извлечения данных</td><td class="pct">30%</td><td class="pct">~85%</td><td class="pct">~92%</td><td class="pct up">~95%</td></tr>
<tr><td>Нормализация и сопоставление</td><td class="pct">25%</td><td class="pct">~90%</td><td class="pct">~92%</td><td class="pct up">~93%</td></tr>
<tr><td>Валидация и верификация</td><td class="pct">20%</td><td class="pct">~60%</td><td class="pct">~88%</td><td class="pct up">~92%</td></tr>
<tr><td>API и поиск</td><td class="pct">15%</td><td class="pct">~90%</td><td class="pct">~95%</td><td class="pct up">~98%</td></tr>
<tr><td>UX административного раздела</td><td class="pct">10%</td><td class="pct">~65%</td><td class="pct">~88%</td><td class="pct up">~92%</td></tr>
</table>
<p class="lead" style="margin-top:.7rem"><b class="accent">≈ 94% по рубрике</b> (день 1 ≈ 80%, день 2 ≈ 91%) · плюс бонус — живой деплой, которого ТЗ не требует.</p>
</section>
<!-- 8 -->
<section class="compact">
<h2>Готов к защите <span class="new">чек-лист</span></h2>
<ul>
<li><span class="ok"></span> Прод жив — <b>/</b>, <b>/api/health</b>, <b>/api/stats</b>, <b>/api/docs</b> отдают 200.</li>
<li><span class="ok"></span> Презентация PPTX по шаблону (команда 107) + лендинг-питч с прогрессом по дням.</li>
<li><span class="ok"></span> Демо-видео встроено — страховка к живому показу.</li>
<li><span class="ok"></span> Отчёт о качестве, OpenAPI/Swagger, README, ARCHITECTURE.md.</li>
<li><b>На демо:</b> один проход очереди верификации (показать дообучение) + замер времени обработки.</li>
</ul>
</section>
<!-- 9 -->
<section class="center">
<h1>День 3: <span class="accent">готов к защите</span></h1>
<p class="lead">73,7% автонормализации — выше планки ТЗ (≥70%).<br>
Все требования ТЗ закрыты, все форматы извлекаются, прод стабилен.<br>
Презентация, демо-видео и документация — на месте.</p>
<p style="margin-top:1.3rem;font-size:.92em">
Демо — <b>med.secondbrain.tools</b><br>
<small>документация API — med.secondbrain.tools/api/docs · питч — med.secondbrain.tools/pitch/</small></p>
</section>
</div></div>
<script src="/demo/reveal/dist/reveal.js"></script>
<script src="/demo/reveal/plugin/notes/notes.js"></script>
<script>
Reveal.initialize({ hash: true, slideNumber: 'c/t', transition: 'slide', controls: true, progress: true, center: true, plugins: [ RevealNotes ] });
</script>
</body>
</html>