# 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???-/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` (`idle \| loading \| ready \| empty \| error`), `ActionCallbacks`, `I18nLabel`, `RegistryGate`, `ready`, `empty`, `assertI18nLabel` | | Action-Callback-Contract (M014) | `@toolctrl/view-models` → `ActionCallbacks` 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.) | ⚪ 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??? — — Status: 🔵 IN-ARBEIT **Pflichtenheft-Bezug:** _bmad-output/pflichtenheft/blocks/blockX.md Sektion Y.Z **Slice-Status:** N von M abgeschlossen - [x] S01: — Commit: - [x] S02: — Commit: - [ ] S03: **Definition of Done:** *Erreichbarkeit* - [ ] Sidebar-Eintrag — Datei: `packages/ui-hivegrid/src/app-shell/sidebar.config.ts` — Gruppe: — Permission: - [ ] 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): `` - [ ] Smoke-Test: `e2e/smoke/.spec.ts` - [ ] Hot-Swap-Drill: grün - [ ] Visual-Regression-Snapshot: 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 auf `app.hivegrid.de` 2. Sidebar → → 3. 4. **Notes vom Agent:** **User-Sign-Off:** [ ] Klick-Pfad durchlaufen, alles wie erwartet — Datum: , User: ``` --- ## 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.