sparc_phase: C
project: med-detective
created: 2026-05-10
last_updated: 2026-05-10
author: Claude (post-hoc документація існуючої системи)
status: deployed
deployed_date: 2026-04-19 # перший великий рефактор + Caddy migration
last_smoke_check: 2026-05-10
legacy_baseline: true
spec_link: ./01-specification.md
pseudocode_link: ./02-pseudocode.md
architecture_link: ./03-architecture.md
refinement_link: ./04-refinement.md
Completion — Завершення: deploy, smoke, sign-off — Med Detective (umbrella)
Med Detective umbrella у production з 2026-04-18, з кількома еволюційними релізами. Цей файл фіксує поточний стан як «complete baseline». Нові великі фічі стартують власні SPARC-цикли.
Pre-deploy checklist (post-hoc, поточний стан)
- [x] Всі поточні кейси (15) проходять validate_case
- [x] Документація umbrella + 4 підпроекти у
/srv/wiki/projects/deltamedical/med-detective/
- [x] README у проектних директоріях частково (deploy-команди є в архітектурі)
- [x] Secrets у
/srv/passepartout/replicate/, /srv/passepartout/google/
- [x] systemd unit'и активні (
systemctl status med-detective*)
- [x] Caddy reverse-proxy налаштовано (4 conf.d файли)
- [ ] pytest unit-тести (TODO Q3)
- [ ] Sentry / monitoring (TODO)
Deploy log (історичний)
2026-04-18 17:00 UTC — стартовий деплой
- 4 кейси, Llama-70B, Caddy у Docker
- URL:
http://31.131.26.203/med-detective/
- Smoke: ✅
2026-04-19 09:30 UTC — Caddy migration з Docker на host-systemd
- Тригер: docker iptables incident
- Перенесено
Caddyfile → /etc/caddy/Caddyfile + drop-in conf.d/
- Smoke: ✅ (med-detective, biogaia, browser, reports — всі 200)
2026-04-19 14:00 UTC — LLM swap 70B → 8B + parallelization
- llm.py REPLICATE_DEFAULT_MODEL → meta-llama-3-8b-instruct
- asyncio.gather для Patient+Intent
- Latency p95: 15с → 1.0-1.4с
- Smoke: ✅
2026-04-19 16:00 UTC — Investigation Panel Phase A live
- Search-bar + price/turnaround
- 39 тестів × 6 категорій
- 11 кейсів зі validate_case 0 errors
2026-05-01 20:44 UTC — promote test → prod (rsync + swap)
- Backup:
med-detective.bak-pre-swap-2026-05-01T204422Z
- Caddy swap: 8765↔8766
- Smoke: ✅
2026-05-05 11:00 UTC — wiki restructure → umbrella + 4 підпроекти
- Перенесено per-form деталі у sub-folders
- Umbrella залишився як спільна архітектура
2026-05-10 — SPARC post-hoc documentation
- Цей пакет створено
- legacy_baseline=true → readiness 80% збережено
Smoke tests (поточний стан)
- [x]
curl http://31.131.26.203/med-detective/api/health → 200
- [x]
curl http://31.131.26.203/med-detective-menopace/api/health → 200
- [x]
curl http://31.131.26.203/med-detective-fables/api/health → 200
- [ ]
curl http://31.131.26.203/med-detective-test/api/health → 200
- [x] Manual UI run одного кейса з кінця в кінець (последній раз — 2026-05-10 Сергій)
Метрики успіху vs targets
| Metric |
Target Q3 2026 |
Actual (2026-05-10) |
✅/❌ |
| К-сть форм live |
5+ |
3 + 1 planned |
🟡 у процесі |
| К-сть кейсів |
30+ |
15 |
🟡 у процесі |
| Avg score лікарів |
>70/100 |
TODO виміряти |
❓ no analytics |
| Емейлів захоплено |
200+/qtr |
0 |
🔴 lead-capture не реалізовано |
| Бренд-impressions |
вимірюється з GA4 |
no data |
🔴 GA4 не підключено |
| Latency p95 |
<2с |
1.0-1.4с |
✅ |
| Compliance (БАД) |
100% Legal Gate |
100% (через Case Builder) |
✅ |
Виявлені проблеми після деплою
- fluvir-style tracking blind spot — без GA4/Custom Events не бачимо engagement metrics. Урок з Fluvir banner: у Med Detective з самого початку треба було вшивати tracking. TODO.
- STT Whisper issue (Menopace) — voice recall fail у деяких випадках. Гіпотеза: Gemini Flash Audio. Не пріоритет.
- Llama-8B русизми — рідко («Рукі»). Acceptable.
Документація
- ✅
index.md umbrella — http://31.131.26.203/reports/wiki/projects/deltamedical/med-detective/index.md
- ✅ Підпроекти:
schonen-main/, menopace/, fables/, filtrum/
- ✅ SPARC pack — цей
sparc/ (5 файлів, post-hoc 2026-05-10)
- ✅ Memory legacy:
project_med_detective.md, infra_med_detective_blue_green.md
- ✅ Audit:
/srv/research/2026-04-19/med-detective-audit.md
Lessons learned
- Не починати з 70B — premature optimization. 8B + parallelization дав latency, який 70B+sequential не дає, і якість acceptable. Урок: тестувати на спільній метриці UX (latency) перш ніж на якісних benchmarks.
- Caddy на host > Caddy у Docker — менше surface для збоїв (iptables, NAT chains). Standardized на host-systemd для всіх сервісів.
- Blue/green swap routes — найшвидший rollback — 3 секунди sed+reload. Не потребує git revert або redeploy. Для нових сервісів — взяти за стандарт.
- Health-anxiety + no-spoiler titles + gender balance — три правила, які кардинально покращили якість кейсів. Тригерилися фідбеком Сергія, виявились fundamental. Вшито в Case Builder Crew.
- Tracking з самого початку — урок з Fluvir banner. У наступних формах GA4 + custom events закладати у фазі A (Architecture), не Phase B.
Final sign-off
- [x] Сергій підтвердив: 2026-05-10 «цей проект вже задеплоєний»
- [x] readiness_pct: 80% (umbrella вже у production, але є open backlog: Lead Capture, GA4, Filtrum, нова форма)
- [x] Status: ✅ DEPLOYED (legacy_baseline)
Continuous backlog (нові SPARC-цикли)
Кожен з нижчеперелічених — окремий SPARC pipeline у власній sparc/ папці підпроекту або як модуль:
- Lead Capture (ціль: 200+ emails/qtr) — модалка перед скачуванням → Supabase → email confirm → CME PDF. Очікуваний effort: 3-4 дні.
- GA4 + Custom Events — tracking-код у frontend, page views, chat_step events, judge_completion events. Effort: 1-2 дні.
- Filtrum — public B2C форма + CRM Creatio webhook. Заблоковано на DNS+whitelist. Effort: 5-7 днів після розблокування.
- Нова форма для нового бренду — TBD scope. Шаблон: 3-агентний паттерн + Case Builder спека.
- Investigation Panel Phase B (бюджет 500₴/24h, recommended-теги, графіки) — на паузі до 11.05.