3.4 KiB
US-MGN-001-003-001: CRUD de Usuarios (Crear, Listar, Editar, Desactivar)
RF Asociado: RF-MGN-001-003 Módulo: MGN-001 - Fundamentos Epic: Gestión de Usuarios Prioridad: P0 (MVP) Story Points: 5 Sprint: Sprint 2 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como administrador del sistema, Quiero crear, listar, editar y desactivar usuarios, Para gestionar quién tiene acceso al sistema y con qué roles.
Descripción Detallada
CRUD completo de usuarios con validaciones de negocio: unicidad de email por tenant, asignación de roles, soft delete, envío de email de bienvenida.
Criterios de Aceptación
Escenario 1: Crear usuario nuevo
Dado que soy administrador, Cuando creo usuario con email, nombre, contraseña y roles, Entonces usuario se crea con password hasheado, email de bienvenida enviado.
Escenario 2: Email duplicado
Dado que email ya existe en el tenant, Cuando intento crear usuario, Entonces retorna error 400 "Email ya registrado".
Escenario 3: Listar usuarios con filtros
Dado que existen múltiples usuarios, Cuando listo con filtros (nombre, email, rol, status), Entonces veo resultados paginados con rol y status.
Escenario 4: Editar usuario
Dado que un usuario existe, Cuando edito nombre, teléfono, roles, Entonces cambios se aplican inmediatamente.
Escenario 5: Desactivar usuario (soft delete)
Dado que usuario está activo, Cuando lo desactivo, Entonces status='inactive', tokens revocados, no puede login.
Reglas de Negocio
- RN-1: Email único por tenant
- RN-2: Contraseña hasheada con bcrypt (cost 12)
- RN-3: Soft delete (status='inactive', deleted_at)
- RN-4: Al desactivar: revocar tokens activos
- RN-5: No se puede auto-desactivar (el admin no puede desactivarse a sí mismo)
Tareas Técnicas
Backend
- POST /api/v1/auth/users - Crear usuario
- GET /api/v1/auth/users - Listar con paginación/filtros
- GET /api/v1/auth/users/:id - Detalle usuario
- PATCH /api/v1/auth/users/:id - Actualizar
- DELETE /api/v1/auth/users/:id - Soft delete
- UsersService.create/findAll/update/deactivate
- CreateUserDto, UpdateUserDto con validaciones
- Enviar email de bienvenida (SendGrid/SES)
- Unit + Integration tests (12 casos)
Frontend
- UsersListPage con tabla paginada
- UserFormModal (crear/editar)
- Filtros: búsqueda, rol, status
- Confirmación antes de desactivar
- API client + React Query
- Component + E2E tests
Database
- Tabla: auth.users (validar schema)
- Índice: idx_users_email_tenant (UNIQUE)
- Trigger: revocar tokens al desactivar
Estimación: 5 SP (9 horas)
Definition of Done
- CRUD implementado (backend + frontend)
- Tests pasando (>80% cobertura)
- Email de bienvenida funcionando
- Soft delete funcionando
- Code review aprobado
- Merge a develop