MVP-Scope & Slice-Plan — Medidentas
Zweck. Schärft den Weg vom Repo-Init (0.1.0) zum MVP (1.0.0): Was ist drin, in welcher
Reihenfolge, und woran erkennen wir „fertig". Ergänzt das Lastenheft (Master-Spec) um die Umsetzungs-
Sicht (vertikale Slices, Backlog, Akzeptanz). Datenmodell-Felder sind im Lastenheft §4 (Rx-F##)
kanonisch; hier referenziert.
Stack (entschieden 06-27): Cloudflare — Workers + D1 + Queues + Cron, Angular-Client, Cloudflare Access. Detail:
../architektur/Stack.md.
1. MVP-Ziel (1.0.0)
Ein:e Berater:in kann den Kunden-Lebenszyklus einer Praxis lückenlos durch das System führen — vom Anlegen über Onboarding und Dokumente bis zur Unterschrift — und das System beantwortet jederzeit die True-North-Fragen:
- Wo steht der Kunde im Prozess? 2. Was ist offen und fällig? 3. Ist alles vollständig & rechtssicher dokumentiert?
MVP-Definition: Slices 1–5 (unten) sind umgesetzt, getestet (on-demand + CI) und dokumentiert →
Versionssprung auf 1.0.0.
Status (
0.9.0): Slices 1–8 sind feature-complete (R1–R9, R12 — getestet + dokumentiert; 92 Vitest-Tests). Der Sprung auf1.0.0ist eine bewusste Meilenstein-Entscheidung und wartet nur noch auf die Deploy-Reife: echte D1-Anlage, Cloudflare-Access-Application/Policies (R7/OP-AUTH-1 ist code-seitig gebaut) und echte Integrations-Adapter (DocuSign/PandaDoc, OAuth2-NextCloud, E-Mail, Medidentas-GPT, PDF-Formularerzeugung R12/OP-DOCGEN-1) statt der MVP-Fakes/-Defaults. Bis dahin laufen die externen Integrationen über austauschbare Provider-Abstraktionen (G-1).
2. Nicht-Ziele im MVP (bewusst später)
- Dexman (Spezial-Tool, Controlling/Prognose) — erst nach dem Kern-MVP (
docs/spezialtools/Dexman.md). - Kunden-Self-Service-Portal (FR-1), Vorlagen-Bibliothek (FR-2), Reporting/Analytics (FR-3).
- Mehr-Mandanten-/Tenant-Trennung über das Nötigste hinaus (erst bei Bedarf, RISK-10).
3. Prinzip: vertikale Slices
Jeder Slice ist end-to-end (Datenmodell → Worker-API → Client-UI → Test → Doku) und liefert für sich True-North-Wert. Kein „erst alle Backends, dann alle UIs". Jeder Slice ist branch-/PR-weise (agents.md §7).
4. Slice 1 (JETZT) — Mandant + Onboarding
Liefert: True North #1 (wo steht der Kunde?) + #2 (was ist offen?) für die Onboarding-Phase. Modulbezug: R1 (Mandant) + R2 (Onboarding). Use-Case UC-1.
4.1 Was der Nutzer kann (Funktionsumfang)
- Mandant anlegen — Anzeigename + CRM-Link + Typ (
praxis/mvz); Lifecycle startet auflead/onboarding(R1-F02/F03/F04/F05). - Onboarding starten — Vorlage je Typ wählen → erzeugt die Pflicht-Items (Stammdaten/Dokumente/ Aufgaben, R2-F03/F05).
- Items abarbeiten — je Item Status setzen:
offen → angefordert → erhalten → geprüft(oderentfällt), sprechend (R2-F14, G-3). - Fortschritt sehen — „Onboarding zu X % / es fehlen: …" — abgeleitet aus den Pflicht-Items (G-2).
- Cockpit-Liste — alle Mandanten mit Status + „was fehlt" + nächster Fälligkeit (Vorstufe R5).
4.2 Lifecycle & Phase (Slice 1)
Fachliche Phase (R2-F04: stammdaten/dokumente/beratung/abschluss) wird getrennt vom
Lifecycle-Status geführt (Lastenheft §5.2) — nicht aus dem Status erraten.
4.3 Cockpit-Slice (True-North-Antworten)
| Frage | Anzeige |
|---|---|
| Wo steht der Kunde? | Mandanten-Liste mit lifecycle_status + Phase + Fortschritts-% |
| Was ist offen? | je Mandant: Liste der offenen Pflicht-Items (+ fällige zuerst) |
4.4 Technische Umsetzung (Cloudflare)
- D1-Tabellen:
mandant,onboarding,onboarding_item(Felder = Lastenheft R1/R2),schemaVersion- idempotente Migration.
- Worker-API: CRUD Mandant/Onboarding/Item; Fortschritt/„was fehlt" wird berechnet (nicht gespeichert).
- Client (Angular): Mandanten-Liste (Cockpit) + Mandant-Detail (Onboarding-Items).
- Versionierung:
APP_VERSIONinserver/src/version.ts(→0.2.0mit Slice 1), Build-Nummer auto-gestempelt; danachversion.ts-Check im Doku-Konsistenz-Skript reaktivieren.
4.5 Akzeptanzkriterien (Definition of Done) — ✅ erfüllt (0.2.0)
- Mandant anlegen/lesen/ändern über die UI; Daten in D1 persistiert (D1-Adapter) + idempotent migrierbar.
- Onboarding-Vorlage (je Typ) erzeugt Pflicht-Items; Item-Status setzbar (sprechende Labels, G-3).
- Fortschritt + „was fehlt" abgeleitet (kein gespeichertes Flag,
domain/progress.ts) und in der UI sichtbar. - Cockpit-Liste beantwortet True North #1 + #2 (Fortschritt + offene Items je Mandant).
- Tests/CI grün (server: 19 Vitest + Typecheck; client:
ng build) + Doku (HANDOFF/Lastenheft/CHANGELOG/Timesheet) gepflegt. - Keine realen PII im Repo (synthetische Beispiele); Audit-Felder (R1-F07
angelegt_am/geaendert_am) gesetzt.
Bewusst noch offen (Folge-Slices): echte D1-Anlage/
database_id+wrangler-Deploy, Cloudflare-Access /Rollen (R7/OP-AUTH-1), Audit-Log-Persistenz (R8/OP-AUDIT-1, Slice 6), generierte Drizzle-Migrationen (OP-DATA-1). Die D1-Anbindung ist über den Repo-Vertrag gekapselt; Tests laufen gegen den In-Memory-Adapter.
5. Backlog (priorisiert)
| Slice | Inhalt | True North | Module | Abhängig von | Status |
|---|---|---|---|---|---|
| 1 | Mandant + Onboarding | #1, #2 | R1, R2 | — | ✅ gebaut (0.2.0) |
| 2 | Dokumente / NextCloud — Item-Dokumente in NextCloud anfordern/ablegen, Status zurück | #2, #3 | R3, R9 | 1, OP-DOC-1 | ✅ gebaut (0.3.0) |
| 3 | Wiedervorlagen — Fälligkeiten/Erinnerungen (Cron), Fälligkeits-Cockpit | #2 | R5 | 1 | ✅ gebaut (0.6.0) |
| 4 | Unterschriften — Dokument zur E-Signatur (Provider-Abstraktion), Status, Rückablage | #3 | R4, R9 | 2, OP-SIGN-1 | ✅ gebaut (0.4.0) |
| 5 | Beratungsdokumentation — Protokoll + Textbausteine + KI-Check + Freigabe→Dokument | #3 | R6 | 1 | ✅ gebaut (0.7.0) |
| 6 | Audit-Log (quer) — append-only Event-Store auf D1 + Hash-Verkettung + Verify | #3 | R8 | 1, OP-AUDIT-1 | ✅ gebaut (0.5.0); Cold-Storage-Archiv/Restore offen |
| 7 | Identität & Rollen — Cloudflare Access + Rollenmodell + RBAC + echter Audit-Actor | alle | R7 | 1, OP-AUTH-1 | ✅ gebaut (0.8.0); Access-Policies/Deploy offen |
| 8 | Dokumenten-Automatisierung — Standarddok. aus Stammdaten befüllen/benennen/ablegen, an R4 übergeben | #2, #3 | R12 | 1, 2, 4, OP-DOCGEN-1 | ✅ gebaut (0.9.0); PDF-/Binär-Formularerzeugung offen |
| 9 | Meeting-Doku & Aufgaben — Transkriptions-Tool anbinden, Protokoll → Aufgaben/Delegation, kundenverknüpft | #2 | R11 | 1, OP-MEET-1 | offen (Workshop-Prio 1) |
| später | Dexman (Spezial-Tool) | eigener Zweck | R10 | MVP-Kern, OP-EXT-1 | nach 1.0.0 |
Audit-Log (Slice 6) ist „quer": ab Slice 1 schreiben alle zustandsändernden Aktionen Events — der Store wird mit Slice 1 minimal angelegt und mit OP-AUDIT-1 (Retention/Archiv) ausgebaut (G-4 von Anfang).
5.1 Fachliche Workshop-Prioritäten ↔ technische Slices
Der Anwender priorisiert (Workshop 20.01.2026,
Anforderungen-Workshop-2026-01-20.md §5): (1) Meeting-Doku +
Aufgaben, (2) Kundenerfassung + Dokumenten-Automatisierung, (3) CRM-Konsolidierung, später
Dexman/MyID. Der technische Slice-Plan startet dennoch mit R1/R2 (Slice 1) als Fundament — ohne
Mandanten-/Stammdatenmodell sind weder die Automatisierung (Slice 8) noch die kundenverknüpften Aufgaben
(Slice 9) tragfähig. Die fachliche Reihenfolge bestimmt, was nach dem Fundament zuerst kommt: Slice 9
(Meeting/Aufgaben) und Slice 8 (Dokumenten-Automatisierung) rücken damit vor die rein internen
Ausbaustufen. Endgültige Slice-Reihenfolge wird vor Slice 2 mit dem Nutzer bestätigt.
6. Offene Punkte, die Slices freischalten
- Slice 2: OP-DOC-1 (NextCloud-Integrationsweg).
- Slice 4: OP-SIGN-1 (Anbieter + eIDAS-Niveau je Dokumenttyp).
- Slice 6/7: OP-AUDIT-1 (Retention/Archiv auf R2), OP-AUTH-1 (Access + Rollen).
- Quer: OP-DOMAIN-1 (Praxis-Kontext bestätigen → konkretisiert die Onboarding-Vorlagen + Beratungsdoku- Pflichtfelder).