erp-core/docs/01-fase-foundation/MGN-004-tenants/historias-usuario/US-MGN004-002.md

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
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
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