Files
aza/AzA march 2026/project_roadmap.json
2026-03-25 22:03:39 +01:00

144 lines
11 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"version": 7,
"updated_at": "2026-03-25",
"project_phase": "B1 Backend-Sprint Serverseitige OpenAI-Architektur (Variante B verbindlich)",
"b1_backend_sprint": {
"title": "B1 Backend-Sprint Variante B verbindlich",
"start": "2026-03-25",
"target": "ca. 2026-04-22",
"architekturentscheidung": "VARIANTE B: Desktop-App → AZA-Backend → OpenAI. Key nur serverseitig. Kein OpenAI-Key beim Kunden.",
"woche_1": "Backend Chat Proxy Endpoint (POST /v1/chat) + Auth + Rate Limiting",
"woche_2": "Desktop-App: alle OpenAI-Calls ueber Backend statt direkt",
"woche_3": "Hetzner Deploy: Docker/Caddy/HTTPS + Production-Env + Smoke-Tests",
"woche_4": "E2E-Test Desktop→Backend→OpenAI + Kundenweg ohne OpenAI-Key + Go-Live-Freigabe",
"hostpoint_vs_hetzner": "Hostpoint bleibt fuer Website/WooCommerce. Hetzner ist JETZT der Backend-Pfad (OpenAI-Proxy/API). Beides parallel."
},
"priority_order": {
"1_hoechste": "B1-W1: Backend Chat Proxy POST /v1/chat (Woche 1)",
"2_hoch": "B1-W2: Desktop-App OpenAI-Calls auf Backend umstellen (Woche 2)",
"3_mittel": "B1-W3: Hetzner Deploy Docker/Caddy/HTTPS (Woche 3)",
"4_hoch": "B1-W4: E2E-Test + Go-Live-Freigabe Backend-Pfad (Woche 4)",
"5_parallel": "WooCommerce/Stripe/Kauf-Weg (Hostpoint) laeuft parallel weiter",
"explizit_nachrangig": "Update-Komfort, Auto-Updater, Browser-AZA Web-App, grosse Refactors"
},
"next_main_block": "B1-W1: Backend Chat Proxy Endpoint (POST /v1/chat). Variante B verbindlich. Muster /v1/transcribe existiert.",
"working_principles": [
"Root-cause-first statt blindem Nachpatchen",
"Ein klarer Block nach dem anderen keine 10 Baustellen gleichzeitig",
"Reale installierte Builds staerker gewichten als Code-Behauptungen",
"Nicht zu frueh 'fertig' sagen",
"Desktop unterscheiden in: 1. Dev-Code, 2. neu gebauter Installer, 3. reales Verhalten im installierten Build"
],
"pricing_model": "Subscription: monatlich CHF 89 + Jahreslizenz CHF 886 (17% guenstiger). KEIN Einmalkauf.",
"product_naming": {
"current_direction": "AZA Office",
"status": "Aktuelle bevorzugte Naming-Richtung noch nicht zwingend final juristisch/brand-strategisch entschieden",
"use_for": "WooCommerce-Produkt, Website, Download-Seite, Go-Live, Produktdarstellung",
"rule": "Bei spaeteren Diskussionen diese Richtung wiederverwenden statt Namen jedes Mal neu zu erfinden",
"favorite_long": "AZA Office Ihr medizinischer KI-Arbeitsplatz fuer die Praxis",
"second_choice": "AZA Office Die KI-Assistenz fuer medizinische Dokumentation",
"earlier_shortlist_aza_desktop": {
"note": "Fruehere Favoritenliste unter dem Namen AZA Desktop durch AZA Office abgeloest",
"favorites": [
"AZA Desktop Die KI-Loesung fuer medizinische Dokumentation",
"AZA Desktop KI-gestuetzte Praxisdokumentation fuer Aerzte",
"AZA Desktop Ihre Plattform fuer medizinische KI-Dokumentation",
"AZA Desktop Ihr medizinischer KI-Arbeitsplatz fuer die Praxis",
"AZA Desktop Die KI-Assistenz fuer medizinische Dokumentation",
"AZA Desktop Medizinische KI fuer Aerzte und Praxen"
],
"critically_assessed": "'von Aerzten' eher nicht verwenden"
}
},
"architecture": "Hostpoint=Website/Marketing/WooCommerce. Hetzner=AZA-Backend/API/OpenAI-Proxy (JETZT AKTIV, nicht mehr spaeter). KEINE DNS-Aenderungen ohne Pruefung.",
"openai_key_strategy": "VARIANTE B VERBINDLICH (2026-03-25): OpenAI-Key AUSSCHLIESSLICH serverseitig. Desktop-App → AZA-Backend → OpenAI. KEIN Key beim Kunden. KEIN Shared-Key. Lokale Key-Eingabe nur Dev-Fallback.",
"audio_format_locked": "ENDGUELTIG: Aufnahme direkt als M4A (AAC via ffmpeg-Pipe). NIEMALS auf WAV zurueckaendern.",
"security_benchmark": "HIN-nahe Schutzprinzipien als Sicherheits-Zielbild fuer Browser-AZA. Geschlossener Vertrauensraum, 2FA, asymm. Verschluesselung, TLS, digitale Signatur, TOM, ISMS ISO/IEC 27001 als Benchmark, EPD-/IdP-nahe Orientierung. KEINE Zertifizierungsbehauptung reines Zielbild.",
"phases": [
{
"name": "Core Desktop + Backend",
"status": "done",
"milestones": [
{ "name": "Step 13 - Smoke Suite PASS", "status": "done" },
{ "name": "Step 14 - Docker/Compose Smoke PASS", "status": "done" }
]
},
{
"name": "B1 Backend-Sprint Serverseitige OpenAI-Architektur (VARIANTE B)",
"status": "in_progress",
"milestones": [
{ "name": "B1-W1 - Backend Chat Proxy POST /v1/chat", "status": "in_progress" },
{ "name": "B1-W2 - Desktop-App OpenAI-Calls auf Backend umstellen", "status": "open" },
{ "name": "B1-W3 - Hetzner Deploy Docker/Caddy/HTTPS/Production-Env", "status": "open" },
{ "name": "B1-W4 - E2E-Test Desktop→Backend→OpenAI + Go-Live Backend-Pfad", "status": "open" }
]
},
{
"name": "Go-Live / Productization",
"status": "in_progress",
"milestones": [
{ "name": "Step 17 - Desktop-App + Installer + Kauf-/Download-Flow (CODE-KOMPLETT)", "status": "done" },
{ "name": "Step 15 - Caddy/HTTPS Reverse Proxy", "status": "done" },
{ "name": "Step 16 - Go-Live extern (aza-medwork.ch)", "status": "in_progress" },
{ "name": "Step 22 - Browser-AZA MVP (nach Backend-Architektur)", "status": "open" },
{ "name": "Step 18 - Website + Download + Billing Flow", "status": "done" },
{ "name": "Step 19 - Support/Telemetry minimal", "status": "done" },
{ "name": "Step 20 - Final Security pass", "status": "done" }
]
},
{
"name": "Sell-Ready Pack",
"status": "in_progress",
"milestones": [
{ "name": "Step 21 - Steps/Status/Roadmap/To-Dos konsolidiert", "status": "done" },
{ "name": "Step 17a - Installer-Workflow vorbereitet", "status": "done" },
{ "name": "Step 17b - Runtime Secret Provisioning + Installer gebaut", "status": "done" },
{ "name": "Step 17c - Praxiscomputer-Testpaket ready for field test", "status": "done" },
{ "name": "Step 17d - APPDATA-Persistence-Fix + Rebuild validiert", "status": "done" },
{ "name": "Step 17e - AZA-Startseite/Launcher mit Modulauswahl", "status": "done" },
{ "name": "Step 17f - Launcher 6 Module + Woechentlicher Login + Aktivierungsschluessel + App-Ablauf", "status": "done" },
{ "name": "Step 17g - Systemstatus/Selbsttest fuer Praxiscomputer-Validierung", "status": "done" },
{ "name": "Step 17h - Windows-Firewall-Fix fuer lokales Backend", "status": "done" },
{ "name": "Step 17i - Launcher Canvas-Icons + UX-Feinschliff", "status": "done" },
{ "name": "Step 17j - Kauf-/Download-Flow (Landing, Pricing, Checkout, Success, Download)", "status": "done" },
{ "name": "Step 17k - Live-Deploy-Readiness (CORS, Dockerfile, Caddyfile, Stripe-URLs, lokal verifiziert)", "status": "done" },
{ "name": "DX - Benutzerdaten bei Deinstallation erhalten + Signatur-Fallback + Minifenster-Rechtsklick + Kommentare-Fenster", "status": "done" },
{ "name": "DX - Autotext Root-Cause-Fix (_is_admin NameError + Listener-Revert auf Kopie 13)", "status": "done" },
{ "name": "DX - Signatur-UI (Haekchen + abweichender Name) in Einstellungen", "status": "done" },
{ "name": "BSL - Briefstil-Lernen aus frueheren Word-Briefen (DOCX-Upload, Stilprofil, Integration)", "status": "done" },
{ "name": "BSL - Briefstil-Lernen Erweiterungen (strukturierte Analyse, weitere Formate)", "status": "open" },
{ "name": "PCP - Persistenz/Consent/Profil-Patch (Erststart-Consent, Code-Feld, Kommentare-Toggle, Einstellungs-Gruppierung)", "status": "done" },
{ "name": "UEB - Uebersetzer-Stabilitaetsfix (Toplevel-Embedded statt Tkinter-in-Thread)", "status": "done" },
{ "name": "BRP - Vordefinierte Briefprofile: KISIM Bericht + Klinischer Bericht", "status": "done" },
{ "name": "DX - AZA Clean Uninstall/Reset Tool (saubere Deinstallation/Reset ohne Neustart, 2 Modi)", "status": "done" },
{ "name": "BRP - Briefstil-Profile Fix: Systemprofile immer sichtbar, praezise Prompts, vereinheitlichtes Stilprofil-UI", "status": "done" },
{ "name": "FIX - Korrektur-Patch: Uebersetzer-Label, Kommentare-Fenster, Korrektur-Scrollbar, Stilprofil-Live, KG-Inline, Zentrierung", "status": "done" },
{ "name": "FIX - Nachschaerfungs-Patch: Stilprofil-Dialog nur Verwaltung, Kommentare auto-open, Logo-Trennung (Wassertropfen=Icon, Logo=Branding)", "status": "done" },
{ "name": "FIX - Quellenstrenge Kommentarlogik: Inhaltsquelle/Originallink getrennt, DocCheck Standard + PharmaWiki Fallback, benutzerwaehlbar", "status": "done" },
{ "name": "SIGNING - Signing-Readiness vorbereitet (sign_release.ps1, Pipeline-Integration, Artefakt-Report mit Signatur-Status, SIGNING_READINESS.md)", "status": "done" },
{ "name": "SIGNING - Publisher-/Namenskonsistenz analysiert (3 Namensformen identifiziert, keine echten Inkonsistenzen)", "status": "done" },
{ "name": "SIGNING - Publisher-/Firmenname final festlegen (HR-Name pruefen, vor Zertifikatskauf)", "status": "open" },
{ "name": "SIGNING - Echtes Code-Signing-Zertifikat beschaffen und produktiv aktivieren (VOR Kundenauslieferung)", "status": "open" },
{ "name": "ARCH-MED - Naechste Stufe: Caching, Robustheit, HCI-API-Evaluation", "status": "open" },
{ "name": "GO-LIVE EXTERN - Stripe/WooCommerce/Testkauf (KEINE DNS-Experimente)", "status": "in_progress" },
{ "name": "SEC - Sicherheits-Zielbild (HIN-nahe Schutzprinzipien) fuer Browser-AZA konkretisieren", "status": "open" },
{ "name": "Step 23 - Billing & Legal sell-ready (Invoices/VAT/AGB)", "status": "open" },
{ "name": "Step 24 - Ops/Monitoring/Runbook final", "status": "open" },
{ "name": "Step 25 - Go-Live Cutover", "status": "open" }
]
},
{
"name": "Zukunft / Internationalisierung (NACH DACH-Erfolg)",
"status": "geparkt",
"milestones": [
{ "name": "DACH-Markt sauber stabilisiert (CH/DE/AT) Voraussetzung", "status": "open" },
{ "name": "Profil-Architektur: app_language, market_region, med_source_profile, dx_source_profile, therapy_source_profile", "status": "geparkt" },
{ "name": "UI-Mehrsprachigkeit (z.B. franzoesische UI)", "status": "geparkt" },
{ "name": "Laenderspezifische Medikamentenquellen (Handelsnamen, Zulassungen, Fachinfos je Markt)", "status": "geparkt" },
{ "name": "Laenderspezifische Diagnose-/Therapiequellen", "status": "geparkt" },
{ "name": "Manueller Override durch Benutzer/Praxis", "status": "geparkt" }
]
}
]
}