223 lines
8.9 KiB
JSON
223 lines
8.9 KiB
JSON
{
|
|
"version": 3,
|
|
"updated_at": "2026-03-11",
|
|
"completed": [
|
|
{
|
|
"step": 13,
|
|
"title": "Smoke Suite PASS",
|
|
"description": "Backend/Client smoke tests green.",
|
|
"files": []
|
|
},
|
|
{
|
|
"step": 14,
|
|
"title": "Docker/Compose Smoke PASS",
|
|
"description": "Container build/run + smoke suite against docker.",
|
|
"files": [
|
|
"deploy/docker_smoke.ps1"
|
|
]
|
|
},
|
|
{
|
|
"step": 18,
|
|
"title": "Website/Landing + Download-Page + Billing/Invoice Flow",
|
|
"description": "Public landing + download page reading release metadata; billing flow docs/templates.",
|
|
"files": [
|
|
"web/index.html",
|
|
"web/download.html",
|
|
"release/version.json",
|
|
"billing/BILLING_FLOW.md"
|
|
]
|
|
},
|
|
{
|
|
"step": 19,
|
|
"title": "Support/Telemetry minimal (ohne PHI)",
|
|
"description": "POST /telemetry/ping + GET /admin/telemetry/stats + rate-limit and docs.",
|
|
"files": [
|
|
"deploy/TELEMETRY.md",
|
|
"deploy/test-telemetry.ps1"
|
|
]
|
|
},
|
|
{
|
|
"step": 20,
|
|
"title": "Final Security pass",
|
|
"description": "Request caps, upload hardening, token handling consistency, audit hygiene.",
|
|
"files": [
|
|
"backend_main.py"
|
|
]
|
|
},
|
|
{
|
|
"step": 21,
|
|
"title": "Sell-Ready Konsolidierung",
|
|
"description": "Steps/Status/Roadmap/To-Dos synchronisiert; Browser-AZA als Kernprojekt festgelegt.",
|
|
"files": [
|
|
"project_status.json",
|
|
"project_roadmap.json",
|
|
"project_plan.json",
|
|
"project_todos.json"
|
|
]
|
|
}
|
|
],
|
|
"steps": [
|
|
{
|
|
"step": 22,
|
|
"title": "Browserbasiertes AZA (MVP) - zentral",
|
|
"goal": "Kleinste verkaufbare Browser-Version von AZA: Audio hochladen, über /v1/transcribe verarbeiten, Transkript direkt im Browser anzeigen und kopieren.",
|
|
"owner": "web/frontend/backend",
|
|
"status": "open",
|
|
"spec_file": "browser_aza_mvp_spec.md",
|
|
"scope": {
|
|
"in_scope": [
|
|
"Browser-UI mit einer klaren Hauptseite fuer Upload und Ergebnis",
|
|
"Minimaler Zugangsschutz (Token/License oder einfacher Login, ohne grosse Account-Plattform)",
|
|
"Fachrichtungsauswahl vor dem Upload",
|
|
"Audio-Upload an /v1/transcribe",
|
|
"Transkript im Browser anzeigen",
|
|
"Copy-to-clipboard fuer das Transkript",
|
|
"HTTPS erreichbar",
|
|
"Support-Link und Privacy/Terms sichtbar"
|
|
],
|
|
"out_of_scope": [
|
|
"Komplexes Rollen-/Rechtesystem",
|
|
"Mehrmandantenfaehige Admin-Konsole",
|
|
"Auto-Update fuer Desktop",
|
|
"Komplexe Rechnungserstellung im Browser",
|
|
"Analytics/BI Dashboard",
|
|
"Perfekte UI-Politur",
|
|
"Zusatzmodule ausserhalb des Kernflows"
|
|
]
|
|
},
|
|
"definition_of_done": [
|
|
"Browser-App ist ueber HTTPS erreichbar",
|
|
"User kann Fachrichtung waehlen",
|
|
"User kann eine unterstuetzte Audiodatei hochladen",
|
|
"Upload laeuft erfolgreich gegen /v1/transcribe mit X-API-Token/Auth-Mechanik des Projekts",
|
|
"Transkript wird im Browser sichtbar dargestellt",
|
|
"Transkript kann mit einem Klick kopiert werden",
|
|
"Fehlermeldung bei leerem/ungueltigem Upload ist benutzerverstaendlich",
|
|
"Support-Link und Privacy/Terms-Link sind sichtbar",
|
|
"Keine Secrets oder Tokens werden im Frontend oder Logs ausgegeben"
|
|
],
|
|
"deliverables": [
|
|
"browser_aza_mvp_spec.md",
|
|
"Web-Frontend fuer Browser-AZA MVP",
|
|
"Ein klarer Upload/Result-Flow",
|
|
"Dokumentierte MVP-Konfiguration fuer Zugangsschutz",
|
|
"Kurzes Runbook fuer Start/Test des Browser-MVP"
|
|
],
|
|
"acceptance_checks": [
|
|
"Browser oeffnen -> Seite laedt",
|
|
"Fachrichtung auswaehlbar",
|
|
"Audio hochladen -> Request an /v1/transcribe erfolgreich",
|
|
"Antwort wird als Transkript sichtbar",
|
|
"Copy-Button kopiert Transkript",
|
|
"Support/Privacy sichtbar",
|
|
"HTTPS aktiv"
|
|
],
|
|
"implementation_order": [
|
|
"1. Minimales Browser-UI mit Upload-Seite festlegen",
|
|
"2. Zugangsschutz fuer MVP festlegen (einfach, ohne Umbau des Auth-Contracts)",
|
|
"3. Fachrichtungsauswahl in UI einbauen",
|
|
"4. Upload-Flow an /v1/transcribe anbinden",
|
|
"5. Ergebnisansicht + Copy-Button bauen",
|
|
"6. Support/Privacy sichtbar machen",
|
|
"7. HTTPS-Staging/Deployment pruefen"
|
|
],
|
|
"non_negotiables": [
|
|
"/license/status Schema bleibt exakt",
|
|
"Auth bleibt X-API-Token",
|
|
"Keine Tokens/Secrets loggen oder im UI offen anzeigen",
|
|
"Keine Breaking Changes am bestehenden Backend-Contract ohne separaten Step"
|
|
],
|
|
"todos": [
|
|
"webapp",
|
|
"domain-brand",
|
|
"legal-basics"
|
|
]
|
|
},
|
|
{
|
|
"step": 15,
|
|
"title": "Caddy/HTTPS + Reverse Proxy Vorbereitung",
|
|
"goal": "Reverse proxy + health/license checks via proxy, prod env template/runbook.",
|
|
"owner": "ops",
|
|
"status": "in_progress"
|
|
},
|
|
{
|
|
"step": 16,
|
|
"title": "Go-Live Deployment (VPS/Büro-PC) + Webhook erreichbar + Billing OK",
|
|
"goal": "Runbook + stable prod start/stop, webhook reachable, stripe alignment, log hygiene.",
|
|
"owner": "ops",
|
|
"status": "open"
|
|
},
|
|
{
|
|
"step": 17,
|
|
"title": "Auto-Update / Installer + lokaler Backend-Autostart (Versionierung, Downloadbares Programm)",
|
|
"goal": "Installer pipeline + update check/install in desktop app using release/version.json + 1-Klick-Start mit lokalem Backend fuer Praxistests.",
|
|
"owner": "release/desktop",
|
|
"status": "in_progress",
|
|
"progress_notes": [
|
|
"Desktop-EXE wird erfolgreich gebaut",
|
|
"Lokales Backend startet automatisch aus der Desktop-App",
|
|
"Lokaler Smoke-Test gegen /license/status ist erfolgreich (valid=true)",
|
|
"Installer-Workflow mit Inno Setup ist vorbereitet (aza_installer.iss + build_installer.ps1)",
|
|
"Desktop-Update-Flow ist verdrahtet (Check, Download, Installer-Start)",
|
|
"Versionierung wird zentralisiert, damit App/Installer/Update-Manifest synchron bleiben",
|
|
"release/version.json wird aus aza_version.py erzeugt",
|
|
"Lokale Release-Pipeline wird in einem Startpunkt zusammengefuehrt (Build, Manifest, Desktop-Test, Installer, Installer-Test)",
|
|
"Release-Artefakt-Report mit SHA256-Checksums fuer EXE und Installer wird erzeugt",
|
|
"Publish-Bundle fuer Upload/Verteilung wird automatisch erzeugt",
|
|
"Desktop Runtime Secret Provisioning eingefuehrt (openai_runtime_config.py)",
|
|
"Installer-EXE erfolgreich gebaut (aza_desktop_setup.exe)",
|
|
"Installer enthaelt bewusst kein hartkodiertes OpenAI-Secret",
|
|
"Setup-Helfer fuer Praxiscomputer mitgeliefert (setup_openai_runtime.ps1)",
|
|
"Desktop Release validated: Full-Pipeline gruen (Build, Smoke, Installer, Artifacts)",
|
|
"Praxiscomputer-Testpaket erstellt (dist/practice_test_bundle)",
|
|
"Opacity-Startwert auf 1.0 korrigiert (DEFAULT_OPACITY in aza_config.py)",
|
|
"READY FOR FIELD TEST: Interner Build/Installer/Secret-Flow komplett, Blocker ist jetzt externer Feldtest"
|
|
],
|
|
"definition_of_done": [
|
|
"Desktop-App laesst sich als EXE starten",
|
|
"Lokales Backend wird fuer Praxistests automatisch gestartet oder automatisch erkannt",
|
|
"Kein manueller backend_main.py-Start noetig fuer Standard-Praxistest",
|
|
"Keine manuelle backend_url.txt noetig fuer den lokalen Standardfall",
|
|
"App wartet robust, bis das Backend erreichbar ist",
|
|
"Fehlerfall bei nicht startendem Backend ist benutzerverstaendlich",
|
|
"Update-Check gegen release/version.json bleibt kompatibel"
|
|
],
|
|
"implementation_order": [
|
|
"1. Zielarchitektur fuer lokalen Backend-Autostart festlegen",
|
|
"2. Backend-Prozess aus der Desktop-App robust starten",
|
|
"3. Auf Erreichbarkeit des lokalen Backends warten",
|
|
"4. Fehlerfall sauber anzeigen",
|
|
"5. EXE-Build so anpassen, dass der lokale Standardfall ohne Zusatzdateien funktioniert",
|
|
"6. Danach Update-Mechanik vervollstaendigen"
|
|
],
|
|
"non_negotiables": [
|
|
"/license/status Schema bleibt exakt",
|
|
"Auth bleibt X-API-Token",
|
|
"Keine Tokens/Secrets loggen",
|
|
"Keine Breaking Changes am bestehenden Backend-Contract"
|
|
]
|
|
},
|
|
{
|
|
"step": 23,
|
|
"title": "Sell-Ready Billing & Legal",
|
|
"goal": "Invoice Pflichtfelder/MWST, Terms/Privacy, support process, alignment with Stripe.",
|
|
"owner": "billing/legal",
|
|
"status": "open"
|
|
},
|
|
{
|
|
"step": 24,
|
|
"title": "Operations & Monitoring",
|
|
"goal": "Backups, log rotation, incident playbook, uptime checks, token rotation.",
|
|
"owner": "ops",
|
|
"status": "open"
|
|
},
|
|
{
|
|
"step": 25,
|
|
"title": "Go-Live Cutover",
|
|
"goal": "Final checklist, domain/DNS, HTTPS, release publish, announce, rollback plan.",
|
|
"owner": "ops/product",
|
|
"status": "open"
|
|
}
|
|
]
|
|
}
|