Post-hoc журнал реалізації. Тут не повний TDD-цикл (TDD не велося), а підсумок реальної інженерної історії і поточних тестів.
| Тип тесту | Інструмент | Що покриває | Запуск |
|---|---|---|---|
| Case validation | scripts/validate_case.py |
key_tests_to_order ⊆ LAB_CATALOG ∪ extra_tests | python3 scripts/validate_case.py backend/cases/<file>.json |
| Smoke test (manual) | curl | API health + base flow | curl http://31.131.26.203/<form>/api/health |
| Кейс flow (manual) | браузер | E2E лікар-пацієнт-діагноз-judge | відкрити кейс і пройти |
⚠️ Що відсутнє (відомий борг):
llm.py (mocked Replicate)judge.py (mocked Llama)docker compose restart caddy зніс iptables DOCKER chain і поклав всі сайти. Перейшли на cloudsmith apt-repo + drop-in у /etc/caddy/conf.d/med-detective-test slot для безпечного rollback'у. Caddy маршрути міняються sed-командою + systemctl reload caddy (3 секунди revert)med-detective-test/ → med-detective/ + swap Caddymed-detective.bak-pre-swap-2026-05-01T204422Zmed-detective/ umbrella + {schonen-main, menopace, fables, filtrum}/sparc/ пакетlegacy_baseline: true (не міняти readiness через формулу)| # | Border | Severity | Mitigation |
|---|---|---|---|
| 1 | Llama-3-8B іноді даю русизми («Рукі» замість «Руки») | Medium | Acceptable обмеження моделі. Можна посилити prompt «тільки українська» — TODO |
| 2 | Workdir/URL mapping переплутано після swap'у | Low | Зафіксовано в архітектурі і коментарях у Caddy конфігах |
| 3 | Pytest unit-тестів немає | Medium | План: написати mocked Replicate + judge тести у Q3 |
| 4 | Без analytics — працюємо «наосліп» | High | TODO топ-3: GA4 + custom events |
| 5 | Lead-capture не реалізовано — 0 emails | High | TODO топ-2: Supabase + email confirmation flow |
| 6 | Гендерний дисбаланс у case_07/08 (Menopace) — 20% чоловіків | Low | Виправлено новими правилами Case Builder з 2026-04-18 |
| 7 | STT Whisper issue на Menopace recall-режим | Medium | Гіпотеза: Gemini Flash Audio як заміна. Не пріоритет. |
$ pytest --cov=backend # коли тести з'являться
TODO
Поточне реальне покриття: ~5% (тільки validate_case offline-скрипт + manual smoke).