Every report section now gets its own landscape A4 page (or, for Dagoverzicht, one page per day) via a GlucoseReportPDF(FPDF) subclass with a real header (section title, report version, insulin/pump/sensor type from new REPORT_* env vars) and footer (page number, generation timestamp, Nightscout link) on every page, plus an original SVG icon in the header — inspired by the LibreView AGP report. New "Insulineprofiel" PDF section mirrors the dashboard page (basal bar chart, ISF/carb-ratio segments, DIA). Each Dagoverzicht day now draws the same basal/bolus/carb/target overlays as the interactive charts (matplotlib port of the Plotly helpers from #30) plus a new per-day stats block (reporting.daily_stats: avg/min/max glucose, total/basal/bolus/SMB insulin, hypo/hyper counts and durations). Builds on #29 (profile data) and #30 (overlay logic/colors).
glucose-dashboard
Dashboard van glucosedata, live opgehaald uit een Nightscout-instantie.
Meerdere pagina's (zie zijbalk): een rollend live-overzicht en een set
klinische rapportagepagina's (zie docs/requirements-reporting.md en
docs/design-reporting.md).
Instellen
-
Zorg voor een draaiende Nightscout-instantie en een API-token (Admin Tools
Manage Tokens in Nightscout — geef het token minimaal
readable-rechten) of het klassieke API secret. -
Kopieer
.env.examplenaar.enven vulNIGHTSCOUT_URL, één van de twee auth-opties, enDASHBOARD_PASSWORD_HASHin (zie het voorbeeldbestand voor hoe je die hash genereert — de dashboard-URL wordt gedeeld met het diabetesteam, dus elke pagina zit achter een wachtwoord).app.pylaadt.envzelf in (viapython-dotenv), dus dit werkt hetzelfde onder PowerShell, cmd of bash — je hoeft de variabelen niet zelf in je shell te zetten.REPORT_INSULIN_TYPE/REPORT_PUMP_TYPE/REPORT_SENSOR_TYPEzijn optioneel en puur informatief (getoond in de kop van het PDF-rapport). -
Lokaal draaien:
uv venv uv pip install -r requirements.txt --python .venv .venv\Scripts\streamlit run app.py -
Met Docker Compose:
docker compose up -ddocker-compose.ymlleest.envviaenv_file— dat bestand wordt niet meegecommit (zie.gitignore).
Tests en lint
pytest tests/ -v
ruff check .