Files
HiveGrid-Wireframes/hivegrid-cloud/docs/PROGRESS-TRACKER.md
T

330 lines
26 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HiveGrid 2.0 — Progress-Tracker
**Zweck:** Live-Übersicht über alle 176 Milestones. Der Agent updatet diese Datei nach jedem Milestone-Abschluss. Du als User prüfst über den Klick-Pfad und setzt Sign-Off.
**Master-Quellen:**
- Master-Index: [`docs/milestones/README.md`](milestones/README.md)
- Per-Milestone-Plan: `docs/milestones/M???-<slug>/PLAN.md`
- Definition of Done: in jeder PLAN.md am Ende
- Coverage: [`docs/milestones/PFLICHTENHEFT-COVERAGE.md`](milestones/PFLICHTENHEFT-COVERAGE.md)
---
## Status-Legende
| Status | Bedeutung |
|---|---|
| `⚪ NICHT-GESTARTET` | Milestone wartet, Abhängigkeiten ggf. offen |
| `🔵 IN-ARBEIT` | Agent plant oder führt Slices aus |
| `🟡 READY-TO-VERIFY` | Agent fertig, Verify-Gates grün, wartet auf User-Sign-Off via Klick-Pfad |
| `🟢 SIGNED-OFF` | User hat Klick-Pfad durchlaufen und bestätigt |
| `🔴 BLOCKED` | Agent kann nicht weiter, User-Input nötig |
| `🟣 PARKED` | Bewusst zurückgestellt |
| `🟦 BOILERPLATE-PATTERN` | Pattern in Boilerplate vorhanden — HiveGrid-Agent füllt nur Inhalte ein |
---
## Phase 0 — Vorbedingungen (außerhalb der 176)
| Aufgabe | Status | Bemerkung |
|---|---|---|
| EU-Sterilisation der Boilerplate | 🟢 SIGNED-OFF | 2026-05-11 verifiziert: Anthropic/OpenAI/Google-Auth raus; Mistral via `@ai-sdk/mistral` (`packages/ai/src/providers/mistral.ts`), Scaleway + AlephAlpha + compatible-Adapter vorhanden; Multi-Provider-Fallback (`packages/ai/src/fallback.ts`) |
| RR7-Migration zu Ende | 🟢 SIGNED-OFF | 2026-05-11 verifiziert: `apps/web/app` ist authoritative, kein Root-Hybrid mehr (siehe `boilerplate/docs/architecture-migration-status.md`) |
| Phase-C-Foundation in Boilerplate (`packages/foundation`, `view-models`, `ui-app`, `ui-mock`, `ui-subframe`) | 🟢 SIGNED-OFF | 2026-05-11 verifiziert: `pnpm verify:phase-c-boundaries` läuft grün; alle Foundation-Patterns in `@toolctrl/foundation` exportiert |
| Boilerplate-Inhalt in `HiveGrid-Cloud/` übernommen | 🟢 erledigt | 2026-06-04 via **git-merge** (downstream), nicht rsync — siehe `docs/ARCHITECTURE-DECISIONS.md` AD-10 |
| **Phase-0 Pre-Flight im Code umgesetzt** | 🟢 erledigt | 2026-06-05: AGENTS Pre-Flight-Check besteht alle 4 Schritte; Build-Baseline + EU-Steri (OAuth raus) + M00-Neubauten (4/4) committed; offen nur #19 Deps (just-in-time) |
| `AGENTS.md` + `docs/INTEGRATION-CONTRACTS.md` + `docs/MID-STREAM-CHANGES.md` + `docs/TC-PLANNING-BRIEFING.md` im Repo | 🟢 SIGNED-OFF | 2026-05-10 |
| 176 Milestone-Verzeichnisse mit `PLAN.md` | 🟢 SIGNED-OFF | 2026-05-10 |
| `docs/PROGRESS-TRACKER.md` (diese Datei) angelegt | 🟢 SIGNED-OFF | 2026-05-10 |
| Doku-Naming-Anpassung an Boilerplate-Realität (`ui-hivegrid` → `ui-app`, `@hivegrid/foundation` → `@toolctrl/foundation`, AdapterStatus, VMStatus) | 🟢 erledigt | 2026-06-05, AGENTS.md (commit `206e1ea3`); ältere PLANs/Specs via AD-10-Mapping-Notiz abgedeckt (kein flächiges Rename) |
**Boilerplate-Realität ab 2026-05-11:** Die EU-Sterilisation + RR7-Migration + Phase-C-Foundation sind technisch abgeschlossen. Die HiveGrid-Milestones M001-M017 sind in der Boilerplate als **Pattern** umgesetzt — der HiveGrid-Agent muss sie nicht implementieren, sondern nur mit HiveGrid-spezifischen Inhalten befüllen.
**Pattern-Standorte in der Boilerplate (für HiveGrid-Agent):**
| HiveGrid-Pflicht | Pattern in Boilerplate |
|---|---|
| Audit-Log default (M001) | `@toolctrl/foundation` → `withAuditMiddleware`, `AuditEventInput`, `AuditEventClient`; DB: `packages/db/src/audit-events.server.ts` |
| Klartext-Diagnostik (M002) | `@toolctrl/foundation` → `CatalogError`, `catalogRegistry` (leer, HiveGrid füllt), `foundationErrors`, `toPinoLogObject` |
| i18n-Pflicht (M003) | `@toolctrl/foundation` → `assertI18nKey`; CI: `pnpm verify:i18n` (i18n-check.ts + ESLint) |
| Tenant-Scope + Permissions (M004, M005) | `@toolctrl/foundation` → `withTenantScope`, `withPermission`, `withOwnerCheck`, `requirePermission`, `PermissionContext` |
| Feature-Flag-Engine (M006) | `@toolctrl/foundation` → `defineFlag`, `featureFlag`, `FlagDefinition`, `FlagResolutionInput` |
| Idempotenz-Wrapper (M007) | `@toolctrl/foundation` → `IdempotencyClient`, `IdempotencyResponse` |
| Apps-Engine-Adapter + State-Machine (M008, M009, M010) | `@toolctrl/foundation` → `defineAdapter`, `getAdapter`, `AdapterStatus` (`not_configured \| configured \| healthy \| degraded \| unavailable`); Plugin-Loader: `@toolctrl/plugins` |
| Notification-Service (M011) | `@toolctrl/foundation` → `notify`, `notifyMany`, `bundleNotifications`, `isNotificationEnabled`, `NotificationInput` |
| Workspace-Topologie (M012) | Bereits angelegt: `packages/view-models`, `packages/ui-app`, `packages/ui-subframe`, `packages/ui-mock` |
| View-Model-Konvention (M013) | `@toolctrl/view-models` → `VMState<T>` (`idle \| loading \| ready \| empty \| error`), `ActionCallbacks<T>`, `I18nLabel`, `RegistryGate`, `ready`, `empty`, `assertI18nLabel` |
| Action-Callback-Contract (M014) | `@toolctrl/view-models` → `ActionCallbacks<T>` mit `onCreate`, `onUpdate`, `onDelete`, `onRefresh` |
| Subframe-Adapter-Layer (M015) | `packages/ui-subframe` ist als leeres Paket reserviert (README erklärt die Vendor-Import-Boundary) |
| Visual-Regression-Gate (M016) | CI-Script `pnpm verify:ui-visual` läuft + `scripts/verify-ui-mock-visual.ts` |
| Hot-Swap-Drill (M017) | CI-Job „Test UI mock hot-swap" in `.gitea/workflows/ci.yml` + `pnpm test:hot-swap` → `pnpm verify:ui-hot-swap` |
---
## Master-Tabelle (176 Milestones)
| ID | Titel | Status | DoD-Score | Slices | Sign-Off |
|---|---|---|---|---|---|
| **M001** | Audit-Log default | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M002** | Klartext-Diagnostik | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M003** | i18n-Pflicht-Wiring | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M004** | Tenant-Scope-Wrapper + Owner-Check | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M005** | URL-Tampering Hardening + Mass-Action-Schutz | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M006** | Feature-Flag-Engine (Code-Layer) | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M007** | Idempotenz-Wrapper für BullMQ-Steps | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M008** | Apps-Engine: Adapter-Interface + State-Machine | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M009** | Apps-Engine: Setup-Wizard + Sync-Log | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M010** | Apps-Engine: Probe-Scheduler + Webhook-Sturm-Schutz | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M011** | Notification-Service-Layer | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M012** | Workspace-Topologie | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M013** | View-Model-Konvention | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M014** | Action-Callback-Contract | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M015** | Subframe-Adapter-Layer | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M016** | Visual-Regression-Gate | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M017** | Hot-Swap-Drill | 🟦 BOILERPLATE-PATTERN | – | – | HiveGrid füllt Inhalte |
| **M018** | Mandanten-Anlage | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M019** | Mandanten-Trennung Hardening | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M020** | Email/Passwort-Auth + HIBP + Brute-Force | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M021** | Magic-Link + Sitzungs-Verwaltung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M022** | TOTP-2FA + Notfall-Codes | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M023** | Rollen-Engine + 6 SHK-Standard-Rollen + Gruppen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M024** | Mitarbeiter-Einladung / Deaktivierung / Umverteilung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M025** | Konto-Löschung (User + Admin) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M026** | Mandanten-Lebenszyklus | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M027** | API-Keys + Tarif-Feature-Gates | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M028** | User/Tenant Sprach-Settings + Auflösungs-Reihenfolge | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M029** | Sprach-Wechsler + Fallback-Hinweise | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M030** | Hell/Dunkel-Modus + Capacitor-Status-Bar | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M031** | Feature-Flag Schalter-Definition + Lifecycle | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M032** | Feature-Flag Filter-Editor + Einzel-Ausnahme-Editor | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M033** | Feature-Flag Massen-Funktionen + Statistik + Audit-Historie | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M034** | Plattform-Admin-Auth (admin.<domain>) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M035** | Plattform-Admin-Dashboard | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M036** | Mandanten-Verwaltung (Plattform-Admin) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M037** | Stellvertreter-Anmeldung („Login as") | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M038** | Mandanten-Mitarbeiter-Verwaltung (Plattform-Admin) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M039** | Plattform-Admin-Konten + Rollen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M040** | Interne Lead-Pipeline (HiveGrid-Verkäufe) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M041** | System-Health + Audit-Anzeige + Datenschutz + Support | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M042** | Kontakt-Stammdaten | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M043** | Firma-Stammdaten + Hierarchie | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M044** | Schlagwörter + Custom-Felder + Datenherkunft | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M045** | Aktivitäts-Stream | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M046** | Listen + Segmente + DSGVO-Felder | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M047** | Lead-Inbox + Quellen-Adapter | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M048** | Lead-Routing pro Quelle [N4] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M049** | Auto-Verkaufsfall-Anlage | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M050** | Spam/Duplikat-Erkennung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M051** | Lead-Status-Pipeline + Verlust-Gründe + Notifications | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M052** | Datei-Upload (Anti-Virus + Format-Whitelist) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M053** | Speicher-Backend (S3 auf Scaleway) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M054** | Datei: Permissions + Sharing + Versionierung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M055** | Datei: Suche + Tagging + Archivierung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M056** | Globale Suche: Such-Index | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M057** | Globale Suche: Permission-aware | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M058** | Globale Suche: UI + Saved-Searches | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M059** | Sales-Pipeline: Konfiguration + SHK-Standard-Pipeline | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M060** | Verkaufsfall-CRUD + Pflichtfeld Vertriebler [N6] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M061** | Sales-Pipeline: Kanban-UI + Drag&Drop | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M062** | Sales-Pipeline: Verlust/Gewinn-Gründe [N8] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M063** | Auto-Auftragsprojekt [N7] + Setter-Closer [N17] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M064** | Sales-Pipeline: Reporting + KWP-Sync | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M065** | Auftragspipeline: Konfiguration | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M066** | Auftrag-CRUD + KWP-Dokumenten-Archiv [N5] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M067** | Plantafel mit Tagen-Granularität [N10] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M068** | Auftrag: Mitglieder-Mgmt + Rollen pro Auftrag | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M069** | Auftrag: Abnahme-Workflow + Mängel-Liste | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M070** | Auftrag: Material-Listen + Lager-Anbindung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M071** | Aufgaben-CRUD + Zuweisung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M072** | Aufgaben-Listen pro Modul (Inline) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M073** | Aufgaben: Erinnerungen + Push + Email | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M074** | Aufgaben-Sync mit ERP-Aufgaben-Welt [N11] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M075** | Automation: Schema + Auslöser-Registry | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M076** | Automation: Aktion-Registry + Steuerungs-Bausteine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M077** | Automation: Bedingungen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M078** | Automation: Visueller Editor | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M079** | Automation: Test-Lauf + Schwellenwert-Vorschau | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M080** | Automation: 24h-Undo-Fenster + Reversibilität | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M081** | Automation: Schleifen-Schutz + Webhook-Sturm + Anomalie | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M082** | Automation: Klartext-Logs + Re-Run + Trigger-Volumen-Metering | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M083** | KI: EU-Provider-Layer (Mistral/Scaleway/AlephAlpha) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M084** | KI: Multi-Provider-Fallback + 30-Min-Health-Window | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M085** | KI: Promptfoo-Eval-Suite mit Injection-Vektoren in CI | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M086** | KI: Sprach-zu-Automation | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M087** | KI: RAG-Layer + Aktions-Grenze | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M088** | KI: Token-Limits + Pay-as-you-go [N13] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M089** | KWP-API-Connector (REST/OAuth über Apps-Engine) [Re-Cut] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M090** | KWP-API Connection-Health [Re-Cut] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M091** | KWP-Push-Queue + Replay (Cloud-Outbox) [Re-Cut] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M092** | KWP-API-Contract-Sentinel [Re-Cut] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M093** | KWP: Konflikt-Auflösung „KWP gewinnt" [N14] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M094** | KWP: Bidirektionale Plantafel-Sync [N10] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M095** | KWP: Dokumenten-Archiv-Sync KWP→HiveGrid [N5] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M096** | Email-Inbox: Gmail-OAuth-Integration via Apps-Engine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M097** | Email-Inbox: Sync + Inbox-UI + Threading + Auto-Verknüpfung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M098** | Email-Versand + Vorlagen + Variable-Resolution | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M099** | Email-Tracking + Delivery-Status + Bounces | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M100** | Email-Marketing: Editor (Block-Style) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M101** | Email-Marketing: Segmente + Empfänger-Auswahl | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M102** | Email-Marketing: Versand-Engine + DKIM/SPF + Frequenz-Schutz | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M103** | Email-Marketing: Reporting (Open/Click + Klick-Karte + Pro-Empfänger) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M104** | Email-Marketing: Unsubscribe + Bounce-Handling + Pflicht-Footer | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M105** | Telefonie: HalloPetra-Adapter [N16] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M106** | Telefonie: AirCall-Adapter | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M107** | Telefonie: Anruf-Eingang + CRM-Verknüpfung + Auto-Match | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M108** | Telefonie: Anruf-Ausgang + Click-to-Call | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M109** | Telefonie: Voicemail + Anruf-Notizen + Aufgaben-Auto-Anlage | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M110** | Team-Chat: Channel-Modell + Permissions | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M111** | Team-Chat: Nachrichten + Threads + Pinned + Reactions | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M112** | Team-Chat: Datei/Foto-Anhänge | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M113** | Team-Chat: Modul-Verknüpfungen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M114** | Team-Chat: Mentions + Push + Lese-Bestätigungen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M115** | Notification-Center + Lese-Status | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M116** | Notifications: User-Settings (Kanal + Stille Stunden) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M117** | Notifications: Kategorien + Bündelung + Anti-Spam | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M118** | Calendar: Google + Microsoft via Apps-Engine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M119** | Calendar: Termin-Sync (bidirektional) + Konflikt-Auflösung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M120** | Calendar: Display + Modul-Verknüpfung + Activity-Stream | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M121** | Form-Builder: Editor | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M122** | Form-Builder: Veröffentlichung + Sharing + Embed | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M123** | Form-Builder: Submission-Eingang + CRM-Verknüpfung + Aktionen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M124** | Form-Builder: Conditional-Display (kein Branching) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M125** | Form-Builder: Rate-Limit + Captcha + DSGVO-Pflicht | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M126** | Booking: Buchungs-Seite + Time-Slot-Engine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M127** | Booking: Verfügbarkeits-Berechnung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M128** | Booking: Bestätigungs-Flow + Verknüpfungen | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M129** | Booking: Stornierung + Verschiebung + No-Show-Tracking | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M130** | Angebot: Erstellung (PDF aus Datei-Speicher oder Upload) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M131** | Angebot: PandaDoc/DocuSign-Integration via Apps-Engine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M132** | Angebot: Status-Tracking + Auto-Stage-Wechsel | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M133** | HR: Mitarbeiter-Stammdaten + Standorte | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M134** | HR: Dokumente + Lohnabrechnungen + Verschlüsselter Passwort-Safe | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M135** | HR: Urlaubsanträge + Genehmigungs-Workflow | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M136** | HR: Krankmeldungen + Atteste | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M137** | HR: Schwarzes Brett (Bekanntmachungen) + Quick-Links + Resources | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M138** | HR: Onboarding-Drittanbieter (Memberspot/Boobora) [N18] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M139** | HR: Generische Anträge + Berichte + Lohn-Export + Surveys | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M140** | HR: Mitarbeiter-Selbstbedienung + Mobile-First | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M141** | Customer-Portal: Auth (separater Login-Flow) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M142** | Customer-Portal: Projekt-Sicht + Status-Mails | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M143** | Customer-Portal: Datei-Upload durch Endkunde + Reklamations-Forms | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M144** | Customer-Portal: Subunternehmer-Zugang [N19] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M145** | Customer-Portal: Skalierungs-Sicht (Service-Inbox + Routing) [N19] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M146** | Customer-Portal: Pro-Kunden-Lebensdauer + DSGVO + Konfig [N19] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M147** | Dashboard: Layout + Widget-Engine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M148** | Dashboard: 7 Rollen-Standard-Layouts | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M149** | Dashboard: Drill-Down + Custom-Widget-Konfiguration | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M150** | Dashboard: Export + Report-Versand | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M151** | Audit-Log: Anzeige + Filter + Volltext-Suche | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M152** | Audit-Log: Compliance-Export + Aufbewahrung + Legal Hold | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M153** | Subscriptions: Stripe-Integration (EU) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M154** | Subscriptions: Plan-Engine + Seat-Modell (Büro/Monteur) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M155** | Subscriptions: Trial-Phase + Read-Only-Downgrade + Frozen-Modus | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M156** | Subscriptions: Verbrauchs-Erfassung + Pay-as-you-go [N13] | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M157** | Onboarding: Wizard-Framework + State-Machine | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M158** | Onboarding: SHK-Standard-Daten-Provisionierung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M159** | Onboarding: Branchen-Templates deklarativ (A.3) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M160** | Onboarding: Demo-Daten + KI-Walkthrough | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M161** | Public-API: OpenAPI-Spec + Read-Endpoints | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M162** | Public-API: API-Key-Auth + Scopes + Rate-Limit | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M163** | Public-API: Webhooks (signiert, ein- und ausgehend) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M164** | DSGVO: User-Daten-Export + Mandanten-Daten-Export | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M165** | DSGVO: Account-Löschung + Mandanten-Lösch-Workflow | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M166** | DSGVO: AVV-Vertrag + Subprozessoren-Liste + Auskunfts-Workflow | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M167** | Mobile: Capacitor-Setup + Build-Pipeline | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M168** | Mobile: Native-Features (Push, Face/Touch-ID, Kamera) + Universal Links | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M169** | Mobile: Native Tab-Bar + Mobile-First-Routes (Baustelle) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M170** | Mobile: Offline-Modus für Baustelle (Pflicht Phase 1) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M171** | Mobile: App-Store-Compliance (Apple + Google) + Force-Update | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M172** | Help-Center: Markdown-Artikel-Mgmt (Git-PRs) | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M173** | Help-Center: Routes + Suche + SEO + Kontextuelle Hilfe | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M174** | Help-Desk: Email-basiertes Ticket-System + Plattform-Admin-Bearbeitung | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M175** | Help-Desk: In-App-Feedback-Widget („Problem melden") | ⚪ NICHT-GESTARTET | 0/14 | – | – |
| **M176** | Anti-Liste + Change-Request-Workflow als Repo-Doku | ⚪ NICHT-GESTARTET | 0/14 | – | – |
---
## Detail-Sektionen pro Milestone
> **Anweisung an den Agent:** Sobald ein Milestone in IN-ARBEIT geht, ergänze hier eine Detail-Sektion gemäß folgender Vorlage. Nach Abschluss aller Slices: Status auf `🟡 READY-TO-VERIFY`. User trägt nach Sign-Off `🟢 SIGNED-OFF` mit Datum ein.
### Vorlage (zu kopieren pro Milestone)
```markdown
### M??? — <Titel> — Status: 🔵 IN-ARBEIT
**Pflichtenheft-Bezug:** _bmad-output/pflichtenheft/blocks/blockX.md Sektion Y.Z
**Slice-Status:** N von M abgeschlossen
- [x] S01: <slice-title> — Commit: <hash>
- [x] S02: <slice-title> — Commit: <hash>
- [ ] S03: <slice-title>
**Definition of Done:**
*Erreichbarkeit*
- [ ] Sidebar-Eintrag — Datei: `packages/ui-hivegrid/src/app-shell/sidebar.config.ts` — Gruppe: <Gruppe> — Permission: <key>
- [ ] Route — `app/routes/<...>.tsx`
- [ ] Breadcrumb — `packages/ui-hivegrid/src/breadcrumbs/<...>.ts`
- [ ] Mobile-Tab-Bar — falls relevant: `packages/ui-hivegrid/src/mobile/tab-bar.config.ts`
- [ ] Customer-Portal-Sichtbarkeit — falls relevant: `packages/ui-hivegrid/src/customer-portal/portal-shell.config.ts`
*Querschnitt-Wiring*
- [ ] Audit (auto via M001 oder manuell)
- [ ] Activity-Stream via logActivity()
- [ ] Notifications via notify()
- [ ] Search-Index registriert
- [ ] Permission-Filter via withTenantScope() + withPermission()
- [ ] Feature-Flag-fähig
*Code-Layer-Disziplin*
- [ ] Loader baut VM, UI nur Props
- [ ] Keine Prisma-Imports in ui-hivegrid
- [ ] Alle UI-Texte als i18n-Keys
*Tests*
- [ ] Unit-Test (VM-Builder + Zod): `<test-path>`
- [ ] Smoke-Test: `e2e/smoke/<modul>.spec.ts`
- [ ] Hot-Swap-Drill: grün
- [ ] Visual-Regression-Snapshot: <Anzahl> Bilder
*Klartext + Rollback*
- [ ] Fehler-Texte aus M002-Catalog
- [ ] Empty/Loading/Error-States
- [ ] 404 statt 403 bei fehlender Permission
- [ ] Forward-Only-DB-Migration mit Inverse-SQL-Kommentar
- [ ] Feature-Flag zum Abschalten ohne Deploy
**DoD-Score:** N/14 erfüllt
**Klick-Pfad zum Prüfen** (für User):
1. Login als <user-typ> auf `app.hivegrid.de`
2. Sidebar → <Gruppe> → <Eintrag>
3. <Aktion ausführen>
4. <Erwartetes UI / Ergebnis>
**Notes vom Agent:** <was war nicht offensichtlich, was hat länger gedauert, was muss User wissen>
**User-Sign-Off:** [ ] Klick-Pfad durchlaufen, alles wie erwartet — Datum: <YYYY-MM-DD>, User: <Name>
```
---
## Workflow
1. **Agent startet Milestone** → Status auf `🔵 IN-ARBEIT`, Detail-Sektion anlegen
2. **Agent baut Slices** → Slice-Liste abhaken, Commit-Hashes eintragen
3. **Agent hat alle DoD-Punkte erfüllt** → Status auf `🟡 READY-TO-VERIFY`
4. **User durchläuft Klick-Pfad** → wenn alles ok: User trägt `🟢 SIGNED-OFF` + Datum ein. Wenn nicht ok: User trägt Notes ein, Status zurück auf `🔵 IN-ARBEIT`
5. **Agent geht zum nächsten Milestone** — nicht vorher
## Konsistenz-Check
- DoD-Score in der Master-Tabelle muss zur Detail-Sektion passen
- `🟡 READY-TO-VERIFY` ohne 14/14 DoD = inkonsistent → Agent muss korrigieren
- `🟢 SIGNED-OFF` ohne Datum + User = inkonsistent → User muss ergänzen
## Pflege
Diese Datei ist Live-Dokument. Pflicht-Update bei jedem Status-Wechsel. Bei mehr als 5 Mile­stones IN-ARBEIT gleichzeitig: STOP, an User melden — wir wollen Fokus, nicht Chaos.