"last_update":"Hetzner-Backend LIVE (2026-03-26). api.aza-medwork.ch zeigt auf 178.104.51.177. Services aza-api + aza-caddy laufen aus /root/aza-app/deploy. curl /health erfolgreich. POST /v1/chat mit X-API-Token erfolgreich (success:true, content:OK). Variante B technisch Ende-zu-Ende nachgewiesen. Naechster Block: Desktop lokal auf Live-Backend umstellen und testen.",
"Do-not-break: /license/status Format bleibt exakt. Keine Auth-Aenderungen ohne Auftrag. Keine Secrets loggen. Keine unnoetige API-Contract-Aenderungen.",
"Do-not-break: Keine riskanten DNS-/Domain-Aenderungen an aza-medwork.ch ohne klare Pruefung. Website-Chaos durch vorschnelle Umschaltung war ein Fehler.",
"Do-not-break: OpenAI-Key NIEMALS hardcoded in App einbauen. NIEMALS Shared-Key an Kunden ausliefern. Lokale Key-Eingabe wird bei Produktivauslieferung entfernt (Variante B). Secrets NIEMALS loggen.",
"Do-not-break: Audioaufnahme IMMER als M4A (AAC via ffmpeg-Pipe). NIEMALS auf WAV zurueckaendern. WAV nur als Fallback wenn ffmpeg fehlt. Diese Entscheidung ist ENDGUELTIG – wurde bereits einmal faelschlich rueckgaengig gemacht.",
"ARCHITEKTURENTSCHEIDUNG VARIANTE B (VERBINDLICH, 2026-03-25): OpenAI-Key AUSSCHLIESSLICH serverseitig im AZA-Backend. Desktop-App und spaetere Browser-App sprechen NUR mit AZA-Backend. AZA-Backend spricht mit OpenAI. KEIN OpenAI-Key in der Client-App. KEIN eigener OpenAI-Key pro Kunde als Pflicht. KEIN gemeinsamer OpenAI-Key clientseitig. KEINE halben Uebergangsloesung. KEINE Shared-Key-Bastelei. Lokale Key-Eingabe wird bei Produktivauslieferung entfernt. Hetzner wird als Server-/Backend-Pfad ernsthaft einbezogen.",
"ARCHITEKTUR – Audio: Aufnahme direkt als M4A (AAC 64kbps via ffmpeg stdin-Pipe). Kein WAV-Zwischenschritt. Deutlich kleinere Dateien, schnellerer Upload, Aufnahmen ueber 1 Stunde moeglich. Chunking in 10-Minuten-Segmente bei Bedarf.",
"Hostpoint-Website bleibt Haupt-Website. Hetzner NICHT fuer Haupt-Website verwenden.",
"SICHERHEITS-ZIELBILD – HIN-nahe Schutzprinzipien als Benchmark fuer Browser-AZA: AZA ist NICHT HIN-zertifiziert und NICHT ISO-zertifiziert. Es handelt sich um ein Sicherheits-Zielbild / Benchmark / Architekturleitlinie, KEINE Marketingbehauptung. Folgende Prinzipien gelten als Orientierung: geschlossener Vertrauensraum, verifizierte digitale Identitaet (eID), Zwei-Faktor-Authentisierung (2FA), asymmetrische Verschluesselung, S/MIME-Verschluesselung, TLS-Transportverschluesselung, digitale Signatur, technische und organisatorische Massnahmen (TOM), ISMS nach ISO/IEC 27001 als Zielbild, EPD-/IdP-nahe Vertrauens- und Identitaetslogik als Orientierung. Browser-AZA ist Kern des Projekts und soll langfristig ein hohes Schutz- und Vertrauensniveau erreichen. Sicherheitsarchitektur orientiert sich an etablierten Schweizer Gesundheitswesen-Prinzipien.",
"HANDOVER-REGEL – Sicherheitsblock: Diesen Sicherheits-Benchmark NICHT jedes Mal neu diskutieren. Bei Sicherheits-/Architekturfragen auf dieses Zielbild zurueckgreifen statt neu zu improvisieren. Keine ueberzoegenen Aussenbehauptungen zu HIN/EPD/ISO ohne tatsaechliche Zertifizierung/Integration.",
"ARCHITEKTUR – Medikamenten-Quellenlogik: Inhaltsquelle und Originallink getrennt (FIX-11). Inhaltsquellen: _fetch_doccheck_info (Standard) und _fetch_pharmawiki_info (Fallback), benutzerwaehlbar ueber _MED_CONTENT_QUELLEN / med_content_quelle. Originallink: _MED_QUELLEN / medikament_quelle (CH=Compendium, AT=BASG, DE=BfArM) unveraendert. _MEDICATION_FACTS als Offline-Fallback. Deckt alle auf DocCheck + PharmaWiki verfuegbaren Medikamente ab. Spaetere Marktprofile (DE/AT) separat.",
"ZUKUNFTSBLOCK – Internationalisierung / Laender- und Quellenprofile: NICHT fuer jetzt. Erst DACH sauber stabilisieren (CH/DE/AT), Produkt erfolgreich machen, Go-Live sichern. Danach pruefen: Mehrsprachigkeit, laenderspezifische med. Quellenprofile. Profillogik vorsehen: app_language, market_region, med_source_profile, dx_source_profile, therapy_source_profile + manueller Override durch Benutzer/Praxis. Handelsnamen, Zulassungen, Fachinfos und Verfuegbarkeit sind laenderspezifisch – deshalb spaeter Quellenprofile pro Markt statt Einheitslogik."
],
"auth_contract":{
"api_token_env":"MEDWORK_API_TOKEN",
"header_name":"X-API-Token",
"important_endpoints":[
"/license/status",
"/api/project/status",
"/v1/transcribe"
],
"notes":[
"Healthcheck und Dev Tools müssen MEDWORK_API_TOKEN verwenden.",
"title":"Desktop lokal auf Live-Backend umstellen und final testen",
"goal":"backend_url.txt auf https://api.aza-medwork.ch, backend_token.txt mit gueltigem MEDWORK-Token, AZA lokal starten, Chat-/Textpfad testen, bestaetigen dass Desktop → Hetzner → OpenAI laeuft.",
"status":"offen",
"sprint_context":"Hetzner-Backend ist live. Variante B serverseitig nachgewiesen. Jetzt Desktop-Client anbinden.",
"warum_dieser_block":"Server laeuft, aber Desktop zeigt noch auf lokales Backend. Umstellung + Test ist der letzte Schritt vor Go-Live-Freigabe.",
"scope":[
"backend_url.txt lokal auf https://api.aza-medwork.ch setzen",
"backend_token.txt lokal mit gueltigem MEDWORK-Token befuellen",
"AZA lokal starten und Chat-/Textpfad testen",
"Bestaetigen: Desktop → Hetzner → OpenAI funktioniert ohne lokalen OpenAI-Key"
"detail":"WooCommerce-Doku komplett (WORDPRESS_GOLIVE.md), aber in WordPress NICHT konfiguriert. Waehrung USD, Land US, kein Stripe Gateway, kein Subscription Plugin, Demo-Produkte vorhanden.",
"next":"WooCommerce gemaess WORDPRESS_GOLIVE.md konfigurieren (User-Aufgabe in WordPress-Admin)"
},
"download":{
"status":"teilweise",
"detail":"Download-Mechanik vorhanden (version.json, download.html). Fuer WooCommerce: Installer als Produkt-Download hochladen. URL-Inkonsistenz download vs downloads in publish-release.ps1.",
"next":"Installer-EXE in WooCommerce-Produkt hochladen"
},
"installer":{
"status":"funktional_fertig",
"detail":"Inno Setup komplett, Build-Scripts funktionsfaehig. Kein Code-Signing (SmartScreen-Warnung bei Kunden).",
"detail":"Kritischer Bruch behoben: Aktivierungsschluessel setzt jetzt Vollmodus. Erster Kundenweg: Entwickler generiert AZA-Key, sendet per E-Mail, Kunde gibt ein. DEMO_MAX_DICTATIONS=9999 entschaerft kurzfristig.",
"next":"Fuer spaetere Automatisierung: Hetzner-Backend mit Stripe-Webhooks deployen"
"detail":"Funktional, aber OpenAI-API-Key ist groesste Kundenhuerde. VARIANTE B gewaehlt: Kein eigener Key mehr fuer Kunden. App spricht mit Backend.",
"next":"B1 Backend-Sprint: POST /v1/chat Endpoint → Desktop-App umstellen → Hetzner Deploy → Kein Key-Setup mehr noetig"
"description":"Erst nach stabilem Kauf-/Download-/Installationspfad. Kein aktueller Hauptblock.",
"priority":"NACHGELAGERT"
}
],
"current_focus":{
"title":"Kauf / Download / Installation / Aktivierung – erster echter Kundenweg End-to-End",
"goal":"AZA Desktop als Subscription-Produkt (monatlich + Jahreslizenz) ueber aza-medwork.ch (Hostpoint WordPress + WooCommerce + Stripe) verkaufen. Der gesamte Weg von Kauf bis produktivem Grundbetrieb muss aus Kundensicht stabil sein. Bestehende Website NICHT beschaedigen.",
"in_progress_items":[
"Kauf-/Download-/Installationsweg End-to-End pruefen und festziehen",
"Version auf 1.0.0 gesetzt (aza_version.py, version.json)",
"Hard-Expiry auf 2027-03-31 verlaengert",
"Changelog und Installationsanleitung erstellt",
"v1.0.0 Installer gebaut und getestet (Build+Smoke+Installer gruen)",
"Signing-Readiness: sign_release.ps1 erstellt, Release-Pipeline mit optionalem Signing-Schritt, Artefakt-Report mit Signatur-Status, SIGNING_READINESS.md mit Checkliste und Zertifikats-Empfehlung",
"Publisher-/Namenskonsistenz geprueft: 3 Namensformen (AZA MedWork=Firma, AZA Desktop=Produkt, AZA Medical AI Assistant=interner Projektname). Nur AZA MedWork ist signing-kritisch. Vor Zertifikatskauf HR-Name pruefen und AppPublisher abstimmen.",
"Briefstil-Profile Fix+Nachschaerfung: KISIM/Klinischer Bericht als feste Systemprofile immer sichtbar, praezise medizinische Prompt-Definitionen, vereinheitlichtes Stilprofil-System (Haekchen+Dropdown+Standard fuer Arztbriefe) direkt im Brief-UI",
"Nachschaerfungs-Patch FIX-02: Stilprofil-Dialog nur Verwaltung (keine aktive Auswahl mehr im Dialog, nur Status+Lernen+Loeschen), Kommentare-Fenster oeffnet automatisch nach KG-Erstellung wenn Haekchen aktiv, Logo-Trennung (Wassertropfen=EXE/Desktop/Installer-Icon, originales Logo=internes Branding unten links)"
],
"non_goals_right_now":[
"Update-Komfort / separater Updater (bewusst nachgelagert, erst nach stabilem Kundenweg)",
"Browser-AZA Web-App (Step 22, nach Go-Live, aber verbindlich geplant)",
"Admin-Konsole",
"Weitere Desktop-UX-Aenderungen (keine Feature-Patches, nur Blocker-Fixes)",
"Hetzner-Server konfigurieren (erst wenn Browser-AZA dran ist)",
"Internationalisierung / Mehrsprachigkeit / Laender- und Quellenprofile (erst nach DACH-Stabilitaet und Produkterfolg)",