/pitch/ и /day2/ на сервере оставались со старыми 15086/76,1 — локально были
исправлены, но не передеплоены. Выровнено. На последний слайд питча — QR на
демо (inline SVG) + обе ссылки текстом.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
273 — это снятые защитой от переобобщения ложные матчи (подмножество), а не вся
очередь. Очередь верификации = 4 239 (26%, как на дашборде). Выправлено в KPI и
на слайде точности.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- web: цвет lg→flint (text-lg применялся как цвет #f5f7f9 → заголовок сравнения был невидим)
- day3: убран исповедальный тон («честная/без накрутки» намекал на прошлую накрутку),
заменён на уверенный язык уточнения сопоставления
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Текст (xlsx, 1724 строки) 0,2с (≤60с ✅); скан через Vision ~14,5с/стр —
упирается в квоту free-tier Gemini (не в код), 21-стр документ 5,2 мин.
Путь решения: платный тариф или параллельные постраничные вызовы.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Честная нормализация 73,7%, фикс #REF! справочника, упаковка к защите,
готовность по ТЗ/рубрике, чек-лист готовности. Живёт на med.secondbrain.tools/day3/.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
720 услуг имели #REF! в каноническом service_id (Excel-ошибка из исходного
справочника протекала в живой /search). Миграция scripts/fix_ref_ids.py
генерирует чистые id и каскадно обновляет price_item (service_id,
suggested_service_id) и learned_synonym. matched сохранён (11899), имена целы.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Прежний guard снимал эмбеддинг-матч, если услуга собрала в клинике больше
8 разных названий. Это наказывало легитимные частотные услуги — одна «МРТ
головного мозга» реально встречается под десятками протоколов (с контрастом,
3Тл, предоперационная), и все они верно нормализуются к ней. Процент падал
до 69%.
Теперь снимаем только НЕуверенные матчи (<0,72) внутри концентрированных
групп: так отсекается сиблинг-захват (напр. «Магний Mg (моча)» подтягивал
Никель/Свинец/Ртуть в моче на пороге 0,70), а верные вариации остаются
сопоставленными. Признак ошибки — низкая уверенность, а не число названий.
Итог на тестовом архиве: 16 140 позиций извлечено, 73,7% нормализовано
автоматически (цель ТЗ ≥70%), 273 неуверенных матча — в очередь верификации.
Цифры выровнены в README, ARCHITECTURE, питч-деках, PPTX, quality_report.
Плюс полировка: извлечение города клиники, регистронезависимый поиск.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Дашборд считал по активным (после версионирования) и показывал 75,3% — расходилось
с презентацией. Канон — по всем извлечённым.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- README: превью трейлера (клик → видео) на главной, 15 086 поз. / 76,1%,
обновлённый список возможностей API и фронта.
- PPTX (команда 107): демо-видео встроено в слайд «Демонстрация прототипа».
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- pitch/landing: дека для защиты (reveal) — хук, проблема, живое демо (видео),
решение, как работает, прогресс день 1→2→3 по рубрике и по ТЗ, фишки, бизнес.
- демо-видео (запись интерфейса) встроено на раннем слайде, отдаётся с /pitch.
- PPTX по официальному шаблону (команда 107): ресурсы, результаты, демонстрация.
- caddy: маршрут /pitch.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- POST /scan: сервис забирает новые прайсы из папки (настройка watch_folder),
журнал ingested_file исключает повторную обработку; вызывается кроном.
- GET /price-changes: услуги, где цена изменилась не меньше порога между прайсами
(детектор аномалий из ТЗ §4.4, вынесенный в интерфейс).
- GET /export.xlsx: единый сравнительный каталог услуг и цен (openpyxl).
- GET/POST /settings: папка авто-загрузки.
- админка: карточки авто-загрузки и изменений цен + кнопка экспорта.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- grid: колонки «Код …» и «№» исключены из кандидатов на колонку названий
(ключ «услуг» ловил «Код услуги») — клиника с 5181 строкой больше не даёт 0.
- vision: авто-добор PDF при пустом или подозрительно низком выходе строк/страницу,
замена недобора полным распознаванием, ретраи на лимиты, лимит размера документа.
- презентация статуса проекта на /day2; маршрут /day2 в Caddy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>