531 lines
32 KiB
JSON
531 lines
32 KiB
JSON
{
|
||
"project": "AZA Medical AI Assistant",
|
||
"phase": "4-Wochen-Go-Live-Sprint (Ziel: verkaufsbereit bis ca. 22. April 2026)",
|
||
"current_step": 16,
|
||
"last_completed": 17,
|
||
"next_step": 16,
|
||
"last_update": "4-Wochen-Go-Live-Fokus gesetzt. AZA soll in 4 Wochen verkaufsbereit sein. Hostpoint/WooCommerce ist der operative Pfad. Hetzner ist NICHT der kritische Hauptblock fuer diesen Go-Live. Woche 1: WooCommerce/Stripe/Testkauf. Woche 2: Installer/Aktivierung/Erststart. Woche 3: Produktdarstellung/Signing. Woche 4: End-to-End-Test/Go-Live-Freigabe.",
|
||
"updated_at": "2026-03-25",
|
||
"workspace": {
|
||
"project_root": "C:\\Users\\surov\\documents\\aza",
|
||
"current_working_folder": "C:\\Users\\surov\\documents\\aza\\backup 24.2.26",
|
||
"note": "All commands and scripts should assume this root unless explicitly changed."
|
||
},
|
||
"notes": [
|
||
"Browser-basiertes AZA ist Kern des Projekts und nicht optional.",
|
||
"Step 22 wird verbindlich nach browser_aza_mvp_spec.md umgesetzt.",
|
||
"Kongress/CSE Thema ist geparkt (Google CSE 403 / DDG volatil). Fokus jetzt: Go-Live.",
|
||
"Preismodell: Subscription (monatlich + Jahreslizenz 17% guenstiger). KEIN Einmalkauf.",
|
||
"PRODUKTNAME – AKTUELLE RICHTUNG: AZA Office. Bevorzugte Langform: 'AZA Office – Ihr medizinischer KI-Arbeitsplatz fuer die Praxis'. Zweite gute Variante: 'AZA Office – Die KI-Assistenz fuer medizinische Dokumentation'. Noch nicht zwingend final juristisch/brand-strategisch entschieden, aber aktuelle bevorzugte Naming-Richtung fuer WooCommerce/Website/Download/Go-Live/Produktdarstellung. FRUEHERE SHORTLIST (AZA Desktop): (1) Die KI-Loesung fuer medizinische Dokumentation, (2) KI-gestuetzte Praxisdokumentation fuer Aerzte, (3) Ihre Plattform fuer medizinische KI-Dokumentation, (4) Ihr medizinischer KI-Arbeitsplatz fuer die Praxis, (5) Die KI-Assistenz fuer medizinische Dokumentation, (6) Medizinische KI fuer Aerzte und Praxen. KRITISCH: 'von Aerzten' eher nicht verwenden.",
|
||
"Architektur: Hostpoint = Website/Marketing/WordPress/Kadence. Hetzner = spaetere App/Backend/Browser-AZA.",
|
||
"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 ist NUR temporaere interne Uebergangsloesung fuer Tests.",
|
||
"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.",
|
||
"ARCHITEKTUR – OpenAI-Key-Strategie: Zielzustand ist serverseitige Key-Verwaltung. App/Desktop und spaetere Browser-App sprechen nur mit AZA-Backend, AZA-Backend spricht mit OpenAI. Kunden erhalten keinen direkten OpenAI-Key. Aktuelle lokale Key-Eingabe pro Installation ist Uebergangsloesung, nicht fuer Vertrieb.",
|
||
"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.",
|
||
"Workspace root path fixed: C:\\Users\\surov\\documents\\aza",
|
||
"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.",
|
||
"Token wird im Header X-API-Token gesendet.",
|
||
"NICHT Authorization: Bearer verwenden.",
|
||
"Keine Tokens loggen."
|
||
]
|
||
},
|
||
"project_phase_assessment": {
|
||
"phase": "4-Wochen-Go-Live-Sprint (verkaufsbereit bis ca. 22. April 2026)",
|
||
"status_A": "Desktop-App ist bereits weit fortgeschritten und grundsaetzlich benutzbar",
|
||
"status_B": "Es gibt aber noch einzelne kritische Restthemen / Produktisierungsbloecke",
|
||
"status_C": "Wir sind NICHT mehr in der Ideenphase",
|
||
"status_D": "Wir sind aber auch noch NICHT bei 'breit ausrollen ohne Restpruefung'",
|
||
"status_E": "Arbeitsphase = Pre-Go-Live / Produktisierung / letzte technische Haertung"
|
||
},
|
||
"go_live_sprint": {
|
||
"title": "4-Wochen-Go-Live-Sprint",
|
||
"goal": "AZA in 4 Wochen verkaufsbereit machen",
|
||
"start": "2026-03-25",
|
||
"target": "ca. 2026-04-22",
|
||
"operative_plattform": "Hostpoint (WordPress/WooCommerce/Stripe). Hetzner ist NICHT der kritische Hauptblock.",
|
||
"wochenplan": {
|
||
"woche_1": "WooCommerce / Stripe / Produkt / Checkout / Download / Testkauf vorbereiten",
|
||
"woche_2": "Installer / Aktivierung / Erststart sauber machen",
|
||
"woche_3": "Produktdarstellung / Bilder / Texte / E-Mail-Fluss / Signing-Entscheidung",
|
||
"woche_4": "End-to-End-Test / letzte Blocker / Go-Live-Freigabe"
|
||
}
|
||
},
|
||
"priority_order": {
|
||
"description": "4-Wochen-Go-Live-Prioritaeten – strikt in dieser Reihenfolge",
|
||
"1_hoechste": "Kauf / WooCommerce / Stripe / Checkout / Download (Woche 1)",
|
||
"2_hoch": "Installer / Aktivierung / erster Start (Woche 2)",
|
||
"3_mittel": "Produktseite / Bilder / Beschreibung / E-Mail-Fluss / Signing-Entscheidung (Woche 3)",
|
||
"4_hoch": "End-to-End-Testkauf / letzte Blocker / Go-Live-Freigabe (Woche 4)",
|
||
"5_nur_blocker": "Kritische Desktop-Blocker NUR gezielt wenn sie den Kundenweg real verhindern",
|
||
"explizit_nachrangig": [
|
||
"Update-Komfort / separater Auto-Updater",
|
||
"Grosse Web-App-/Backend-Ausbaustufe",
|
||
"Hetzner als neuer Pflichtblock fuer den aktuellen Go-Live",
|
||
"Grosse Refactors / Architektur-Spielereien"
|
||
],
|
||
"hostpoint_vs_hetzner": "Hostpoint bleibt fuer den 4-Wochen-Verkaufsweg der primaere operative Pfad. Hetzner ist NICHT der kritische Hauptblock. Keine neue Hetzner-Baustelle eroeffnen wenn sie den Verkaufsstart verzoegert."
|
||
},
|
||
"working_principles": {
|
||
"description": "Verbindliche Arbeitsweise fuer die naechsten Chats",
|
||
"rules": [
|
||
"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"
|
||
]
|
||
},
|
||
"next_main_block": {
|
||
"title": "Woche 1: WooCommerce-Grundkonfiguration + Stripe-Testkauf",
|
||
"goal": "7 Admin-Schritte in WordPress/WooCommerce ausfuehren. Danach Woche 2-4 gemaess 4-Wochen-Go-Live-Sprint.",
|
||
"status": "in_arbeit",
|
||
"sprint_context": "Teil des 4-Wochen-Go-Live-Sprints (Ziel: verkaufsbereit bis ca. 22. April 2026). Hostpoint ist operativer Pfad.",
|
||
"blocker_rule": "Falls offene Desktop-Blocker den Kundenweg real verhindern, duerfen diese vorher gezielt einzeln behoben werden – aber nur als Blocker-Fix, nicht als neue Baustellenwelle.",
|
||
"prerequisite_done": [
|
||
"Aktivierungsschluessel-Bridge implementiert: gueltiger AZA-Key setzt jetzt Vollmodus",
|
||
"Trial-Dialog: Benutzer sieht beim ersten Start den Aktivierungsstatus klar (Testversion aktiv / Resttage / Key-Eingabe)",
|
||
"Aktivierungsdialog-UX: Fenstergroesse robust (540x520), Resize-Griff, DPI-sicher"
|
||
]
|
||
},
|
||
"customer_journey_analysis": {
|
||
"date": "2026-03-24",
|
||
"kauf": {
|
||
"status": "offen",
|
||
"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).",
|
||
"next": "Code-Signing-Zertifikat beschaffen (vor breiter Auslieferung)"
|
||
},
|
||
"aktivierung": {
|
||
"status": "bridge_implementiert",
|
||
"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"
|
||
},
|
||
"erster_start": {
|
||
"status": "teilweise",
|
||
"detail": "Funktional, aber OpenAI-API-Key ist groesste Kundenhuerde. Setup-Helfer vorhanden.",
|
||
"next": "Langfristig serverseitige Key-Verwaltung (kein eigener OpenAI-Key fuer Kunden)"
|
||
}
|
||
},
|
||
"first_customer_workflow": {
|
||
"description": "Realistischer erster Kundenweg (manuell, vor Hetzner-Deploy)",
|
||
"steps": [
|
||
"1. Kunde kauft ueber WooCommerce/Stripe auf aza-medwork.ch",
|
||
"2. WooCommerce liefert Download-Link (E-Mail + Mein-Konto-Seite)",
|
||
"3. Kunde laedt aza_desktop_setup.exe herunter und installiert",
|
||
"4. App startet mit 21-Tage-Testphase (kein Key noetig)",
|
||
"5. Entwickler generiert AZA-Key: python aza_activation.py YYYY-MM-DD",
|
||
"6. Entwickler sendet Key per E-Mail an Kunden",
|
||
"7. Kunde gibt Key im Aktivierungsdialog ein",
|
||
"8. App laeuft im Vollmodus (Bridge: AZA-Key → license_mode=active)",
|
||
"9. Kunde richtet OpenAI-API-Key ein (Setup-Helfer fuehrt durch)"
|
||
],
|
||
"manual_steps_by_developer": [
|
||
"Key generieren: python aza_activation.py 2027-03-31",
|
||
"Key per E-Mail an Kunden senden",
|
||
"Spaeter automatisieren via Hetzner-Backend + Stripe-Webhooks"
|
||
]
|
||
},
|
||
"open_focus_blocks": [
|
||
{
|
||
"id": "FB-A",
|
||
"title": "Kauf-/Download-/Installationsweg sauber festziehen",
|
||
"description": "WooCommerce / Stripe / Download / Installer / Aktivierung – End-to-End aus Kundensicht",
|
||
"priority": "HOECHSTE"
|
||
},
|
||
{
|
||
"id": "FB-B",
|
||
"title": "Kritische Desktop-Restfehler nur gezielt und einzeln behandeln",
|
||
"description": "Keine neuen Monsterpatches. Root-cause-first. Installierten Build hoeher gewichten als Code-Behauptungen.",
|
||
"priority": "HOCH"
|
||
},
|
||
{
|
||
"id": "FB-C",
|
||
"title": "Windows-Kundenauslieferung absichern",
|
||
"description": "Signing-Readiness vorbereitet. Produktives Signing vor Kundenauslieferung noch offen. Smart App Control / Reputation / Publisher-Konsistenz beachten.",
|
||
"priority": "MITTEL"
|
||
},
|
||
{
|
||
"id": "FB-D",
|
||
"title": "Update-Verbesserungen bewusst nachgelagert",
|
||
"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",
|
||
"WooCommerce-Produkt + Stripe-Integration sauber machen",
|
||
"Installer-Datei als WooCommerce-Download hochladen",
|
||
"Testkauf im Stripe-Testmodus (monatlich + jaehrlich)",
|
||
"Download → Installation → Aktivierung → erster Start verifizieren",
|
||
"Stripe auf Live-Modus umschalten",
|
||
"Produktseite auf Home verlinken"
|
||
],
|
||
"completed_items": [
|
||
"Desktop-App als EXE gebaut",
|
||
"Lokales Backend startet automatisch mit der Desktop-App",
|
||
"Lokaler Desktop-Smoke-Test ist gruen",
|
||
"Installer/Packaging mit Inno Setup gebaut",
|
||
"Desktop Runtime Secret Provisioning eingefuehrt",
|
||
"Default Opacity auf 1.0 korrigiert",
|
||
"Praxiscomputer-Testpaket erstellt (Installer, Anleitung, Checkliste, Rueckmeldebogen)",
|
||
"Update-Check gegen release/version.json verdrahtet",
|
||
"APPDATA-Persistence-Fix: Benutzerdaten unter %APPDATA%\\AZA Desktop statt Program Files",
|
||
"Release-Pipeline nach APPDATA-Fix erneut validiert (Build+Smoke+Installer gruen)",
|
||
"Praxiscomputer-Testpaket mit neuem Installer aktualisiert",
|
||
"AZA-Startseite/Launcher mit Modulauswahl und Auto-Open eingefuehrt",
|
||
"Launcher auf 6 Module erweitert (KI, KG, Audio-Notizen, Uebersetzer, MedWork Chat, Praxis Chat)",
|
||
"Woechentliches Login statt taeglich",
|
||
"App-Ablaufdatum 30.04.2026 eingebaut",
|
||
"Aktivierungsschluessel-System fuer Geraetesteuerung (aza_activation.py)",
|
||
"Praxiscomputer-Testpaket auf neuen Stand aktualisiert (6 Module, Aktivierung, Wochenlogin)",
|
||
"OpenAI-Key-Einrichtung professionalisiert: Setup-Helfer als Standardweg, Fallback auf Config-Datei",
|
||
"Premium-UI: Launcher und Setup-Dialog im Medizinprodukt-Design, keine technischen Begriffe in Nutzerdialogen",
|
||
"Uebersetzer-Modul: Tkinter-Threading-Bug behoben (eigener Tk-Mainloop im Hauptthread statt Thread)",
|
||
"Audio-Notizen-Modul: identischer Fix (direkter Start im Hauptthread)",
|
||
"Integrierter Systemstatus/Selbsttest: 12 Pruefpunkte, Diagnose-Kopieren, Praxiscomputer-Validierung",
|
||
"Praxiscomputer-Testpaket: Systemstatus in Anleitung, Checkliste und Rueckmeldung nachgezogen",
|
||
"Windows-Firewall-Fix: Installer legt minimale Regel (localhost:8000) an, Nutzerhinweis bei Backend-Fehler",
|
||
"Release-Pipeline erneut validiert (Build+Smoke+Installer gruen, Firewall-Regel im ISS, Publish-Bundle sauber)",
|
||
"Praxiscomputer-Testpaket auf finalen Stand aktualisiert (Installer, paketinfo, Checkliste, Rueckmeldung)",
|
||
"Firewall-Regel-Pruefung im integrierten Systemstatus (check_firewall_rule in aza_firewall.py)",
|
||
"Systemstatus Backend-Erkennung gefixt: Fallback auf lokale URL (127.0.0.1:8000) wie desktop_backend_autostart",
|
||
"Systemstatus Lizenz-Fix: X-Device-Id Header mitsenden (fehlte, daher device_enforcement=denied)",
|
||
"Systemstatus Aktivierung-Fix: check_app_access() gibt Tuple zurueck, nicht Dict",
|
||
"Systemstatus Lizenz-Token-Pfad-Fix: Im frozen Build _internal statt exe_dir durchsuchen (wie basis14.py)",
|
||
"Hauptfenster UX-Feinschliff: Tooltips fuer alle Toolbar-Buttons, Backend-Status entechnisiert, Beschriftungen professionalisiert",
|
||
"Launcher-Icons: Canvas-gezeichnete Vektor-Icons (Sparkle, Clipboard, Mikrofon, Dokumente, Netzwerk, Chat)",
|
||
"Kauf-zu-Download-Flow: Success-Seite, Landing-Page mit Pricing/Checkout, Download-Seite, reale Domain-URLs",
|
||
"Live-Deployment-Readiness: CORS-Middleware, Dockerfile backend_main:app, Caddyfile Static+API, Stripe-URLs produktionsreif, PRODUCTION_CONFIG.md",
|
||
"Deploy-Stack lokal verifiziert: 7/7 Routen gruen (Health, Download-API, Success, Cancel, Landing, Download-Page, version.json), CORS-Preflight OK",
|
||
"v1.0.0 Produktdefinition erstellt (deploy/PRODUCT_V1.md)",
|
||
"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.",
|
||
"WooCommerce-Produkttexte vorbereitet (deploy/WOOCOMMERCE_PRODUCT.md)",
|
||
"Infrastruktur-Analyse: Hostpoint WordPress+Kadence+WooCommerce online (deploy/INFRA_STATUS.md)",
|
||
"Autotext Root-Cause-Fix: _is_admin NameError behoben, Listener auf bewaehrten Stand (Kopie 13) zurueckgesetzt",
|
||
"Deinstallation: Inno Setup fragt bei Deinstallation ob Benutzerdaten geloescht werden sollen (Standard: Nein, Daten bleiben erhalten)",
|
||
"Signaturlogik: load_signature_name() faellt automatisch auf Profilname zurueck wenn kein expliziter Signaturname gesetzt ist",
|
||
"Rechtsklick-Haekchen im Minifenster: gleiche Option wie im Hauptfenster, synchronisiert",
|
||
"Kommentare-Fenster: Grundstruktur implementiert (TEILWEISE – Detailmodus und Live-Aktualisierung noch offen)",
|
||
"Kommentarlogik quellenstreng: Inhaltsquelle und Originallink sauber getrennt. Inhaltsquelle (Detailinhalt): DocCheck Flexikon Standard, PharmaWiki Fallback, benutzerwaehlbar + persistent. Originallink: CH=Compendium, AT=BASG, DE=BfArM unveraendert. Kuratierte Fakten als Offline-Fallback. Inline nur Indikation. Therapien separat.",
|
||
"Signatur-UI in Einstellungen: Haekchen 'Profilname verwenden' + Feld fuer abweichenden Signaturnamen",
|
||
"Briefstil-Lernen: DOCX-Upload, GPT-Stilanalyse, persistente Stilprofile, Integration vor Briefgenerierung (TEILWEISE – Erweiterungen offen)",
|
||
"Persistenz-Patch: KI-Einwilligung beim Erststart, Profil+Code persistent, Kommentare-Toggle, Einstellungen gruppiert, Deinstallations-Frage erweitert",
|
||
"Uebersetzer-Stabilitaetsfix: Root Cause Tkinter-in-Thread behoben, jetzt Toplevel-Embedded-Modus statt Threading",
|
||
"Vordefinierte Briefprofile: KISIM Bericht + Klinischer Bericht als auswaehlbare Berichtsprofile im Brief-Fenster",
|
||
"AZA Clean Uninstall/Reset Tool: PowerShell-Script fuer saubere Deinstallation/Reset ohne Neustart (tools/aza_clean_uninstall.ps1, AZA_Deinstallieren.bat)",
|
||
"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)",
|
||
"Monsterpatches oder breite Umbauaktionen"
|
||
],
|
||
"architecture": {
|
||
"hostpoint": "Oeffentliche Website, Marketing, WordPress, Kadence, WooCommerce, Stripe-Checkout, Download-Auslieferung",
|
||
"hetzner": "Reserviert fuer spaetere Browser-AZA App, KI-Backend, API. Subdomain app.aza-medwork.ch geplant.",
|
||
"rule": "Hostpoint bleibt Haupt-Website. Hetzner wird NICHT fuer die Haupt-Website verwendet. Keine DNS-Aenderungen ohne klare Pruefung."
|
||
}
|
||
},
|
||
"step_22_deliverables": [
|
||
"browser_aza_mvp_spec.md",
|
||
"Browser-Seite mit Upload-Bereich",
|
||
"Fachrichtungsauswahl vor Upload",
|
||
"Request-Flow an /v1/transcribe unter Beibehaltung von X-API-Token",
|
||
"Ergebnisansicht fuer Transkript",
|
||
"Copy-Button fuer Transkript",
|
||
"Support/Privacy/Terms sichtbar"
|
||
],
|
||
"step_22_acceptance_checks": [
|
||
"Seite laedt im Browser",
|
||
"Fachrichtung kann ausgewaehlt werden",
|
||
"Audio kann hochgeladen werden",
|
||
"Backend /v1/transcribe antwortet erfolgreich",
|
||
"Transkript wird sichtbar angezeigt",
|
||
"Copy-Button funktioniert",
|
||
"Keine Secrets/Tokens im UI oder Log"
|
||
],
|
||
"phases": [
|
||
{
|
||
"id": 1,
|
||
"title": "Core Desktop + Backend",
|
||
"items": [
|
||
{ "title": "Step 13: Smoke Suite PASS", "status": "done" },
|
||
{ "title": "Step 14: Docker/Compose Smoke PASS", "status": "done" }
|
||
]
|
||
},
|
||
{
|
||
"id": 2,
|
||
"title": "Live Congress Search (PARKED)",
|
||
"items": [
|
||
{ "title": "CSE JSON API Zugriff stabil", "status": "paused" },
|
||
{ "title": "Backend Live-Suche in Kongress-UI", "status": "paused" },
|
||
{ "title": "Filter/UX News & Kongresse", "status": "paused" }
|
||
],
|
||
"why_paused": [
|
||
"Google CSE: 403 not authorized / Access/Billing unklar",
|
||
"DDG scraping volatil (Bot block / 0 results / Response-Laenge sehr kurz)"
|
||
]
|
||
},
|
||
{
|
||
"id": 3,
|
||
"title": "Go-Live / Productization",
|
||
"items": [
|
||
{ "title": "Step 15: Caddy/HTTPS + Reverse Proxy Vorbereitung", "status": "done" },
|
||
{ "title": "Step 17: Desktop-App + Installer + Kauf-/Download-Flow (Code-komplett)", "status": "done" },
|
||
{ "title": "Step 16: Go-Live extern (VPS, DNS, Stripe, Secrets, Deploy)", "status": "in_progress" },
|
||
{ "title": "Step 22: Browserbasiertes AZA (MVP) - nach Go-Live", "status": "open" },
|
||
{ "title": "Step 18: Website/Landing + Download-Page + Rechnungen/Belege (Billing/Invoice Flow)", "status": "done" },
|
||
{ "title": "Step 19: Support/Telemetry minimal (ohne PHI), Crashlogs optional", "status": "done" },
|
||
{ "title": "Step 20: Final Security pass (rate limit, request caps, audit)", "status": "done" }
|
||
]
|
||
},
|
||
{
|
||
"id": 4,
|
||
"title": "Sell-Ready Pack",
|
||
"items": [
|
||
{ "title": "Step 21: Steps/Status/Roadmap/To-Dos konsolidiert", "status": "done" },
|
||
{ "title": "Step 23: Billing & Legal sell-ready", "status": "open" },
|
||
{ "title": "Step 24: Ops/Monitoring/Runbook final", "status": "open" },
|
||
{ "title": "Step 25: Go-Live Cutover", "status": "open" }
|
||
]
|
||
}
|
||
],
|
||
"next_actions": [
|
||
"ERLEDIGT: Aktivierungsschluessel-Bridge implementiert (AZA-Key → Vollmodus)",
|
||
"ERLEDIGT: Trial-Dialog zeigt Aktivierungsstatus klar beim ersten Start",
|
||
"ERLEDIGT: Aktivierungsfenster-UX gefixt (540x520, Resize-Griff, DPI-robust)",
|
||
">>> AKTUELLER BLOCK: WooCommerce-Grundkonfiguration in WordPress-Admin <<<",
|
||
"WC-1: WooCommerce Grundeinstellungen: Land=Schweiz, Waehrung=CHF",
|
||
"WC-2: Fehlende Seiten anlegen: Checkout + Mein Konto, in WooCommerce zuweisen",
|
||
"WC-3: Plugins installieren: WooCommerce Stripe Gateway + Flexible Subscriptions",
|
||
"WC-4: Stripe-Testmodus konfigurieren (pk_test_ + sk_test_)",
|
||
"WC-5: 9 Demo-Produkte loeschen",
|
||
"WC-6: AZA-Produkt anlegen (Subscription, Monats- + Jahresabo, Installer-Download)",
|
||
"WC-7: E-Mail-Absender konfigurieren (AZA MedWork / info@aza-medwork.ch)",
|
||
"DANACH: Testkauf im Stripe-Testmodus durchfuehren",
|
||
"DANACH: Bei Erfolg: Stripe auf Live-Modus umschalten"
|
||
],
|
||
"todos": [
|
||
{
|
||
"id": "A-01",
|
||
"priority": "SOFORT",
|
||
"status": "in Arbeit",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Hostpoint-Website stabil lassen",
|
||
"description": "Keine riskanten Domain-/DNS-Experimente. Bestehende WordPress/Kadence-Seite bleibt Haupt-Website auf Hostpoint.",
|
||
"area": ["ops", "infra"]
|
||
},
|
||
{
|
||
"id": "A-02",
|
||
"priority": "SOFORT",
|
||
"status": "offen",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Stripe Live-Setup sauber fertigstellen",
|
||
"description": "Stripe-Keys (Live) in WooCommerce eintragen, Webhooks konfigurieren, Zahlungsmethoden aktivieren.",
|
||
"area": ["billing", "ops"]
|
||
},
|
||
{
|
||
"id": "A-03",
|
||
"priority": "SOFORT",
|
||
"status": "offen",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Live-Secrets pruefen",
|
||
"description": "deploy/.env: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, MEDWORK_API_TOKEN. Keine Secrets in Code oder Logs.",
|
||
"area": ["security", "ops"]
|
||
},
|
||
{
|
||
"id": "A-04",
|
||
"priority": "SOFORT",
|
||
"status": "offen",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Deploy-Stack finalisieren",
|
||
"description": "Docker Compose, Caddy, Backend auf Hetzner fuer spaeteren App-Betrieb. Haupt-Website bleibt auf Hostpoint.",
|
||
"area": ["ops", "infra"]
|
||
},
|
||
{
|
||
"id": "A-05",
|
||
"priority": "SOFORT",
|
||
"status": "offen",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Testkauf Ende-zu-Ende durchfuehren",
|
||
"description": "Stripe-Testmodus: Subscription monatlich + jaehrlich kaufen, Download-Link pruefen, E-Mail pruefen, Mein-Konto pruefen.",
|
||
"area": ["product", "billing"]
|
||
},
|
||
{
|
||
"id": "A-06",
|
||
"priority": "SOFORT",
|
||
"status": "offen",
|
||
"group": "A – Go-Live extern",
|
||
"title": "Download-/Lizenzfluss live validieren",
|
||
"description": "Installer herunterladen, installieren, Aktivierung, Lizenzpruefung, Backend-Anbindung – alles End-to-End.",
|
||
"area": ["product", "release"]
|
||
},
|
||
{
|
||
"id": "B-01",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "B – Verkauf / Subscription",
|
||
"title": "Subscription in Website/Checkout konsistent abbilden",
|
||
"description": "Monatlich CHF 89 + Jahreslizenz CHF 886 (17% guenstiger). WooCommerce Subscriptions Plugin oder Stripe Billing. Pricing auf Produktseite, Checkout, E-Mails konsistent.",
|
||
"area": ["product", "billing"]
|
||
},
|
||
{
|
||
"id": "B-02",
|
||
"priority": "HOCH",
|
||
"status": "erledigt",
|
||
"group": "B – Verkauf / Subscription",
|
||
"title": "Pricing-Texte und Lizenztexte festziehen",
|
||
"description": "deploy/PRODUCT_V1.md und deploy/WOOCOMMERCE_PRODUCT.md auf Subscription-Modell aktualisiert. Nicht mehr aendern, sondern verwenden.",
|
||
"area": ["product", "legal"]
|
||
},
|
||
{
|
||
"id": "B-03",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "B – Verkauf / Subscription",
|
||
"title": "Billing / Invoices / VAT / Stripe-Rechnungslogik",
|
||
"description": "Rechnungen mit CHF, MwSt-Hinweis, korrekte Absenderadresse. Stripe Invoice-Einstellungen. AGB mit Subscription-Hinweisen.",
|
||
"area": ["billing", "legal"]
|
||
},
|
||
{
|
||
"id": "C-01",
|
||
"priority": "HOCH",
|
||
"status": "erledigt",
|
||
"group": "C – Download-Produkt",
|
||
"title": "Stabile Basisversion als erste verkaufbare Version definieren",
|
||
"description": "v1.0.0 definiert, Installer gebaut und getestet. 6 Module, Systemstatus, Launcher, Firewall-Fix.",
|
||
"area": ["release", "desktop"]
|
||
},
|
||
{
|
||
"id": "C-02",
|
||
"priority": "HOCH",
|
||
"status": "erledigt",
|
||
"group": "C – Download-Produkt",
|
||
"title": "Release-/Update-Strategie sauber machen",
|
||
"description": "Versionierung (v1.0.x / v1.x / v2.0), Update-Lieferung ueber WooCommerce-Account, Changelog als Website-Seite.",
|
||
"area": ["release", "product"]
|
||
},
|
||
{
|
||
"id": "C-03",
|
||
"priority": "MITTEL",
|
||
"status": "offen",
|
||
"group": "C – Download-Produkt",
|
||
"title": "Signierte Downloads / Versionierung / Changelog vervollstaendigen",
|
||
"description": "Code-Signing nach erstem Live-Kauf. Changelog-Seite auf Website. version.json mit korrekter Download-URL.",
|
||
"area": ["release", "security"]
|
||
},
|
||
{
|
||
"id": "D-01",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "D – Browser-AZA",
|
||
"title": "Nach Go-Live Step 22 verbindlich starten",
|
||
"description": "Browser-AZA ist Kern des Projekts. Wird nach Go-Live sofort gestartet, nicht optional.",
|
||
"area": ["web", "product"]
|
||
},
|
||
{
|
||
"id": "D-02",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "D – Browser-AZA",
|
||
"title": "Browser-AZA MVP nach Spec umsetzen",
|
||
"description": "browser_aza_mvp_spec.md: Upload-Bereich, Fachrichtungsauswahl, /v1/transcribe, Ergebnisansicht, Copy-Button.",
|
||
"area": ["web", "frontend", "backend"]
|
||
},
|
||
{
|
||
"id": "D-03",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "D – Browser-AZA",
|
||
"title": "Minimaler Zugangsschutz ohne Breaking Change",
|
||
"description": "Auth fuer Browser-AZA, ohne /license/status oder X-API-Token Contract zu brechen.",
|
||
"area": ["security", "backend"]
|
||
},
|
||
{
|
||
"id": "D-04",
|
||
"priority": "HOCH",
|
||
"status": "offen",
|
||
"group": "D – Browser-AZA",
|
||
"title": "Upload-Flow / Result-Flow / Specialty-Auswahl bauen",
|
||
"description": "Audio-Upload, Fachrichtungsauswahl, Transkript-Anzeige, Copy-Button. Keine PHI in Logs.",
|
||
"area": ["web", "frontend"]
|
||
},
|
||
{
|
||
"id": "E-01",
|
||
"priority": "SPAETER",
|
||
"status": "offen",
|
||
"group": "E – Ops / Spaeter",
|
||
"title": "Observability",
|
||
"description": "Logging, Metriken, Alerting. Kein PHI in Logs. Uptime-Monitoring.",
|
||
"area": ["ops"]
|
||
},
|
||
{
|
||
"id": "E-02",
|
||
"priority": "SPAETER",
|
||
"status": "offen",
|
||
"group": "E – Ops / Spaeter",
|
||
"title": "Admin-/Support-Tools",
|
||
"description": "Admin-Panel, Support-Workflows, Nutzer-Management.",
|
||
"area": ["ops", "product"]
|
||
},
|
||
{
|
||
"id": "E-03",
|
||
"priority": "SPAETER",
|
||
"status": "offen",
|
||
"group": "E – Ops / Spaeter",
|
||
"title": "Runbook final",
|
||
"description": "Backups, Log-Rotation, Incident-Playbook, Token-Rotation.",
|
||
"area": ["ops"]
|
||
},
|
||
{
|
||
"id": "E-04",
|
||
"priority": "SPAETER",
|
||
"status": "offen",
|
||
"group": "E – Ops / Spaeter",
|
||
"title": "Go-Live Cutover final",
|
||
"description": "Finale Checkliste, Rollback-Plan, DNS-Cutover fuer Browser-AZA (app.aza-medwork.ch).",
|
||
"area": ["ops", "product"]
|
||
}
|
||
]
|
||
}
|