Files
aza/AzA march 2026 - Kopie (11)/project_roadmap.json
2026-04-16 13:32:32 +02:00

170 lines
13 KiB
JSON
Raw Permalink 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": 11,
"updated_at": "2026-03-31",
"project_phase": "PRODUKTIVPFAD + BETREIBER-KONTROLLE VOLLSTAENDIG BEWIESEN kein aktiver Hauptblock",
"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": "KEIN AKTIVER HAUPTBLOCK. PRODUKTIVPFAD + BETREIBER-KONTROLLE BEWIESEN (2026-03-31). Moegliche naechste Bloecke: (1) Admin-Token-Rotation, (2) Betreiber-Runbook, (3) WooCommerce, (4) Lizenz-Lifecycle, (5) Browser-AZA. SICHERHEITSNOTIZ: AZA_ADMIN_TOKEN im Chat offengelegt, Rotation offen.",
"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: Basic (1 User) CHF 59/Monat bzw. CHF 590/Jahr. Team (2 User) CHF 89/Monat bzw. CHF 890/Jahr. 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": "done",
"milestones": [
{ "name": "B1-W1 - Backend Chat Proxy POST /v1/chat", "status": "done" },
{ "name": "B1-W2 - Desktop-App OpenAI-Calls auf Backend umstellen", "status": "done" },
{ "name": "B1-W3 - Hetzner Deploy Docker/Caddy/HTTPS/Production-Env", "status": "done" },
{ "name": "B1-W4 - E2E-Test Desktop→Backend→OpenAI + Go-Live Backend-Pfad", "status": "done" },
{ "name": "B1-W5 - Desktop lokal auf Live-Backend: realer Live-Test", "status": "done" }
]
},
{
"name": "Lizenz-/Subscription-Lifecycle + WooCommerce/Stripe Live",
"status": "in_progress",
"milestones": [
{ "name": "STRIPE-W0 - Stripe Live-Webhook stabilisiert (StripeObject/Routing/Env-Fix)", "status": "done" },
{ "name": "STRIPE-W1 - Webhook Nacharbeiten (Sandbox-Kauf erfolgreich, lookup_key-Fallback, DB bereinigt)", "status": "done" },
{ "name": "STRIPE-W2-LIVE - Echter Live-Testkauf + Storno + Refund (license_debug=canceled, 3 Bugs gepatcht)", "status": "done" },
{ "name": "STRIPE-W3 - Desktop-Lizenzpfad gegen Live-Backend validiert (canceled → Testmodus korrekt)", "status": "done" },
{ "name": "ADMIN-V1 - Admin Monitor v1 live (system_status, licenses_overview, backup_status, billing_overview)", "status": "done" },
{ "name": "ADMIN-V2 - Control Panel v2 live (license_customer_map, revenue_overview, alerts, dashboard_summary)", "status": "done" },
{ "name": "BACKUP-MON - Backup/Storage-Monitor aktiv (taegliches Backup, /host_backups gemountet)", "status": "done" },
{ "name": "LIVE-KAUF - Echter Live-Kauf CHF 59, Backend-Lizenz active, Desktop Vollmodus, current_period_end korrekt (1777652509)", "status": "done" },
{ "name": "ACTIVATION-FIX - Desktop Aktivierungs-Gate Fix: _has_remote_backend() Bypass bei Remote-Backend (RC14)", "status": "done" },
{ "name": "CPE-FIX - current_period_end-Fallback in Webhook-Handlern (RC15)", "status": "done" },
{ "name": "BETREIBER-KONTROLLE - revenue_overview mit recent_charges/recent_refunds Einzelposten (RC16)", "status": "done" },
{ "name": "SEC-TOKEN - Admin-Token-Rotation (Token im Chat offengelegt, Rotation noch offen)", "status": "open" },
{ "name": "LIC-01 - Lizenz an Subscription koppeln, Rueckfall bei Kuendigung", "status": "open" },
{ "name": "LIC-02 - WooCommerce/Stripe Live-Setup inkl. Auszahlung auf Bankkonto", "status": "open" },
{ "name": "LIC-03 - Testkauf / Zahlungsfluss validieren", "status": "open" },
{ "name": "LIC-04 - Stripe-Konto fuehrend dokumentieren, Bankkonto/Auszahlung pruefen", "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": "ADMIN-V1/V2 - Admin Monitor v1 + Control Panel v2 live (8 Endpunkte, X-Admin-Token geschuetzt)", "status": "done" },
{ "name": "BACKUP-MON - Backup/Storage-Monitor aktiv (taegliches Backup, /host_backups, alerts)", "status": "done" },
{ "name": "BETREIBER-KONTROLLE - revenue_overview mit Einzelposten (recent_charges/recent_refunds)", "status": "done" },
{ "name": "GO-LIVE EXTERN - WooCommerce/Produktiver Verkaufspfad (MOEGLICHER BLOCK)", "status": "open" },
{ "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" }
]
}
]
}