4.4 KiB
4.4 KiB
US-MGN004-002: Configuracion de Tenant
Identificacion
| Campo | Valor |
|---|---|
| ID | US-MGN004-002 |
| Modulo | MGN-004 Tenants |
| RF Relacionado | RF-TENANT-002 |
| Prioridad | P0 - Critica |
| Story Points | 8 |
| Sprint | TBD |
Historia de Usuario
Como Tenant Admin Quiero configurar la informacion de mi organizacion (empresa, branding, regional, seguridad) Para personalizar el sistema segun las necesidades de mi empresa
Criterios de Aceptacion
AC-001: Ver configuracion actual
Given soy Tenant Admin autenticado
When accedo a GET /api/v1/tenant/settings
Then veo configuracion completa organizada en secciones:
| company | branding | regional | operational | security |
And valores propios sobrescriben defaults
And se indica cuales son valores heredados
AC-002: Actualizar informacion de empresa
Given soy Tenant Admin autenticado
When envio PATCH /api/v1/tenant/settings con:
| company.companyName | company.taxId |
| Mi Empresa S.A. | MEMP850101ABC |
Then se actualizan los campos enviados
And otros campos de company no se modifican
And se actualiza updated_at y updated_by
AC-003: Personalizar branding
Given soy Tenant Admin autenticado
When actualizo branding con:
| primaryColor | secondaryColor |
| #FF5733 | #33FF57 |
Then los colores se guardan
And la UI refleja los nuevos colores
AC-004: Subir logo
Given soy Tenant Admin autenticado
When envio POST /api/v1/tenant/settings/logo con imagen PNG de 500KB
Then el logo se almacena en storage
And se genera version thumbnail
And se actualiza branding.logo con URL
And el logo aparece en la UI
AC-005: Validar formato y tamano de logo
Given soy Tenant Admin autenticado
When intento subir logo de 10MB
Then el sistema responde con status 400
And el mensaje indica "Tamano maximo: 5MB"
AC-006: Configurar zona horaria
Given soy Tenant Admin autenticado
When actualizo regional.defaultTimezone a "America/New_York"
Then las fechas se muestran en hora de Nueva York
And los reportes usan esa zona horaria
AC-007: Configurar politicas de seguridad
Given soy Tenant Admin autenticado
When actualizo security con:
| passwordMinLength | mfaRequired |
| 12 | true |
Then nuevos usuarios deben usar password de 12+ caracteres
And se requiere MFA para todos los usuarios
And usuarios existentes deben activar MFA en siguiente login
AC-008: Resetear a valores por defecto
Given soy Tenant Admin con branding personalizado
When envio POST /api/v1/tenant/settings/reset con:
| sections | ["branding"] |
Then branding vuelve a valores por defecto de plataforma
And otras secciones no se modifican
AC-009: Validacion de campos
Given soy Tenant Admin autenticado
When envio color con formato invalido "#GGG"
Then el sistema responde con status 400
And el mensaje indica formato invalido
AC-010: Herencia de defaults
Given tenant sin configuracion de dateFormat
And plataforma tiene default "DD/MM/YYYY"
When consulto settings
Then dateFormat muestra "DD/MM/YYYY"
And se indica que es valor heredado (_inherited)
Tareas Tecnicas
| ID | Tarea | Estimacion |
|---|---|---|
| T-001 | Crear entidad TenantSettings | 1 SP |
| T-002 | Implementar TenantSettingsService | 2 SP |
| T-003 | Implementar merge con defaults | 1 SP |
| T-004 | Crear endpoint de upload de logo | 1 SP |
| T-005 | Implementar reset a defaults | 1 SP |
| T-006 | Tests unitarios | 2 SP |
| Total | 8 SP |
Notas de Implementacion
- Settings se almacenan como JSONB en PostgreSQL
- Merge inteligente: solo sobrescribir campos enviados
- Logo se almacena en storage externo (S3, GCS, etc.)
- Cambios de seguridad aplican en siguiente login
Mockup de Referencia
Ver RF-TENANT-002.md seccion Mockup.
Dependencias
| Tipo | Descripcion |
|---|---|
| Backend | Tenant existente (US-MGN004-001) |
| Storage | Servicio de storage configurado |
| Config | Defaults de plataforma definidos |
Definition of Done
- CRUD de settings funcionando
- Merge con defaults implementado
- Upload de logo con validaciones
- Reset a defaults funcionando
- Validaciones de DTOs completas
- Tests unitarios con >80% coverage