Files
ProxLedger/docs/issues/006-kunden-hostzuweisung.md
florian.wildeandClaude Opus 5 f9a5ad2daa feat(kunden): Kundenverwaltung, Hostzuweisung und Token-Verwaltung (#006)
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>
2026-09-17 21:02:44 +02:00

1.7 KiB
Raw Permalink Blame History

#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

  • Kunden anlegen/bearbeiten/löschen (Name, Kundennummer, Ansprechpartner, E-Mail, Notizen)
  • Standorte je Kunde
  • Seite „Nicht zugeordnete Hosts“ mit Mehrfachauswahl und Schnellzuweisung (Kunde + Standort)
  • Callout auf dem Dashboard, solange nicht zugeordnete Hosts existieren
  • Enrollment-Tokens: erzeugen (Ablauf, max. Nutzungen, optional Kunde/Standort), anzeigen (einmalig), widerrufen; Install-One-Liner zum Kopieren
  • Host-Tokens widerrufen
  • Audit-Log-Einträge für alle Änderungen

Akzeptanzkriterien

  • Mehrere Hosts lassen sich in einem Schritt zuweisen
  • Mit kundengebundenem Enrollment-Token registrierte Hosts sind sofort zugeordnet
  • 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).