← всі звіти · 04-refinement.md

sparc_phase: R project: med-detective created: 2026-05-10 last_updated: 2026-05-10 author: Claude (post-hoc документація існуючої системи) status: approved approved_date: 2026-05-10 legacy_baseline: true spec_link: ./01-specification.md pseudocode_link: ./02-pseudocode.md architecture_link: ./03-architecture.md

Refinement — Реалізація: TDD-цикл — Med Detective (umbrella)

Post-hoc журнал реалізації. Тут не повний TDD-цикл (TDD не велося), а підсумок реальної інженерної історії і поточних тестів.

Test infrastructure (наявна)

Тип тесту Інструмент Що покриває Запуск
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 відкрити кейс і пройти

⚠️ Що відсутнє (відомий борг):

Журнал ключових ітерацій (хронологія)

2026-04-18 — стартова реалізація

2026-04-19 — критичні fix'и

2026-04-21 — нові правила кейсів

2026-04-30 — fluvir tracking-fix learnings

2026-05-01 — promote test→prod

2026-05-03 — Investigation Panel Phase B на паузі

2026-05-05 — структура umbrella + 4 підпроекти

2026-05-10 — SPARC documentation post-hoc

Виявлені borgи реалізації

# 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 як заміна. Не пріоритет.

Performance / load

Coverage

$ pytest --cov=backend  # коли тести з'являться
TODO

Поточне реальне покриття: ~5% (тільки validate_case offline-скрипт + manual smoke).

Sign-off для переходу до C (Completion)