Files
medtech-hackathon/infra/deploy/README.md
T

43 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Деплой MedArchive
Контейнер API (FastAPI) за общим Caddy на Selectel KZ. Read-only поиск работает на
готовой SQLite-базе; приём ZIP через интерфейс (`/ingest`) дораспаковывает и нормализует
новые прайсы прямо на сервере, поэтому в образ включены тяжёлые зависимости (pdfplumber,
pymupdf, google-genai), а контейнеру нужен ключ Gemini.
## Раскладка на сервере
- `/root/medarchive/` — код и данные, монтируется в контейнер как `/app`:
- `api/`, `contracts/`, `etl/` — код (правки кода не требуют пересборки образа);
- `web/` — статический фронт (его же отдаёт Caddy);
- `data/medarchive.db` — собранная база, `data/quality_report.json` — отчёт сборки;
- `data/dict_emb.npy` — кэш эмбеддингов справочника (чтобы догрузка не пересчитывала его);
- `data/reference/dictionary.xlsx` — эталонный справочник услуг для нормализации.
- `/root/med-hackathon/` — каталог Caddy: `docker-compose.yml`, `Dockerfile`, `Caddyfile`,
`site/` (презентации) и `.env` с `GEMINI_API_KEY` (в публичный репозиторий не попадает).
## Шаги
1. Залить код и данные в `/root/medarchive/` (см. раскладку выше).
2. Положить `docker-compose.yml`, `Dockerfile`, `Caddyfile` в `/root/med-hackathon/`.
3. Создать `/root/med-hackathon/.env`:
```
GEMINI_API_KEY=…
```
4. Собрать образ и поднять стек:
```bash
cd /root/med-hackathon
docker compose build api
docker compose up -d
```
5. Маршруты Caddy: `/api/*` → контейнер API, `/` → фронт, `/demo` и `/day1` → презентации.
## Проверка
```bash
curl https://med.secondbrain.tools/api/health
curl https://med.secondbrain.tools/api/stats
# приём архива через интерфейс:
curl -X POST https://med.secondbrain.tools/api/ingest -F "file=@archive.zip"
```