URL: http://31.131.26.203/reports/ (index) · http://31.131.26.203/reports/<path> (рендер)
Raw text: /reports/raw/<path>
Сервіс: reports.service (systemd) → uvicorn на 127.0.0.1:8081 → Caddy /reports/* strip_prefix + reverse_proxy.
Код: /srv/reports/server.py (FastAPI + markdown-it-py). Venv — /srv/reports/.venv/.
Whitelist source dirs (SOURCES у server.py):
"" → /srv/reports/ (кладімо туди звіти вручну)"crewai/" → /srv/projects/crewai-content/reports/ (всі CrewAI брифи автоматично видні за /reports/crewai/<file>.md)"research/" → /srv/research/ (всі research-звіти, рекурсивний — доступ /reports/research/<date>/<file>.md)Index рекурсивний (rglob) — показує всі .md з усіх SOURCES, сортовано по mtime desc.
How to apply: коли Сергій просить лінк на звіт чи бриф — віддавай через цей hub, а не Telegram-файл. Сергій явно сказав 2026-04-20 що не читає MD-файли — Reports Hub = default канал доставки (див. feedback_report_delivery.md). Новий source dir → додай у SOURCES dict + restart reports.service. Стиль тотожний Med Detective (OKLCH + Geist) — можна показувати клієнтам без сорому.