69a9884db5
- Загрузка архива (§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>
36 lines
1.0 KiB
YAML
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:
|