erp-core/docs/01-fase-foundation/MGN-004-tenants/requerimientos/RF-TENANT-002.md

12 KiB

RF-TENANT-002: Configuracion de Tenant

Identificacion

Campo Valor
ID RF-TENANT-002
Modulo MGN-004 Tenants
Prioridad P0 - Critica
Estado Ready
Fecha 2025-12-05

Descripcion

El sistema debe permitir a los administradores de cada tenant personalizar la configuracion de su organizacion, incluyendo informacion de la empresa, branding, configuraciones regionales, y parametros operativos. Esta configuracion afecta el comportamiento del sistema para todos los usuarios del tenant.


Actores

Actor Descripcion
Tenant Admin Administrador del tenant que configura
Platform Admin Puede modificar configuracion de cualquier tenant

Precondiciones

  1. Usuario autenticado con permiso tenants:update o settings:update
  2. Tenant activo

Categorias de Configuracion

1. Informacion de la Empresa

Campo Descripcion Ejemplo
companyName Nombre legal Empresa ABC S.A. de C.V.
tradeName Nombre comercial ABC Corp
taxId RFC/NIT/RUC EABC850101ABC
address Direccion fiscal Av. Principal #123
city Ciudad Ciudad de Mexico
state Estado/Provincia CDMX
country Pais MX
postalCode Codigo postal 06600
phone Telefono principal +52 55 1234 5678
email Email de contacto contacto@empresaabc.com
website Sitio web https://empresaabc.com

2. Branding

Campo Descripcion Ejemplo
logo Logo principal URL/base64
logoSmall Logo pequeno/icono URL/base64
favicon Favicon URL/base64
primaryColor Color primario #3B82F6
secondaryColor Color secundario #10B981
accentColor Color de acento #F59E0B

3. Configuracion Regional

Campo Descripcion Ejemplo
defaultLanguage Idioma por defecto es
defaultTimezone Zona horaria America/Mexico_City
defaultCurrency Moneda por defecto MXN
dateFormat Formato de fecha DD/MM/YYYY
timeFormat Formato de hora 24h
numberFormat Formato numerico es-MX
firstDayOfWeek Primer dia semana 1 (Lunes)

4. Configuracion Operativa

Campo Descripcion Ejemplo
fiscalYearStart Inicio ano fiscal 01-01
workingDays Dias laborables [1,2,3,4,5]
businessHoursStart Inicio horario 09:00
businessHoursEnd Fin horario 18:00
defaultTaxRate Tasa impuesto default 16
invoicePrefix Prefijo facturas FAC-
invoiceNextNumber Siguiente numero 1001

5. Configuracion de Seguridad

Campo Descripcion Ejemplo
passwordMinLength Longitud minima pass 8
passwordRequireSpecial Requerir especiales true
sessionTimeout Timeout sesion (min) 30
maxLoginAttempts Intentos maximos 5
lockoutDuration Duracion bloqueo (min) 15
mfaRequired MFA obligatorio false
ipWhitelist IPs permitidas []

Flujo Principal

Ver Configuracion

1. Tenant Admin accede a Configuracion > Empresa
2. Sistema muestra configuracion actual organizada en tabs:
   - Informacion General
   - Branding
   - Regional
   - Operaciones
   - Seguridad
3. Admin puede navegar entre tabs

Actualizar Configuracion

1. Admin modifica campos deseados
2. Sistema valida en tiempo real
3. Admin click en "Guardar Cambios"
4. Sistema valida todos los campos
5. Sistema guarda configuracion
6. Sistema aplica cambios (algunos requieren recarga)
7. Sistema muestra confirmacion
1. Admin click en "Cambiar Logo"
2. Sistema muestra modal de upload
3. Admin selecciona imagen
4. Sistema valida formato y tamano
5. Sistema genera versiones (original, thumbnail)
6. Sistema actualiza logo
7. Cambio visible inmediatamente en UI

Reglas de Negocio

ID Regla
RN-001 Configuracion se hereda de defaults de plataforma
RN-002 Tenant puede sobrescribir cualquier default
RN-003 Algunos campos requieren validacion especial (taxId por pais)
RN-004 Logo: max 5MB, formatos JPG/PNG/SVG
RN-005 Colores deben ser hex validos
RN-006 Cambios de seguridad aplican en siguiente login
RN-007 IP Whitelist vacia = sin restriccion

Criterios de Aceptacion

Escenario 1: Ver configuracion actual

Given un Tenant Admin autenticado
When accede a GET /api/v1/tenant/settings
Then el sistema retorna configuracion completa
  And incluye valores del tenant
  And incluye defaults de plataforma donde no hay override

Escenario 2: Actualizar informacion de empresa

Given un Tenant Admin autenticado
When actualiza companyName a "Nueva Empresa S.A."
Then el sistema guarda el cambio
  And retorna configuracion actualizada
  And el nombre aparece en toda la UI del tenant

Escenario 3: Personalizar branding

Given un Tenant Admin con configuracion default
When sube un logo y cambia primaryColor a "#FF5733"
Then el sistema guarda el logo en storage
  And actualiza el color primario
  And la UI refleja los cambios de branding

Escenario 4: Configuracion de seguridad

Given configuracion de seguridad actual
When Tenant Admin establece passwordMinLength=12
Then el sistema guarda la configuracion
  And nuevas contrasenas deben tener minimo 12 caracteres
  And usuarios existentes no son afectados hasta cambio de pass

Escenario 5: Herencia de defaults

Given tenant sin configuracion de timezone
  And plataforma con default "America/Mexico_City"
When se consulta configuracion del tenant
Then timezone muestra "America/Mexico_City"
  And se indica que es valor heredado (no override)

Mockup / Wireframe

+------------------------------------------------------------------+
|  [Logo]   Configuracion de Empresa                                |
+------------------------------------------------------------------+
| [General] [Branding] [Regional] [Operaciones] [Seguridad]        |
+------------------------------------------------------------------+
|                                                                   |
| Tab: General                                                      |
| ┌─────────────────────────────────────────────────────────────┐  |
| │ INFORMACION LEGAL                                            │  |
| │                                                               │  |
| │ Razon Social      [Empresa ABC S.A. de C.V.         ]       │  |
| │ Nombre Comercial  [ABC Corp                          ]       │  |
| │ RFC               [EABC850101ABC                     ]       │  |
| │                                                               │  |
| │ DIRECCION FISCAL                                             │  |
| │                                                               │  |
| │ Direccion         [Av. Principal #123               ]       │  |
| │ Ciudad            [Ciudad de Mexico                  ]       │  |
| │ Estado            [CDMX                      ▼]              │  |
| │ Codigo Postal     [06600                            ]       │  |
| │ Pais              [Mexico                    ▼]              │  |
| │                                                               │  |
| │ CONTACTO                                                     │  |
| │                                                               │  |
| │ Telefono          [+52 55 1234 5678                 ]       │  |
| │ Email             [contacto@empresaabc.com          ]       │  |
| │ Sitio Web         [https://empresaabc.com           ]       │  |
| └─────────────────────────────────────────────────────────────┘  |
|                                                                   |
| [  Cancelar  ]                           [ Guardar Cambios ]     |
+------------------------------------------------------------------+

Tab: Branding
┌─────────────────────────────────────────────────────────────────┐
│ LOGOS                                                            │
│                                                                   │
│ +-------------+    +-------+                                     │
│ |             |    |       |                                     │
│ |    LOGO     |    | ICON  |    [Cambiar Logo] [Cambiar Icono]  │
│ |             |    |       |                                     │
│ +-------------+    +-------+                                     │
│                                                                   │
│ COLORES                                                          │
│                                                                   │
│ Primario     [#3B82F6] ████████                                 │
│ Secundario   [#10B981] ████████                                 │
│ Acento       [#F59E0B] ████████                                 │
│                                                                   │
│ [Vista previa]                                                   │
└─────────────────────────────────────────────────────────────────┘

Notas Tecnicas

API Endpoints

// Obtener configuracion completa
GET /api/v1/tenant/settings

// Response 200
{
  "company": {
    "companyName": "Empresa ABC S.A. de C.V.",
    "tradeName": "ABC Corp",
    "taxId": "EABC850101ABC",
    // ...
    "_inherited": false
  },
  "branding": {
    "logo": "https://storage.../logo.png",
    "primaryColor": "#3B82F6",
    // ...
    "_inherited": ["secondaryColor"]  // campos heredados
  },
  "regional": {
    "defaultLanguage": "es",
    "defaultTimezone": "America/Mexico_City",
    // ...
  },
  "operational": { ... },
  "security": { ... }
}

// Actualizar configuracion (parcial)
PATCH /api/v1/tenant/settings
{
  "company": {
    "companyName": "Nueva Empresa S.A."
  },
  "branding": {
    "primaryColor": "#FF5733"
  }
}

// Subir logo
POST /api/v1/tenant/settings/logo
Content-Type: multipart/form-data
logo: [file]
type: "main" | "small" | "favicon"

// Reset a defaults
POST /api/v1/tenant/settings/reset
{ "sections": ["branding"] }  // o "all"

Estructura de Settings

interface TenantSettings {
  company: CompanySettings;
  branding: BrandingSettings;
  regional: RegionalSettings;
  operational: OperationalSettings;
  security: SecuritySettings;
}

// Se guarda como JSONB en la tabla tenant_settings
// con merge inteligente con defaults

Dependencias

ID Descripcion
RF-TENANT-001 Tenant debe existir
Storage Para logos e imagenes
Cache Para settings frecuentes

Estimacion

Tarea Puntos
Backend: Settings endpoints 3
Backend: Logo upload 2
Backend: Merge con defaults 2
Backend: Tests 2
Frontend: SettingsPage (5 tabs) 6
Frontend: BrandingPreview 2
Frontend: Tests 2
Total 19 SP

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 System Creacion inicial