# Integration Candidates — JARVIS Command Dashboard

**Stand:** 2026-06-13 17:01 CEST  
**Scope:** Kandidaten für die erste read-only Integration von FinanceManager und HealthManager in das JARVIS Command Dashboard.  
**Regel:** Grün = sofort read-only integrierbar; Gelb = nur mit Sanitizing/Adapter; Rot = nicht ins Gesamtdashboard bzw. nicht im MVP.

## Grundsätzliche Integrationsstrategie

1. **Startseite minimal halten**
   - Maximal 5 Attention Items.
   - Maximal 4 Modul-Karten.
   - Maximal 3 KPIs pro Karte.
   - Keine Tabellen, keine Rohdaten, keine Reportinhalte.

2. **Adapter statt Direktzugriff**
   - Jarvis Gateway spricht mit Domain-Systemen oder liest stark eingeschränkte Metadaten.
   - Frontend spricht nie direkt mit Domain-DBs, Secrets oder Dateien.

3. **Read-only first**
   - Nur GET/status/existence/counts.
   - Keine POSTs, keine Restart Buttons, keine Report-Generierung, keine Uploads.

4. **Redaction by default**
   - Pfade, Drive-Links, Dateinamen, Beträge, Laborwerte, Personen-/Institutionsdetails werden standardmäßig nicht gezeigt.

## Empfohlene Modul-Karten für MVP

### 1. FinanceManager Card

**Ampel:** Gelb insgesamt, mit grünen Teilquellen.

**KPIs max. 3:**

1. API: online/offline — aus `/api/health` (**Grün**)
2. Reviews: offene Review-Kandidaten Count — aus `/api/budget/import-status-audit` oder sanitized Command Center (**Grün/Gelb**)
3. Provider: provider status aggregate — aus `/api/provider/status` (**Grün**)

**Legacy Link:** Vue Dashboard `http://<tailscale-host>:5173` (**Grün als Link**)

**Nicht anzeigen:** Vermögen, Konto-/Portfolio-/Cash-Details, Reports, Transaktionen.

### 2. HealthManager Card

**Ampel:** Gelb insgesamt, weil aktuell kein HTTP Status API existiert.

**KPIs max. 3:**

1. Pipeline: ok/degraded/offline — Adapter aus Script-/Runtime-Verfügbarkeit (**Gelb**)
2. Reviews: offene Laborreview-Count nur als Zahl (**Gelb**)
3. Backup/Report: aktueller verschlüsselter Backup-/Reportstatus als ok/stale (**Gelb**)

**Legacy Link:** Health Dashboard v3 nur in geschützter Health-Detailseite, nicht auf globaler Startseite (**Gelb**)

**Nicht anzeigen:** Laborwerte, Symptome, PDF-/Drive-Links, Dokumentnamen, Arztberichtinhalte.

### 3. AutoShorts Card

Nicht Teil dieses Inventar-Auftrags, aber im Gesamtkonzept vorgesehen.

**Vorgeschlagene KPIs:** Queue, Review Packages, Upload Requests.  
**Ampel:** separat inventarisieren.

### 4. JARVIS System Card

Nicht tief inventarisiert in diesem Auftrag.

**Vorgeschlagene KPIs:** Gateway online, Cron errors, backup freshness.  
**Ampel:** separat inventarisieren.

## Kandidatenliste FinanceManager

| Kandidat | Quelle | Ampel | Begründung | MVP-Verwendung |
|---|---|---|---|---|
| API Liveness | `GET /api/health` | Grün | Liefert nur App, Status, Version, Mode | Modulstatus |
| Provider Status | `GET /api/provider/status` | Grün | Explizit sanitized, keine Secrets | KPI Provider |
| Runtime Status | `GET /api/runtime/status` | Gelb | Enthält DB-Pfad; nur boolean/redacted nutzen | DB verfügbar, runtime_outside_repo, write_mode |
| System Status | `GET /api/system/status` | Gelb | Enthält Ports/last_restart; Logs/Pfade kürzen | Backend/Frontend running |
| Import Status Audit | `GET /api/budget/import-status-audit` | Grün/Gelb | Amount-free Counts, aber Quell-/Qualitätslabels prüfen | Review Count, Import Health |
| Finance Command Center | `GET /api/overview/finance-command-center` | Gelb | Enthält nützliche Counts, aber auch Beträge/Labels | Nur extrahierte Counts nach Allowlist |
| Reports List | `GET /api/reports` | Gelb | Report-Metadaten können Pfade enthalten | Nur Count/last_generated ohne Pfad |
| Portfolio Overview | `GET /api/overview` | Gelb/Rot | Enthält Vermögenswerte | Nicht global, evtl. geschützte Detailansicht |
| Cash Summary | `GET /api/cash/summary` | Rot global | Konten/Beträge | Nicht MVP global |
| Crypto/Equity Positions | `GET /api/crypto/positions`, `/api/equity/positions` | Rot global | Positionen lassen Vermögen/Strategie erkennen | Nicht MVP global |
| Report File Fetch | `GET /api/reports/files/{path}` | Rot | Direkter Datei-/Reportzugriff | Nicht integrieren |
| System Restart | `POST /api/system/restart-*` | Rot | Side effects | Deaktiviert bis Preview/Confirm/Audit |
| Market Update | `POST /api/market/*/update-*` | Rot | Provider Calls/Mutation | Deaktiviert |
| All Confirm/Delete/Archive/Apply | diverse POST/DELETE | Rot | Mutation | Deaktiviert |

## Kandidatenliste HealthManager

| Kandidat | Quelle | Ampel | Begründung | MVP-Verwendung |
|---|---|---|---|---|
| Script/Runtime Presence | Dateisystem-Metadaten, keine Dateninhalte | Grün/Gelb | Kann ohne Rohdaten zeigen, ob Health-System installiert ist | Pipeline availability |
| Report Existence/MTime | `reports/health_dashboard.html`, `reports/arztbericht_aktuell.pdf` nur stat/mtime | Gelb | Keine Inhalte/Links; nur freshness | Report status |
| Backup Freshness | Backup-Manifest/letzter Cronstatus, ohne Dateinamen/Drive-Link | Gelb | Sehr nützlich, aber muss sanitizen | Backup KPI |
| Open Review Count | DB Count `laborwerte_staging.status` nur als Zahl | Gelb | DB-Leseadapter nötig; keine Werte/Parameter | Attention Item |
| Document Status Counts | DB Counts nach Status/Kategorie | Gelb | Keine Dateinamen/Pfade/Drive IDs | Health detail, nicht global raw |
| Apple Health Sync Status | Importfiles/DB metadaten, nur last_success/count | Gelb | Keine Raw-Werte/Dateinamen | Detail-KPI |
| YAZIO Sync Status | Cron/DB metadaten, nur last_success/count | Gelb | Keine Mahlzeiten/Notizen | Detail-KPI |
| Health Dashboard Link | Legacy Link | Gelb | Kann sensible Charts/Links enthalten | Geschützte Health Detailseite |
| Doctor Report Link | PDF/Drive Link | Rot global | Hochsensibel | Nur explizit geschützte Detailaktion später |
| Full Lab Values | DB `laborwerte` | Rot global | Medizinische Rohdaten | Nicht global |
| PDF Text / `extrahierte_inhalte` | DB `dokumente` | Rot | Arztberichte/Diagnosen | Nicht integrieren |
| Drive Links / File IDs | DB/Reports JSON | Rot | Zugriffspfad-Leak | Nicht anzeigen |
| Pipeline Commands | `health_pipeline.py dashboard`, reports, upload | Rot MVP | Schreibt Dateien / Uploads | Deaktiviert bis Preview/Confirm/Audit |

## Cross-System Attention Items — Vorschlag

Die Startseite darf maximal 5 Attention Items zeigen. Priorisierung:

1. **Critical system offline**
   - Finance API offline oder Health Adapter offline.
2. **Finance reviews open**
   - Offene Finance Review-Kandidaten > 0.
3. **Health reviews open**
   - Offene Labor-/Dokumentenreviews > 0, nur Count.
4. **Backup stale/failing**
   - Health oder Finance Backupstatus veraltet/fehlend.
5. **Provider degraded**
   - Finance provider status error/rate_limited/network_error.

Wenn mehr als fünf Items vorliegen, sortiert das Gateway nach Severity und zeigt nur fünf. Der Rest bleibt in Moduldetails. Startseite bleibt Cockpit, nicht Mülldeponie mit Neon.

## Prioritätenliste für erste technische Umsetzung

### Priorität 1 — Jarvis Repo Bootstrap, aber noch keine Domain-Mutation

- `docs/architecture.md`, `docs/security.md`, ADRs und Module Contracts anlegen.
- `.gitignore` mit harten Ausschlüssen für DBs, Reports, Exports, Secrets, OAuth.
- Basis-Projektstruktur für Frontend/Gateway erst nach Freigabe.

### Priorität 2 — Finance read-only adapter

**Warum zuerst:** FinanceManager hat bereits FastAPI-Endpunkte und klare Runtime-/Provider-Status APIs.

Minimaler Adapterumfang:

- `/api/health`
- sanitized `/api/runtime/status`
- `/api/provider/status`
- `/api/budget/import-status-audit` nur Counts

Nicht integrieren:

- Portfolio/Cash/Positionen
- Reports files
- POSTs

### Priorität 3 — Health sanitized status adapter

**Warum danach:** HealthManager hat keine HTTP API und braucht vorsichtigen Adapter.

Minimaler Adapterumfang:

- Script/runtime availability.
- Report freshness via file metadata only.
- Backup freshness via sanitized metadata only.
- Optional review count nur nach separater Sicherheitsprüfung.

Nicht integrieren:

- DB-Rohdaten
- Laborwerte
- PDFs
- Drive links
- Pipeline actions

### Priorität 4 — Dashboard Shell mit iPad UX

- Max. 4 Module Cards.
- Max. 5 Attention Items.
- Max. 3 KPIs pro Karte.
- Legacy Links nur als Links.
- Keine iframes.

### Priorität 5 — Contract Tests und Secret Safety

- Tests für Adapter-Redaction.
- Tests, dass keine verbotenen Schlüssel im JSON auftauchen: `db_path`, `drive_web_url`, `file_id`, `token`, `password`, `amount_chf` auf globaler Ebene.
- Git safety scan vor jedem Commit.

## Offene technische Fragen

1. Soll Finance global echte Beträge grundsätzlich nie zeigen oder nur hinter einem Secure Finance Detail Toggle?
2. Soll Health Review Count über direkte SQLite Count-Abfrage oder über eine neue HealthManager read-only API kommen?
3. Soll Jarvis Gateway selbst Tailscale Host/IP erkennen oder über `.env` konfiguriert werden?
4. Soll das Jarvis Dashboard Legacy Links aus statischer Config oder über Module Registry laden?
5. Soll `Gamexgit/FinanceManager` zuerst remote synchronisiert werden, da lokale Arbeitskopie drei Commits voraus ist?

## Bewusst deaktiviert

- Alle Mutationen.
- Alle Confirm-/Restart-/Generate-/Upload-Aktionen.
- Alle Report-Dateiabrufe.
- Alle Rohdatenansichten.
- iframe-Embedding.
- Public Deployment.
