diff --git a/backend/src/services/contract.service.ts b/backend/src/services/contract.service.ts index 056c9b3a..0abf6870 100644 --- a/backend/src/services/contract.service.ts +++ b/backend/src/services/contract.service.ts @@ -67,6 +67,7 @@ export async function getAllContracts(filters: ContractFilters) { { mobileDetails: { deviceImei: { contains: search } } }, { mobileDetails: { simCards: { some: { phoneNumber: { contains: search } } } } }, { mobileDetails: { simCards: { some: { simCardNumber: { contains: search } } } } }, + { mobileDetails: { simCards: { some: { cardUser: { contains: search } } } } }, // Energie-Vertragsdetails (Zählernummer) { energyDetails: { meter: { meterNumber: { contains: search } } } }, // TV-Vertragsdetails diff --git a/docs/todo.md b/docs/todo.md index 15e5b6af..945b41c3 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -112,6 +112,9 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung 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. + - **Vertragssuche** (`?search=`) durchsucht jetzt auch den **Karteninhaber** + (`simCards.cardUser`) – zusätzlich zu Rufnummer/SIM-Nummer/IMEI (Pentest-R150- + Randnotiz, fachlich gewünscht). Portal-Suche bleibt durch Scoping begrenzt. - [x] **🛡️ Globaler API-Rate-Limit-Backstop + BLZ-Guard-Härtung (Pentest R148)** (2026-08-12) - **Backstop:** Neuer genereller Limiter auf ALLE `/api`-Requests