3.2 KiB
3.2 KiB
M??? — [Titel]
Block: [Block-Name + Modul-Nr]
Pflichtenheft-Quelle: _bmad-output/pflichtenheft/blocks/blockX.md Sektion Y.Z
Ziel
[1-2 Sätze: was am Ende des Milestones funktioniert, vom User aus gesehen]
Pflichtenheft-Bezug
- [Sektion-ID] — [Kurz-Inhalt]
- [Bauprinzip-ID falls relevant]
Abhängigkeiten
- Vorbedingung: [Welche Milestones MÜSSEN davor abgeschlossen sein]
- Wird benötigt von: [Welche Milestones bauen auf diesem auf]
Out of Scope
- [Was explizit NICHT in diesem Milestone passiert]
Erfolgskriterium
[1 beobachtbares Ergebnis, das nach Abschluss verifizierbar ist]
Hinweise für Slice-Planung
- [Hinweis 1]
- [Hinweis 2]
Definition of Done — verbindlich (siehe AGENTS.md)
Dieses Milestone gilt nur dann als erledigt, wenn alle Punkte wahr sind.
Erreichbarkeit
- Sidebar-Eintrag registriert in
packages/ui-hivegrid/src/app-shell/sidebar.config.tsmit Permission-Gate (Gruppe siehedocs/INTEGRATION-CONTRACTS.md§1) — ODER explizit dokumentiert, warum nur Inline-Verlinkung aus bestehendem Modul - Route unter korrektem URL-Pattern (INTEGRATION-CONTRACTS §3)
- Breadcrumb für Detail-Routes (§4)
- Mobile-Tab-Bar-Eintrag, falls mobile-relevant (§13) — sonst explizit als „nicht mobile" dokumentiert
- Customer-Portal-Sichtbarkeit explizit konfiguriert (§14) — Default „nicht sichtbar"
Querschnitt-Wiring
- Audit läuft (auto via M001 oder manuell für Non-Prisma-Aktionen)
- Activity-Stream-Eintrag bei relevanter Aktion via
logActivity(M045) - Notifications via
notify()(M011), nicht direkt - Search-Index in
indexed-entities.tsregistriert, falls suchbar - Permission-Filter via
withTenantScope()+withPermission()(M004) - Feature-Flag-fähig (M006) — kann ohne Deploy abgeschaltet werden
Code-Layer-Disziplin
- Loader baut View-Model; UI-Component empfängt nur VM + Actions
- Keine Prisma-/Server-Imports in
packages/ui-hivegrid/** - Subframe-Output via Adapter, nicht direkt importiert
- Alle UI-Texte als i18n-Keys
Tests
- Unit-Test für VM-Builder (pure function + Zod-Schema-Validierung)
- Smoke-Test
e2e/smoke/<modul>.spec.ts(Login → Route → Hauptaktion → erwartetes UI) - Hot-Swap-Drill grün (Smoke-Test gegen
packages/ui-mock) - Visual-Regression-Snapshot der Hauptansicht (M016)
Klartext (User-facing)
- Fehler-Texte aus M002-Catalog (kein HTTP-Code im UI)
- Empty-State mit Klartext + nächster Aktion
- Loading-State mit Klartext
- Permission-Denied → 404, nicht 403
Rollback-Pfad
- Forward-Only-DB-Migration mit Inverse-SQL als Kommentar im Migration-File
- Atomic-Slice-Commits (TC-Default)
- Feature-Flag vorhanden, um das Modul ohne Deploy auszuschalten
Klick-Pfad zum Prüfen (für User)
Schritt-für-Schritt-Anleitung, wie der User die Funktion nach Abschluss findet und testet:
- [Schritt 1: einloggen als welcher User-Typ]
- [Schritt 2: welche Sidebar-Gruppe + welcher Eintrag]
- [Schritt 3: welche Aktion im UI]
- [Schritt 4: was erwartet sichtbar sein muss]