267 lines
9.0 KiB
JSON
267 lines
9.0 KiB
JSON
|
|
{
|
||
|
|
"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
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|