# 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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 ```gherkin 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