From b2b1cb33873d664e551929789c8a377ebd72c6cb Mon Sep 17 00:00:00 2001 From: duffyduck Date: Thu, 13 Aug 2026 12:50:36 +0200 Subject: [PATCH] Vertragssuche: Karteninhaber (cardUser) durchsuchbar (Pentest R150) getAllContracts durchsucht jetzt auch simCards.cardUser - zusaetzlich zu Rufnummer/SIM-Nummer/IMEI. R150-Randnotiz, fachlich gewuenscht (Staff sucht nach Karteninhaber). Portal-Suche bleibt durch das bestehende customerIds- Scoping begrenzt. Verifiziert: Suche nach gesetztem cardUser findet den Vertrag, Kontroll- Suche 0 Treffer. Co-Authored-By: Claude Opus 4.8 --- backend/src/services/contract.service.ts | 1 + docs/todo.md | 3 +++ 2 files changed, 4 insertions(+) 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