name: Session 2026-04-19 Med Detective audit + HuggingFace medical recon
description: Глибокий аудит Med Detective (6 напрямків) + HuggingFace recon для медичних marketing-проектів Deltamedical + 13 нових продуктових ідей
type: project
originSessionId: 2e8e5c8b-9467-4f27-a2ca-c84e23c5a7ed
Session 2026-04-19 ніч — Med Detective audit + HF medical
UPD 2026-04-19 ранок (06:00-06:50 UTC) — Investigation Panel MVP + 502 fix
502 інцидент: мобільний Chrome Сергія бачив 502 → потім 404 {"detail":"Not Found"}. Причина 502 — uvicorn під nohup впав після ребуту, вже виправлено systemd-юнітом. 404 — Chrome відкрив /med-detective/api (без шляху) з кешу.
Investigation Panel MVP (Сергій обрав, msg 1933):
backend/lab_catalog.py — 34 тести у 6 категоріях
POST /api/order_tests + GET /api/lab_catalog (з опц. ?session_id= для extra_tests)
- session тепер має
tests_ordered: list[str]; history підтримує role="system"
- Frontend: синя кнопка «Замовити обстеження» поруч з «Поставити діагноз», модал з tab-категоріями та checkbox-списком, результати рендеряться як system-bubble (chat-bubble-system — фіолетова смужка)
- Judge rubric перебалансовано: 45→40 діагноз, 10→15 ефективність (7 за кількість питань + 8 за доречність тестів). Total = 100 незмінний.
key_tests_to_order + test_results заповнено у 3 кейсах: case_01 (ЗАК+СРБ), case_08 (ТТГ/T4/феритин/ЕКГ/ФСГ), case_11 (DEXA/рентген/Ca/vitD/ТТГ). Інші 8 кейсів — без key_tests, judge їх ігнорує нейтрально.
Спойлер-очистка (msg 1934):
- frontend/index.html:38 і :94 — прибрано згадку «релевантний продукт Schönen» з правил і інструкцій
Лишилось з Top-5 аудиту: Groq Judge, Lead Capture, GA4, Gamification.
Решта 8 кейсів під key_tests (Phase 7 з design doc) — не пріоритет MVP, можна догнати після тестування.
Запит Сергія
Два запити у Telegram (04:42-04:46 UTC):
- Аудит Med Detective по 6 напрямках: технічний стек, UI/UX, механіка/залученість, комунікація пацієнт↔лікар, LLM моделі, маркетинг
- Reconnaissance по HuggingFace (готові моделі/датасети для медичних marketing-проектів) + 5-10 нових ідей продуктів
Результати
1. Med Detective audit
Файл: /srv/research/2026-04-19/med-detective-audit.md
Top-5 пріоритетів:
- 🟥 Groq Judge — замінити Llama-70B Replicate (15с) на Groq (~200ms)
- 🟥 Lead Capture — email modal → Supabase (зараз 0 emails)
- 🟥 GA4 + custom events — працюємо наосліп
- 🟧 Despoiler титулів case_01/case_11
- 🟧 Gamification MVP (streak, daily quest, CME PDF)
Готовність: ~55% (backend 40%, UI 70%, content 75%, marketing 10%)
Ключові проблеми:
- Сесії in-memory (Redis треба)
- uvicorn через nohup (systemd треба)
- Діагноз через JS
prompt() (архаїка)
- Gender imbalance 27% чоловіків
- Judge JSON парсинг крихкий (regex замість json_repair)
- Health-anxiety trigger не уніфіковано
2. HuggingFace medical recon
Файл: /srv/research/2026-04-19/huggingface-medical-marketing.md (40KB, 522 рядки)
Best models:
google/medgemma-1.5-4b-it — Apache 2.0, multimodal (CT/MRI/X-ray)
aaditya/Llama3-OpenBioLLM-70B — SOTA MultiMedQA 86%
BioMistral-7B — підтримує RU для KZ/UZ ринків
- ⚠️ Готової української медичної моделі немає
Best datasets:
PMC-Patients 167k кейсів (CC BY-NC-SA — треба rewrite для commerce)
multicare-cases 85k
- MIMIC-III/IV — НЕ брати (GDPR risk)
13 нових ідей продуктів (детально у файлі):
- P0: Med Detective 2.0 Visual, Pharmacy Quest, Pediatric Case Library, Phone Rehearsal (internal)
- P1: Drug Interaction Advisor, Ранковий обхід, Schönen Coach Series
- P2: B2C Symptom Checker, Literature Assistant, Аптечка школяра, OSCE Trainer
- P3: Prescription Optimizer, Visual УЗД-quest
Рекомендація
- Доробити Med Detective top-5 (~3-5 днів)
- Pharmacy Quest (прямий sell-out impact, 6-8 тижнів)
- Phone Rehearsal для медпредів (внутрішній tool)
Статус
Очікую рішення Сергія по пріоритетах.
UPD 2026-04-19 день (07:00-12:30 UTC) — Caddy migration + Investigation Panel restore + QA + promote
Проблема вранці
Msg 1942 "Тепер так" з фото ERR_CONNECTION_REFUSED. Investigation Panel на prod був зламаний після спроби атомарного rename у docker bind-mount (inode trap). Спроба rollback + docker restart оголила другу проблему: iptables DOCKER chain був зітертий, Caddy-контейнер не публікував порти.
Інфраструктурна міграція: Caddy docker → host systemd
- Why: Сергій (voice msg 1946): «щоб ці сервіси крутилися десь поруч біля тебе, а не разом з тобою». Розв'язати залежність reverse-proxy від docker/iptables.
- Як: Caddy v2.11.2 встановлено з cloudsmith apt-repo на хост. Конфіг розбито:
/etc/caddy/Caddyfile (глобальний) + /etc/caddy/conf.d/{service}.caddy (per-service). Docker caddy контейнер видалено, прибрано з /srv/docker-compose.yml.
- Upstream migration: всі мінісервіси переведено з docker gateway IP (
172.17.0.1, 172.18.0.1) на 127.0.0.1.
- Smoke: med-detective 200, biogaia 200, browser 200, reports 502 (upstream 8081 вже був down).
Blue/green для med-detective
- Why (voice msg 1954): Сергій хоче, щоб нові фічі розгортались на окремому test-інстансі, і prod-лінк
/med-detective/ (вже відданий команді лікарів на тест) не чіпався до ОК.
- Створено:
/etc/systemd/system/med-detective-test.service (port 8766, Redis DB 4, log у /var/log/med-detective-test.log)
/srv/projects/med-detective-test/ — копія коду з Investigation Panel (lab_catalog.py 34 тести, /api/order_tests, frontend модал)
/etc/caddy/conf.d/med-detective-test.caddy — route /med-detective-test/ на port 8766
- Детальний pattern: infra_med_detective_blue_green
QA-pipeline: validate_case.py
- Why (voice msg 1957): Сергій: «якщо потрібно для діагнозу якийсь конкретний аналіз, а його просто немає в списку, то напевно це не цікаво». Треба автоматичний chekcer.
scripts/validate_case.py — перевіряє:
- required fields (id/title/diagnosis/symptoms/differentials/product тощо)
- кожний
key_tests_to_order[].id є у LAB_CATALOG або extra_tests
- кожний
key_test має test_results[tid] (інакше гравець отримає DEFAULT_RESULT)
- warn: differentials без key_tests (judge пропустить шкалу нейтрально)
Medical QA by Gemini 2.5 Pro
- Файл:
/srv/research/2026-04-19/medical-advisor-cases-qa.md (234 рядки)
- Gemini проаналізував 11 кейсів + каталог, рекомендував:
- +5 у каталог:
serum_magnesium, fecal_occult_blood_test, ebv_vca_igm, total_ige, fecal_calprotectin
- extra_tests у 3 кейси: case_04 (
koh_microscopy, patch_test), case_06 (patch_test), case_10 (thompson_test)
- key_tests_to_order для 8 кейсів (02, 03, 04, 05, 06, 07, 09, 10)
- case_01: додати
total_ige до існуючих 2 тестів
- Сергій погодив повний пакет (msg 1961).
Apply + promote
- Test: оновлено lab_catalog.py (39 тестів), всі 9 кейсів з новими key_tests + test_results (plausible lab values, що підтверджують ground_truth_diagnosis і виключають diff).
- Validate: 11/11 OK, 0 errors, 0 warnings.
- Promote (msg 1963 «Давай в прод»): Варіант A — swap Caddy routes. Тепер:
/med-detective/ → port 8766 (нова версія, Redis DB 4) ✅
/med-detective-test/ → port 8765 (стара версія, Redis DB 3) ← rollback
- ⚠️ Port/DB mapping перевернуто відносно початкової схеми (memory оновлено).
Додатково
- Menopace Plus WebP завантажено з menopace.ua (
/static/products/menopace-plus.webp, 199KB) на обидва інстанси.
- Case Builder review gate дотримано: всі зміни проходили через повідомлення Сергію перед apply.
Артефакти
/srv/research/2026-04-19/medical-advisor-cases-qa.md — QA-звіт Gemini
/srv/projects/med-detective/scripts/validate_case.py — validator (копія в test)
/etc/caddy/conf.d/*.caddy — 5 per-service conf
/etc/systemd/system/med-detective-test.service — test-інстанс юніт
Рішення для наступних сесій
- Коли піде нова фіча: правити
/srv/projects/med-detective-test/ (інстанс B, port 8766). ❗ Увага: оскільки після swap /med-detective/ указує саме на 8766, зміни в test-коді одразу потраплять у прод. Перед наступним циклом треба спершу swap назад (або rsync prod→test), щоб повернути звичну схему (prod=8765).
- Перевірка поточного mapping:
grep reverse_proxy /etc/caddy/conf.d/med-detective*.caddy
- Лишається з Top-5 аудиту: Groq Judge, Lead Capture, GA4, Gamification.