{ "version": 3, "updated_at": "2026-03-11", "items": [ { "id": "cse-fix", "priority": "HIGH", "area": "Backend", "title": "Google CSE Integration fixen", "status": "done", "details": "Google CSE 403 blockiert; DDG-Fallback implementiert; CSE aufgegeben", "notes": "Closed: switched to DDG", "step_hint": null }, { "id": "provider3", "priority": "HIGH", "area": "Backend", "title": "Provider 3 (Bing/SerpAPI) Option falls DDG unzureichend", "status": "open", "details": "Alternativen evaluieren falls DDG-Qualitaet nicht reicht", "notes": "Parked mit Kongress-Suche", "step_hint": null }, { "id": "live-events-ui", "priority": "HIGH", "area": "Backend", "title": "Backend Live-Suche in Kongress-UI einbinden", "status": "open", "details": "/api/events/live Endpoint in Desktop-App Kongress-Fenster integrieren", "notes": "Parked mit Kongress-Suche", "step_hint": null }, { "id": "webapp", "priority": "HIGH", "area": "Web", "title": "Browser-AZA Web-App bauen", "status": "open", "details": "Browser-AZA MVP bleibt wichtig, ist aber aktuell nachrangig hinter Desktop-EXE/Installer/Update-Strecke", "notes": "Nicht gestrichen, nur nach Prioritaet nach hinten gesetzt", "step_hint": 22 }, { "id": "webapp-shell", "priority": "HIGH", "area": "Web", "title": "MVP Web-Shell definieren", "status": "open", "details": "Eine klare Hauptseite fuer Browser-AZA mit Upload-Bereich, Ergebnisbereich und minimaler Navigation festlegen", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "webapp-auth-min", "priority": "HIGH", "area": "Web", "title": "Minimalen Zugangsschutz fuer Browser-MVP festlegen", "status": "open", "details": "Einfacher MVP-Zugang ohne Breaking Change am bestehenden Auth-Contract; X-API-Token bleibt unveraendert", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "webapp-specialty", "priority": "HIGH", "area": "Web", "title": "Fachrichtungsauswahl im Browser-MVP", "status": "open", "details": "Fachrichtung vor Upload im UI auswaehlbar machen", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "webapp-upload-flow", "priority": "HIGH", "area": "Web", "title": "Upload-Flow an /v1/transcribe anbinden", "status": "open", "details": "Audiodatei vom Browser an das bestehende Backend senden, ohne Auth-Contract zu aendern", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "webapp-result-copy", "priority": "HIGH", "area": "Web", "title": "Transkriptanzeige und Copy-Button", "status": "open", "details": "Antwort sichtbar darstellen und per Klick in die Zwischenablage kopieren", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "webapp-legal-links", "priority": "MEDIUM", "area": "Web", "title": "Support-/Privacy-/Terms-Links im MVP sichtbar machen", "status": "open", "details": "Basislinks in der Browser-Oberflaeche sichtbar platzieren", "notes": "Teil von Step 22", "step_hint": 22 }, { "id": "updates", "priority": "HIGH", "area": "Desktop", "title": "Update-System (Auto-Update/Release-Channel/Changelog)", "status": "in_progress", "details": "Desktop-EXE, lokaler Backend-Autostart und Update-Flow stehen. Jetzt zentrale Versionierung, signierte Downloads und robuster Release-Prozess vervollstaendigen", "notes": "", "step_hint": 17 }, { "id": "installer-test", "priority": "HIGH", "area": "Desktop", "title": "Installer auf Zielrechner testen", "status": "open", "details": "Praxiscomputer-Testpaket (dist/practice_test_bundle) auf Zielrechner kopieren, Installer ausfuehren, OpenAI-Key einrichten, Diktat-Kurztest durchfuehren", "notes": "Testpaket mit Anleitung und Installer bereit. Naechster physischer Schritt.", "step_hint": 17 }, { "id": "release-pipeline-local", "priority": "HIGH", "area": "Desktop", "title": "Lokale Release-Pipeline in einem Startpunkt ausfuehren", "status": "done", "details": "Build, Release Manifest, Desktop Smoke Test, Installer Build und Installer Smoke Test ueber ein gemeinsames Script orchestrieren", "notes": "Ziel: kein Ping-Pong mehr zwischen Einzelskripten", "step_hint": 17 }, { "id": "release-artifacts-report", "priority": "MEDIUM", "area": "Desktop", "title": "Release-Artefakte mit Checksums dokumentieren", "status": "done", "details": "Nach erfolgreicher Release-Pipeline JSON-Report mit Version, Dateigroessen und SHA256 fuer EXE und Installer erzeugen", "notes": "Hilft fuer Weitergabe, Upload und spaetere Signierung", "step_hint": 17 }, { "id": "publish-bundle", "priority": "MEDIUM", "area": "Desktop", "title": "Publish-Bundle fuer Release erzeugen", "status": "done", "details": "Installer, version.json und release_artifacts.json nach erfolgreicher Release-Pipeline in dist\\publish zusammenfassen", "notes": "Vorbereitung fuer Upload auf Server/Website", "step_hint": 17 }, { "id": "runtime-secret-provisioning", "priority": "HIGH", "area": "Desktop", "title": "Desktop Runtime Secret Provisioning", "status": "done", "details": "openai_runtime_config.py eingefuehrt. Backend/Desktop nutzen zentrale Runtime-Config. Installer bringt kein hartkodiertes Secret mit. Setup-Helfer fuer Praxiscomputer mitgeliefert.", "notes": "Naechster Schritt: auf Praxiscomputer validieren", "step_hint": 17 }, { "id": "desktop-local-backend-autostart", "priority": "HIGH", "area": "Desktop", "title": "Lokales Backend aus der EXE automatisch starten", "status": "done", "details": "1-Klick-Praxistest funktioniert: Desktop-App startet lokales Backend automatisch, wartet auf Erreichbarkeit und lokaler Smoke-Test ist gruen", "notes": "Teil von Step 17 abgeschlossen", "step_hint": 17 }, { "id": "billing-invoices", "priority": "HIGH", "area": "Billing", "title": "Rechnungen/Invoices sauber (Stripe, Tax/VAT)", "status": "open", "details": "Stripe Settings, Invoice Branding, Rechnungsfluss CH/EU, Tax/VAT", "notes": "", "step_hint": 23 }, { "id": "downloadable-app", "priority": "HIGH", "area": "Desktop", "title": "Downloadbares Programm bereitstellen (Installer/Signing)", "status": "open", "details": "Installer/Packaging, Signierung, Website Download, Release Notes", "notes": "", "step_hint": 17 }, { "id": "admin-tools", "priority": "MEDIUM", "area": "Infra", "title": "Admin/Support-Tools (Logs, Diagnostics)", "status": "open", "details": "Zentrale Logs, Diagnostics-Dashboard, Support-Zugang", "notes": "", "step_hint": 24 }, { "id": "legal-basics", "priority": "MEDIUM", "area": "Legal", "title": "Datenschutz/Impressum/Terms Basics", "status": "open", "details": "Privacy Policy, Impressum, AGB/Terms of Service, Cookie Banner", "notes": "", "step_hint": 23 }, { "id": "observability", "priority": "MEDIUM", "area": "Infra", "title": "Observability: Structured Logs, Error Reporting", "status": "open", "details": "Strukturiertes Logging, Error/Exception Reporting, Alerting", "notes": "", "step_hint": 24 }, { "id": "domain-brand", "priority": "MEDIUM", "area": "Product", "title": "Domain/Name/Branding festlegen", "status": "open", "details": "Produktname, Domain registrieren, Branding Assets", "notes": "Relevant fuer Browser-AZA und Sell-Ready", "step_hint": 22 }, { "id": "translator", "priority": "LOW", "area": "Desktop", "title": "Uebersetzer-Funktion ausbauen", "status": "open", "details": "Aktuell provisorisch implementiert, vollstaendig ausarbeiten", "notes": "", "step_hint": null }, { "id": "med-interactions", "priority": "LOW", "area": "Desktop", "title": "Medikamenten-Interaktionscheck verbessern", "status": "open", "details": "Websuche als Fallback verbessern, mehr Datenquellen anbinden", "notes": "", "step_hint": null }, { "id": "roadmap-graph", "priority": "LOW", "area": "Desktop", "title": "Roadmap-Tab Erweiterungen (optionaler Graph)", "status": "open", "details": "Visuelle Darstellung der Roadmap als Gantt/Graph (nice-to-have)", "notes": "", "step_hint": null } ] }