Vertragsliste (Staff-Tabelle): Karteninhaber/Netz/Kuendigung nachgezogen

Der vorige Commit ergaenzte nur die Baum-Render-Pfade (Kundenakte + Portal).
Die Staff-Ansicht unter /contracts rendert aber eine eigene Tabelle aus der
flachen getAll-Liste - dort fehlten die neuen Felder noch. Jetzt zeigt auch
die Staff-Tabelle Karteninhaber + Netz hinter der Rufnummer und die
Kuendigungsbestaetigung in roter Schrift. Backend liefert die Felder via
getAllContracts bereits mit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 12:26:58 +02:00
co-authored by Claude Opus 4.8
parent c5cf2c7416
commit 2d12221c41
2 changed files with 17 additions and 3 deletions
+6 -3
View File
@@ -106,9 +106,12 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
eigene Zeile in **roter, fetter Schrift** („Kündigungsbestätigung zum …").
- Backend: `getContractTreeForCustomer` + `getAllContracts` liefern jetzt
`mobileNetwork` + `cardUser` (Tree zusätzlich `cancellationConfirmationDate`;
Flat-Liste hat Scalars ohnehin via include). Beide Listen rendern über den
Tree-Endpoint. Shared-Helper `getContractTypeInfo` um `cardUser`/`network`
erweitert (+ `mobileNetworkLabel`).
Flat-Liste hat Scalars ohnehin via include). Shared-Helper
`getContractTypeInfo` um `cardUser`/`network` erweitert (+ `mobileNetworkLabel`).
- **3 Render-Pfade** ergänzt (waren getrennt!): Kundenakte-Baum, die
Staff-**Tabelle** in `/contracts` (flache `getAll`-Liste) UND der
Portal-Baum in `/contracts`. Der erste Anlauf hatte nur die Baum-Pfade
die Staff-Tabelle (Haupt-Ansicht für Mitarbeiter) fehlte und wurde nachgezogen.
- [x] **🛡️ Globaler API-Rate-Limit-Backstop + BLZ-Guard-Härtung (Pentest R148)** (2026-08-12)
- **Backstop:** Neuer genereller Limiter auf ALLE `/api`-Requests
@@ -506,6 +506,17 @@ export default function ContractList() {
{typeInfo && (
<div className="text-xs text-gray-500 font-sans mt-0.5">
<span className="font-medium text-gray-600">{typeInfo.label}:</span> {typeInfo.value}
{typeInfo.cardUser && (
<> · <span className="font-medium text-gray-600">Karteninhaber:</span> {typeInfo.cardUser}</>
)}
{typeInfo.network && (
<> · <span className="font-medium text-gray-600">Netz:</span> {typeInfo.network}</>
)}
</div>
)}
{contract.cancellationConfirmationDate && (
<div className="text-xs font-semibold text-red-600 font-sans mt-0.5">
Kündigungsbestätigung zum {formatDate(contract.cancellationConfirmationDate)}
</div>
)}
</td>