Kunden und Standorte pflegen, nicht zugeordnete Hosts in einem Schritt zuweisen, Enrollment- und Host-Tokens verwalten, Audit-Log. Dashboard, Kundenseiten und globale Suche laufen jetzt auf der Datenbank. 45 Tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
35 lines
1.7 KiB
Markdown
35 lines
1.7 KiB
Markdown
# #006 Kunden, Standorte und Hostzuweisung
|
||
**Status:** erledigt
|
||
**Meilenstein:** v0.3.0
|
||
**Labels:** ui, backend
|
||
**Geschätzt:** 6 h **Tatsächlich:** 0 h 35 min
|
||
|
||
## Ziel
|
||
Kunden und Standorte pflegen, neu registrierte Hosts schnell Kunden zuweisen und Enrollment-Tokens verwalten.
|
||
|
||
## Aufgaben
|
||
- [x] Kunden anlegen/bearbeiten/löschen (Name, Kundennummer, Ansprechpartner, E-Mail, Notizen)
|
||
- [x] Standorte je Kunde
|
||
- [x] Seite „Nicht zugeordnete Hosts“ mit Mehrfachauswahl und Schnellzuweisung (Kunde + Standort)
|
||
- [x] Callout auf dem Dashboard, solange nicht zugeordnete Hosts existieren
|
||
- [x] Enrollment-Tokens: erzeugen (Ablauf, max. Nutzungen, optional Kunde/Standort), anzeigen (einmalig), widerrufen; Install-One-Liner zum Kopieren
|
||
- [x] Host-Tokens widerrufen
|
||
- [x] Audit-Log-Einträge für alle Änderungen
|
||
|
||
## Akzeptanzkriterien
|
||
- [x] Mehrere Hosts lassen sich in einem Schritt zuweisen
|
||
- [x] Mit kundengebundenem Enrollment-Token registrierte Hosts sind sofort zugeordnet
|
||
- [x] Widerrufener Token wird von der Agent-API abgewiesen
|
||
|
||
## Abhängigkeiten
|
||
#002, #004
|
||
|
||
## Notizen / Entscheidungen
|
||
- Das Dashboard wurde gleich mit auf die Datenbank umgestellt (eigentlich #009). Sonst hätte eine gerade
|
||
vorgenommene Zuweisung dort weiter als „nicht zugeordnet“ gestanden – ein irreführender Zwischenzustand.
|
||
- Die Zuweisungslogik liegt als Service (`src/server/services/zuweisung.ts`) neben der Server Action,
|
||
damit sie ohne Next.js-Laufzeit testbar ist.
|
||
- Alle Dashboard-Seiten rendern dynamisch (`force-dynamic`); beim Vorrendern öffnete sonst jeder Build-Worker
|
||
eigene Datenbankverbindungen und der Build brach mit „TooManyConnections“ ab.
|
||
- Noch auf Beispieldaten: Host-Tabelle, Host-Detail, Rechnungen und Jahresbahn (folgen in #007 bis #009).
|