Files
HiveGrid-Wireframes/hivegrid-cloud/docs/milestones/_TEMPLATE.md
T

81 lines
3.2 KiB
Markdown

# 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.ts` mit Permission-Gate (Gruppe siehe `docs/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.ts` registriert, 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:
1. [Schritt 1: einloggen als welcher User-Typ]
2. [Schritt 2: welche Sidebar-Gruppe + welcher Eintrag]
3. [Schritt 3: welche Aktion im UI]
4. [Schritt 4: was erwartet sichtbar sein muss]