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
- Usuario autenticado con permiso
tenants:update o settings:update
- 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
Subir Logo
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 |