Платформа квестів для сімейних лікарів. Лікар веде чат-анамнез з AI-пацієнтом, замовляє лабораторні тести, ставить діагноз — отримує оцінку 100 балів + бренд-релевантний продукт. 4 інстанси на спільному движку у Docker public stack, кожен з власним набором кейсів.
Single subdomain → 4 path-routed variants:
| Variant | URL | Cases | Stage |
|---|---|---|---|
| Schönen-main (prod) | https://medetective.deltamedicalservices.online/ | 12 загальних кейсів | LIVE |
| Test | https://medetective.deltamedicalservices.online/test/ | 12 кейсів | public-facing test |
| Menopace (Vitabiotics) | https://medetective.deltamedicalservices.online/menopace/ | 6 кейсів (3 menopace-spec + 3 спільних) | M2M sales tool |
| Fables (B2B demo) | https://medetective.deltamedicalservices.online/fables/ | 1 кейс (mermaid_atlantica) | demo для нових брендів |
Старі subdomain'и (medetective-test.delta…, -menopace, -fables) — 301 redirect на новий path.
Why this exists:
KPIs (orient):
Status snapshot (2026-05-05):
Stakeholders:
| Підпроект | Бренд / use-case | Статус | URL | Wiki |
|---|---|---|---|---|
| schonen-main | Schönen / publicly demo (11 кейсів) | 🟢 Live, 85% | /med-detective/ (port 8766) |
./schonen-main/ |
| menopace | Vitabiotics Menopace / M2M sales (6 кейсів) | 🟡 Live, STT-issue | /med-detective-menopace/ (port 8768) |
./menopace/ |
| fables | Internal showcase / B2B demo (1 кейс) | 🟡 Live, strategy TBD | /med-detective-fables/ (port 8769) |
./fables/ |
| filtrum | Filtrum + CRM Creatio | 🔴 Planned, blocked | TBD subdomain | ./filtrum/ |
| test slot | blue/green rollback | internal | /med-detective-test/ (port 8765) |
(вмонтовано в umbrella) |
[Doctor browser]
│ HTTP
▼
[Caddy host-systemd] /med-detective*/* → 127.0.0.1:876{5,6,8,9}
│
▼
[FastAPI uvicorn] (host systemd, не docker)
│
├──► [Patient Agent] ┐ паралелізовано
├──► [Intent Agent] ┘ ~1.0-1.4с
│
└──► [Judge Agent] (по завершенні кейса)
scoring rubric: 40+30+15+15
│
├──► [Replicate API] meta/meta-llama-3-8b-instruct
├──► [Redis] session store, DB per form, TTL 24h
└──► [LAB catalog] 39 тестів × 6 категорій + extra_tests
prompts/patient_*.md1. Лікар відкриває URL з кейсом, бачить картку пацієнта
2. Чат-аналіз: задає питання → AI-пацієнт відповідає
3. 🆕 Замовляє обстеження через Investigation Panel (search + price/turnaround)
4. Виставляє діагноз через окрему форму
5. Judge оцінює (rubric нижче)
6. Result-екран: бал /100 + правильний діагноз + рекомендований SKU
7. (TODO Phase B) Lead-capture: email для CME-сертифікату
| Категорія | Бали | Що оцінює |
|---|---|---|
| Діагноз | 40 | правильність + конкретика |
| Анамнез | 30 | повнота розпиту |
| Продукт | 15 | релевантність призначеного SKU |
| Ефективність | 15 | стислість + доречність тестів |
<1 год ... 5 днів)extra_tests (KOH-microscopy, Thompson, patch-test...)GET /api/lab_catalog, POST /api/order_testsCaddy mapping (2026-05-01 verified):
/med-detective/ → port 8766 (prod)/med-detective-test/ → port 8765 (rollback / dev)/med-detective-menopace/ → port 8768/med-detective-fables/ → port 8769Workdir mapping (історична назва — не плутати):
/srv/projects/med-detective/ (test slot, 10 файлів)/srv/projects/med-detective-test/ (PROD! назва legacy, 12 файлів)/srv/projects/med-detective-menopace//srv/projects/med-detective-fables/⚠️ Назви workdir перевернуті щодо логічних URL через свап маршрутів 19.04. Перевіряти кожен раз через grep reverse_proxy /etc/caddy/conf.d/med-detective*.caddy.
sed -i 's|8766|8765|' /etc/caddy/conf.d/med-detective.caddy
sed -i 's|8765|8766|' /etc/caddy/conf.d/med-detective-test.caddy
systemctl reload caddy
Rollback (instant — 3 секунди): swap routes назад → systemctl reload caddy.
meta/meta-llama-3-8b-instruct (default), Gemini fallback (на Schönen-main)scripts/validate_case.py (перевіряє key_tests_to_order ∈ LAB_CATALOG ∪ extra_tests)Health-check:
curl http://31.131.26.203/med-detective/api/health
curl http://31.131.26.203/med-detective-menopace/api/health
curl http://31.131.26.203/med-detective-fables/api/health
Validate новий кейс:
cd /srv/projects/med-detective-test # prod workdir
.venv/bin/python scripts/validate_case.py backend/cases/new_case.json
/srv/research/2026-04-19/med-detective-audit.md{Сюди Scout-агент додаватиме знахідки з GitHub/HuggingFace}
/srv/wiki/med-detective/index.md — буде дeprecatedproject_med_detective.md, infra_med_detective_blue_green.md/srv/research/2026-04-19/med-detective-audit.mdfiltrum/index.md)--quick) для швидкого виконання дрібних завдань.