Ziel
The request list (/requests, #26 / PR #43) stays fast and readable with thousands of requests per company. Today it loads every matching request at once.
Akzeptanzkriterien
Nicht Teil dieser Aufgabe
- Full-text search, sorting by other columns.
Betroffene Bereiche
src/features/requests/repository.ts (listRequests), src/features/export/repository.ts (listExportRecords), src/app/requests/page.tsx
Testplan
| Kriterium |
Prüfart |
| Page size + navigation + filters |
integration test |
| Stable keyset paging with inserts between pages |
integration test |
| Invalid page params |
unit test |
| Other company's requests never appear |
integration test (two tenants) |
Offene Entscheidungen
- Page size; whether a total count is needed (costs a COUNT per page view).
Security/Privacy betroffen?
Nein (query parameters validated; tenant isolation unchanged).
Found in the review of PR #43.
Ziel
The request list (
/requests, #26 / PR #43) stays fast and readable with thousands of requests per company. Today it loads every matching request at once.Akzeptanzkriterien
created_at, id, not OFFSET).withTenant.Nicht Teil dieser Aufgabe
Betroffene Bereiche
src/features/requests/repository.ts(listRequests),src/features/export/repository.ts(listExportRecords),src/app/requests/page.tsxTestplan
Offene Entscheidungen
Security/Privacy betroffen?
Nein (query parameters validated; tenant isolation unchanged).
Found in the review of PR #43.