# HealthManager

Code-, Skript- und Workflow-Repository für das JARVIS Gesundheitsmanagement-System.

Aktueller privater Dashboard-Stand: **Sprint 7A / Dashboard v5 Release Candidate**. V5 enthält fokussierte Ansichten für Heute, Cockpit, Explorer/Zusammenhänge, Ernährung, Arzt/Gesundheitsakte, Dokumentprüfung sowie Kalender/Tag. Lokale ECharts-/FullCalendar-Assets, serverautoritatives Zürich-Datum, strikte Missingness-, Provenienz-, Auth-/Session-/Origin-/CSRF-Verträge und die getrennte Action-Inbox/Worker-Grenze bleiben verbindlich.

**Dashboard v4 bleibt unverändert als geschützter Fallback erreichbar.** Sprint 7A führt weder Redirect noch Abschaltung oder Löschung von v4 durch. Eine Umschaltung von v5 auf die Primärroute benötigt eine separate ausdrückliche Nutzerfreigabe nach manueller RC-Abnahme. Aktueller Funktions- und Gate-Stand: `docs/dashboard_v4_v5_parity.md`, `docs/dashboard-v5-acceptance-matrix.md` und `docs/sprint7a-v5-release-candidate.md`.

## Wichtig: Datenschutz

Dieses Repository enthält **keine** Gesundheitsdatenbank, keine PDFs, keine Rohdokumente und keine Credentials.

Enthalten sind nur:

- Health-Pipeline-Skripte
- Cron-/Sync-Skripte
- Datenbankschema ohne Daten
- Workflow- und Restore-Dokumentation
- Health-Management Skill-Dokumentation

Die produktive Datenbank und Hermes-Konfiguration werden separat **verschlüsselt** nach Google Drive gesichert.

## Struktur

```text
scripts/health/                 Health-Pipeline, Dashboard, Reports, Apple Health Import
scripts/cron/                   Automatisierte Sync-/Backup-Jobs
database/schema.sql             SQLite-Schema ohne Patientendaten
database/integrity_check.txt    Letzter Integritätsstatus der produktiven DB
docs/                           Workflow-Dokumentation
skills/health-data-management/  Operatives Wissen / Runbook
```

## Architektur

Die aktuelle Gesamtarchitektur einschließlich Datenflüssen, Komponenten, Datenschutzgrenzen, Automatisierungen, Backup/Restore und Dashboard-Betrieb ist dokumentiert unter:

- [`docs/architecture.md`](docs/architecture.md)
- [`docs/sprint0-safety.md`](docs/sprint0-safety.md) – Credential-, Import- und Laborwarnungs-Härtung
- [`docs/sprint1-apple-health-analytics-v2.md`](docs/sprint1-apple-health-analytics-v2.md) – kanonische Apple-Health-Aggregation, Coverage und Missingness
- [`docs/sprint2-multimodal-correlations-v1.md`](docs/sprint2-multimodal-correlations-v1.md) – sichere, phasenstratifizierte Hypothesenschicht über Apple Health, Ernährung, Symptome, Medikation und validierte Laborwerte

## Produktive Pfade

Auf der Hermes/JARVIS Maschine:

```text
~/.hermes/assets/Gesundheit/health_data.db
~/.hermes/assets/Gesundheit/scripts/
~/.hermes/assets/Gesundheit/reports/
~/.hermes/scripts/
```

## Dashboard-Service

Das generierte Health Dashboard wird durch einen reboot-festen systemd-User-Service ausgeliefert. Das versionierte Template liegt unter `deploy/systemd/health-dashboard.service`.

```bash
mkdir -p ~/.config/systemd/user
cp deploy/systemd/health-dashboard.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now health-dashboard.service
curl -fsS http://127.0.0.1:8014/health-dashboard >/dev/null
```

## Backup-Konzept

- GitHub: Code, Skripte, Doku, Schema ohne Daten
- Google Drive: verschlüsseltes Wochenbackup mit DB + Hermes Quick Backup
- Keine unverschlüsselten Gesundheitsdaten in Git

Wöchentliches Backup-Skript:

```bash
python3 ~/.hermes/scripts/weekly_health_drive_backup.py
```

Hermes Cronjob:

```text
04918ca83019 — sonntags 23:55
```

## Restore grob

1. Verschlüsseltes Google-Drive-Backup herunterladen.
2. Mit lokaler GPG-Passphrase entschlüsseln.
3. `health/health_data.db` nach `~/.hermes/assets/Gesundheit/health_data.db` kopieren.
4. Skripte aus `health/scripts` und `hermes/scripts` wiederherstellen.
5. Hermes Quick Backup aus `hermes_quick_backup.zip` mit `hermes import` einspielen.
6. `sqlite3 health_data.db 'PRAGMA integrity_check;'` prüfen.

## Sicherheitsregel

Vor jedem Commit prüfen:

```bash
git status --short
grep -RInE 'github_pat_|ghp_|GITHUB_TOKEN|OPENAI_API_KEY|ANTHROPIC_API_KEY|GOG_KEYRING_PASSWORD|password|passphrase|token' . --exclude-dir=.git
```

Wenn etwas davon echte Secrets enthält: **nicht committen**. Eine geradezu revolutionäre Idee, ich weiss.
