admins
|
1de66eaa85
|
feat(etl): нормализация на Gemini-эмбеддингах (API), Vision подключён
- эмбеддинги переведены с локального torch на Gemini API (лёгкий контейнер)
GeminiEmbedder: gemini-embedding-001, 768d, RETRIEVAL query/document
- фильтр настоящих названий: коды/числа не уходят в сопоставление
- порог косинуса 0.70 → ~73% автонормализации (цель ТЗ ≥70%), остальное в unmatched
- Vision (gemini-2.5-flash, новый SDK) подключён в диспетчер для скан/нулевых PDF;
проверено: Клиника 5 — 34 чистые позиции со страницы
- зависимости: убран torch/sentence-transformers, добавлен google-genai+numpy
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 17:17:06 +05:00 |
|
admins
|
efae54fbad
|
feat(etl): извлечение по форматам (агент B) — docx/xlsx/xls/pdf
- единый грид-экстрактор: поиск шапки, роли колонок, секции, N тарифов
- отсев колонок-индексов и не-цен; название по доле кириллицы
- PDF: реконструкция таблицы по координатам слов (нет линий → extract_tables пуст)
- детектор битого текстового слоя → пометка scan_pdf для Vision
- проверено на реальном архиве: 6/8 клиник нативно, 15599 позиций; 2 файла → Vision
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 15:40:27 +05:00 |
|
admins
|
a6a6609c48
|
feat: Фаза 0 — каркас, контракты, загрузчик справочника
- db/migrations/001_init.sql — схема (4 сущности, prices jsonb, pgvector/pg_trgm)
- contracts/models.py — общие модели (RawRow, ParsedDocument, MatchResult, *Out)
- etl/dictionary.py — загрузчик справочника (1281 услуга, нормализация)
- api/main.py — FastAPI: 7 эндпоинтов ТЗ + /stats (контракт)
- infra/ — docker-compose (pg+pgvector, api, web), Caddyfile
- scripts/proof/phase0_proof.py — проверка каскада на реальных данных (35% без эмбеддингов)
- data/ в .gitignore: данные клиник в публичный репо не коммитятся
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 15:23:06 +05:00 |
|