ADR-003: Sistema Maker-Checker para Cambios Criticos
Estado: Aceptada
Fecha: 2026-05-18
Autor: Equipo de Arquitectura
Contexto
Como plataforma financiera, se requiere un trail de auditoria y flujos de aprobacion para cambios criticos. Esto incluye:
- Configuracion de productos de credito (tasas, plazos, montos)
- Asignacion y modificacion de roles de usuario
- Configuracion de proveedores (bureaus, firmas electronicas)
- Cambios en reglas de negocio
Los reguladores financieros exigen trazabilidad completa de quien solicito un cambio, quien lo aprobo, y cuando se aplico.
Decision
Implementar un sistema transversal de change_request (solicitud de cambio) con patron Maker-Checker. El sistema es configurable por tenant:
- Que entidades requieren aprobacion
- Quien puede aprobar (roles, cantidad de aprobadores)
- Politicas de auto-aprobacion (ej: platform admin)
Cada change_request almacena:
json
{
"id": "cr_abc123",
"tenant_id": "tenant_xyz",
"entity_type": "product_config",
"entity_id": "prod_001",
"action": "update",
"payload_before": { "...snapshot actual..." },
"payload_after": { "...cambio propuesto..." },
"created_by": "user_maker",
"approved_by": "user_checker",
"status": "applied",
"created_at": "2026-05-18T10:00:00Z",
"applied_at": "2026-05-18T10:05:00Z"
}Alternativas Consideradas
| Alternativa | Pros | Contras |
|---|---|---|
| Sin aprobacion (cambios directos) | Simple, rapido | No cumple regulacion, sin trazabilidad |
| Sistemas de aprobacion por dominio | Cada dominio controla su flujo | Duplicacion de logica, inconsistencia entre dominios |
| Herramienta externa de workflow | Separacion de concerns | Dependencia externa, latencia, complejidad de integracion |
| Sistema transversal configurable (elegida) | Consistente, auditable, configurable por tenant | Agrega complejidad a las mutaciones |
Consecuencias
Positivas
- Cumplimiento regulatorio completo con trail de auditoria inmutable
- Trazabilidad total: quien pidio, quien aprobo, que cambio, cuando
- Configurable por tenant: cada organizacion define sus politicas
- Platform admin puede auto-aprobar para agilizar operaciones internas
- Reutilizable en todos los dominios de la plataforma
Negativas
- Agrega complejidad a todas las mutaciones de entidades criticas
- Latencia adicional en cambios que requieren aprobacion
- Requiere UI dedicada para gestion de solicitudes pendientes
Riesgos
- Si la configuracion de politicas es muy compleja, los tenants podrian configurar mal y bloquear operaciones
- El volumen de change_requests podria crecer significativamente y requerir estrategia de archivado