feat(ADM-018): completed feature
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
# Current work
|
||||
# Feature actual
|
||||
|
||||
- Active feature: none (idle)
|
||||
- Last closed: F-006 — Users: profile, addresses, RBAC
|
||||
- Next suggested: F-007 — check `backlog/features.json` for the first `pending` ticket whose dependencies are satisfied
|
||||
- Runtime status: reset via scripts/agent_status.py
|
||||
- verify.sh: green at close
|
||||
## ADM-018: Admin: Customer List
|
||||
- **Status**: in_progress
|
||||
- **Stage**: design
|
||||
- **Priority**: medium
|
||||
- **Phase**: customers
|
||||
- **Description**: Listado de clientes con búsqueda y paginación.
|
||||
- **Backend gap**: `GET /users` no soporta search (q), pagination (offset/limit), ni devuelve total, email o role. Hay que hacer JOIN identity_users + users_profiles.
|
||||
- **Frontend**: Ya existe la página con tabla, búsqueda debounced, paginación y modales crear/editar. Falta cablear `total` desde la respuesta del backend.
|
||||
|
||||
## F-006 closure notes
|
||||
- Users module hexagonal: profile + address CRUD behind use cases; tables `users_profiles`, `users_addresses`
|
||||
- Roles customer/admin on `identity_users` (migration 003); role resolved from DB on every request
|
||||
- Shared auth contract (`src/shared/auth.ts`): `Authenticate`, `requireRole`, `requireOwnerOrAdmin` — users never imports identity; composition root injects the authenticator
|
||||
- Authorization runs before existence checks (403 first, no enumeration); address SQL scoped by user_id
|
||||
- `@fastify/cookie` registered once at app root (cross-module infrastructure)
|
||||
- No new npm dependencies; README documents endpoint table, access rules, and new auth codes (UNAUTHORIZED/FORBIDDEN)
|
||||
- Gates: reviewer/security/qa APPROVED. Tests: unit 52, integration 22 (PostgreSQL 16)
|
||||
## Plan
|
||||
1. Backend: JOIN identity_users + users_profiles en GET /users
|
||||
2. Backend: soporte q (ILIKE email), offset, limit, total count
|
||||
3. Backend: serializar como id/email/role/displayName/phone/createdAt
|
||||
4. Frontend: ajustar api-client para leer total, actualizar contador en page
|
||||
|
||||
Reference in New Issue
Block a user