Files
medtech-hackathon/infra/deploy/docker-compose.yml
T
admins 69a9884db5 feat(ingest+поиск): приём ZIP через интерфейс, регистронезависимый поиск, чистка очереди
- Загрузка архива (§4.1): POST /ingest распаковывает ZIP, дораспознаёт и
  догружает прайсы в базу (append). Виджет в админке. Кэш эмбеддингов справочника
  (dict_emb.npy) — догрузка считает только новый файл, эмбеддинги best-effort с
  откатом на fuzzy при сбое Gemini.
- Поиск по name_norm (lowercase): «УЗИ» и «узи» дают одинаковый результат —
  SQLite LIKE не сворачивает регистр для кириллицы.
- Фильтр названий: код-мнемоники («МОЗО.15») больше не попадают в очередь.
- /stats считается из базы — цифры на дашборде обновляются после загрузки.
- Деплой через Dockerfile (зависимости в образе, код монтируется томом).
- ruff: ядро и весь репозиторий проходят проверку.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 11:35:12 +05:00

36 lines
1.0 KiB
YAML

services:
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./site:/srv:ro
- /root/medarchive/web:/web:ro
- caddy_data:/data
- caddy_config:/config
api:
build:
context: .
dockerfile: Dockerfile
image: medarchive-api:latest
container_name: medarchive-api
restart: unless-stopped
working_dir: /app
volumes:
- /root/medarchive:/app
environment:
MEDARCHIVE_DB: /app/data/medarchive.db
# Ключ Gemini для распознавания и эмбеддингов при загрузке архива (/ingest).
# Значение — из .env рядом с этим файлом (в публичный репозиторий не попадает).
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
command: ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
volumes:
caddy_data:
caddy_config: