Commit Graph

25 Commits

Author SHA1 Message Date
admins c4eab75330 fix(web+pitch): тёмный заголовок результата (коллизия text-lg) + уверенный тон деки дня 3
- web: цвет lg→flint (text-lg применялся как цвет #f5f7f9 → заголовок сравнения был невидим)
- day3: убран исповедальный тон («честная/без накрутки» намекал на прошлую накрутку),
  заменён на уверенный язык уточнения сопоставления

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 12:05:16 +05:00
admins dd7e5b8573 docs(readme): производительность §5 — замеры времени обработки
Текст (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>
2026-06-28 11:52:14 +05:00
admins 1dcc76fac0 docs(pitch): дека итогов дня 3 (к защите)
Честная нормализация 73,7%, фикс #REF! справочника, упаковка к защите,
готовность по ТЗ/рубрике, чек-лист готовности. Живёт на med.secondbrain.tools/day3/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 11:48:17 +05:00
admins afb2dc1b9e fix(dict): чистые service_id вместо Excel #REF! в справочнике
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>
2026-06-28 11:37:14 +05:00
admins 3783f1be25 feat(web): кросс-ссылка на MedPrice в шапке (лого рядом через разделитель)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:22:09 +05:00
admins dbe36d3323 fix(normalize): confidence-aware guard переобобщения → честные 73,7%
Прежний 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>
2026-06-27 19:42:21 +05:00
admins 1a4cc039b2 fix(stats): процент по всем извлечённым позициям (76,1%) — как в отчёте и деке
Дашборд считал по активным (после версионирования) и показывал 75,3% — расходилось
с презентацией. Канон — по всем извлечённым.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 15:57:08 +05:00
admins a2d3a1fa92 docs: ARCHITECTURE.md — as-built устройство системы + ссылка из README
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 15:39:56 +05:00
admins ab57fb5e82 docs(репо): демо-трейлер на главной + актуальные числа; видео встроено в PPTX
- README: превью трейлера (клик → видео) на главной, 15 086 поз. / 76,1%,
  обновлённый список возможностей API и фронта.
- PPTX (команда 107): демо-видео встроено в слайд «Демонстрация прототипа».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 15:29:38 +05:00
admins b6928564ff feat(pitch): демо-трейлер с озвучкой и субтитрами на слайде 3 лендоса
- 40с трейлер: статичные кадры продукта (поиск→сравнение→верификация→
  авто-загрузка→алерты→экспорт) синхронно с дикторской озвучкой;
- субтитры (Geologica, оранжевые акценты) по word-таймкодам Scribe;
- музыка фоном еле слышно; заменяет прежний demo.mp4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 15:24:53 +05:00
admins b7f56f6cb6 chore(pitch): /demo → редирект на /pitch (ассеты reveal остаются)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 14:13:03 +05:00
admins 32a411f079 fix(pitch): слоган — «сравнительный каталог»
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:50:36 +05:00
admins b11e09a9b0 fix(pitch): Vision-числа (15 086 / 76,1%), результаты трудных клиник, формулировки лендоса
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:45:29 +05:00
admins 9397fd1c83 feat(экспорт): второй лист «Все позиции» — полная выгрузка, включая очередь
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:35:59 +05:00
admins c1ed1962a8 feat(pitch): питч-лендос с прогрессом по дням и встроенным демо-видео + PPTX
- pitch/landing: дека для защиты (reveal) — хук, проблема, живое демо (видео),
  решение, как работает, прогресс день 1→2→3 по рубрике и по ТЗ, фишки, бизнес.
- демо-видео (запись интерфейса) встроено на раннем слайде, отдаётся с /pitch.
- PPTX по официальному шаблону (команда 107): ресурсы, результаты, демонстрация.
- caddy: маршрут /pitch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:34:07 +05:00
admins 34f75bacd3 docs(деплой): авто-загрузка из папки и крон
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:15:09 +05:00
admins 51df0aa490 feat: авто-загрузка из папки, алерты об изменении цен, экспорт каталога в Excel
- 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>
2026-06-27 13:13:38 +05:00
admins 195b8fbc5e fix(pitch): вёрстка презентации статуса — вертикальное центрирование, плотность слайдов, формулировки
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 12:51:02 +05:00
admins ac9f7fea15 feat(извлечение): надёжное распознавание колонки названий + добор трудных PDF через Vision
- grid: колонки «Код …» и «№» исключены из кандидатов на колонку названий
  (ключ «услуг» ловил «Код услуги») — клиника с 5181 строкой больше не даёт 0.
- vision: авто-добор PDF при пустом или подозрительно низком выходе строк/страницу,
  замена недобора полным распознаванием, ретраи на лимиты, лимит размера документа.
- презентация статуса проекта на /day2; маршрут /day2 в Caddy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 12:39:55 +05:00
admins 7d339dce87 docs: презентация проекта и отчёт о качестве 2026-06-27 12:15:00 +05:00
admins 8da6fa4d1d feat(infra): контейнеризация и деплой за Caddy 2026-06-27 10:30:00 +05:00
admins 969d958ec3 feat: API и веб-интерфейс — поиск, сравнение цен, экран верификации, загрузка архива 2026-06-26 22:40:00 +05:00
admins e03e70535e feat(etl): нормализация к справочнику (код→точное→эмбеддинги→fuzzy), валидация и конвейер в SQLite 2026-06-26 18:20:00 +05:00
admins 26283d5432 feat(etl): извлечение прайсов по форматам (xlsx/xls/docx/pdf) и распознавание сложных страниц через Gemini Vision 2026-06-26 15:10:00 +05:00
admins 3834e4811d chore: каркас проекта — контракты, справочник услуг, синтетические фикстуры 2026-06-26 12:30:00 +05:00