diff --git a/infra/deploy/Caddyfile b/infra/deploy/Caddyfile index 2a2a40a..877c358 100644 --- a/infra/deploy/Caddyfile +++ b/infra/deploy/Caddyfile @@ -11,6 +11,10 @@ med.secondbrain.tools { root * /srv file_server } + handle /day1* { + root * /srv + file_server + } handle { root * /web file_server diff --git a/pitch/day1/index.html b/pitch/day1/index.html new file mode 100644 index 0000000..9b1b7b5 --- /dev/null +++ b/pitch/day1/index.html @@ -0,0 +1,185 @@ + + + + + + +MedArchive — итоги дня 1 + + + + + + + + +
+
+ + +
+ ● Medtech · Terricon Valley · день 1 +

MedArchive — итоги первого дня

+

Автоматическая обработка архива прайсов клиник-партнёров.
Отчёт перед трекером · 26.06.2026

+

● работает в проде: med.secondbrain.tools

+
+ + +
+

Что сделано за день

+

Собран и развёрнут сквозной конвейер — от сырого архива до живого интерфейса.

+
+ архив (PDF/скан/DOCX/XLSX) + извлечение + нормализация + валидация + БД + API + UI сравнения +
+
+
8 871позиций извлечено
+
73,9%нормализовано авто (цель ≥70%)
+
8 / 10клиник / файлов
+
liveразвёрнуто на домене
+
+
+ + +
+

Стек технологий

+ + + + + + + + + + +
СлойРешение
ИзвлечениеPython · pdfplumber, PyMuPDF, openpyxl/xlrd, python-docx
Vision-доборGemini gemini-2.5-flash (по API)
Нормализациякаскад + эмбеддинги Gemini gemini-embedding-001
Валидацияправила ТЗ §4.4 (цена, тарифы, аномалии, версии)
ХранилищеSQLite (MVP) · PostgreSQL + pgvector (боевая схема)
APIFastAPI · 7 эндпоинтов + /stats + Swagger
Фронтодностраничный (Tailwind) · поиск и сравнение цен
ДеплойDocker (контейнер API) за Caddy · Selectel KZ
+
+ + +
+

Ключевые инженерные решения

+
    +
  • PDF без линий таблиц → реконструкция таблицы по координатам слов (стандартный парсер таблиц на этих прайсах не находит).
  • +
  • Эмбеддинги через Gemini API, а не локальный torch → контейнер лёгкий, билд быстрый, на маленьком VPS не упирается в RAM.
  • +
  • Битый текстовый слой / скан → Gemini Vision по отрисованной странице. Нативные парсеры берут чистое, Vision добирает трудное.
  • +
  • Порог косинуса 0,70 + очередь unmatched: многие услуги клиник реально отсутствуют в справочнике — отправляем их на ручную разметку, как и предполагает ТЗ.
  • +
  • SQLite для MVP (разворачивается без Docker), боевая схема Postgres+pgvector — наготове.
  • +
+
+ + +
+

Нормализация: каскад

+
+ код тарификатора + точное совпадение + эмбеддинги Gemini + нечёткое (fuzzy) + очередь unmatched +
+ + + + + + + + +
МетодПозицийКомментарий
код тарификатора1 414точное, бесплатно — где клиника указала код
точное имя167совпадение нормализованного названия
эмбеддинги4 903семантическая близость названий
fuzzy71запасной сигнал
→ авто всего6 555 (73,9%)цель ТЗ ≥70% взята
в очередь оператора2 316ручная разметка (ТЗ §4.3)
+
+ + +
+

Готовность по ТЗ

+ + + + + + + + + + + +
Раздел%Состояние
§2 Форматы на вход90PDF/скан/DOCX/XLSX/XLS + справочник
§3 Схема БД (4 сущности)80есть; БИН/город/контакты пока не извлекаются
§4.1 Загрузка архива55CLI-конвейер; загрузки ZIP в UI нет
§4.2 Извлечение по формату85работает; tracked-changes неявно
§4.3 Нормализация90каскад + порог + unmatched, 73,9%
§4.4 Валидация + верификация60валидация ✅; UI верификации неполный
§4.5 API907 эндпоинтов + /stats + Swagger
§4.6 Интерфейс70поиск+сравнение+дашборд; нет загрузки/разметки
§7 Что сдаём65БД/отчёт/OpenAPI/README ✅; слайды-каркас, видео нет
+
+ + +
+

Готовность по рубрике оценки

+ + + + + + + +
Критерий жюривессделано
Качество извлечения данных30%~85%
Нормализация и сопоставление25%~90%
Валидация и верификация20%~60%
API и поиск15%~90%
UX административного раздела10%~65%
+

≈ 80% по рубрике · общая готовность по ТЗ ≈ 75% · плюс бонус — живой деплой, которого ТЗ не требует.

+
+ + +
+

Что осталось (план дня 2)

+
    +
  • Экран верификации оператора — главный пробел (вес 20%): оригинал-фрагмент рядом с извлечённым + подтвердить / исправить / сопоставить.
  • +
  • Загрузка ZIP-архива через интерфейс (§4.1) — сейчас CLI.
  • +
  • Полный прогон Vision по трудным клиникам (3, 5, 2-2025) — больше охват и качество.
  • +
  • Упаковка к защите: слайды с цифрами, демо-видео.
  • +
  • Мелочи: извлечение БИН/города, явная обработка tracked-changes.
  • +
+
+ + +
+

День 1: сквозной продукт стоит

+

Ядро на 55% оценки (извлечение + нормализация + валидация) собрано и проверено на реальном архиве. Дальше — верификация, загрузка и упаковка.

+

med.secondbrain.tools · API: /api/docs

+
+ +
+ + + + +