ARQUITECTURA
Índice del proyecto. Cada entrada es un enlace clicable que lleva al archivo
del ADR. Los títulos de este documento generan la tabla de contenidos
automática de GitHub/VS Code (icono ☰ arriba a la izquierda).
ADRs que rigen la arquitectura transversal del ecosistema ERP/CRM — valen
para todos los microservicios, no pertenecen a ninguno en exclusiva.
| N.º |
ADR |
Estado |
Tema |
| 0001 |
Patrón Router → Service → Repository |
Aceptado |
Capas del backend y frontera por dominio |
| 0002 |
Multiempresa y aislamiento por RLS |
Aceptado |
Una base por producto, empresa_id + RLS |
| 0003 |
Plataforma multiservicio ERP/CRM |
Aceptado |
14 microservicios, 3 bases, reglas no negociables |
| 0004 |
Nomenclatura de tablas, campos y esquemas |
Propuesto |
Prefijos, columnas estándar, tipos de datos |
| 0005 |
Código limpio Python/FastAPI |
Propuesto |
Buenas prácticas, setup y migraciones |
| 0006 |
Autenticación con JWT |
Propuesto |
Emisión, transporte y tenencia en el token |
| 0007 |
Frontend React: stack y conexión |
Propuesto |
React 18, Vite, MUI, auth y API |
| 0008 |
Auditoría y registro de movimientos |
Propuesto |
Navegación (aplicaciones/módulos/menú) + audit_log por producto |
| 0009 |
Captura de auditoría en el backend |
Propuesto |
Middleware automático + mapping por servicio + AuditService (FastAPI) |
| 0010 |
Menú y auditoría en el frontend |
Propuesto |
Consumo del catálogo y vista de movimientos (React) |
| 0011 |
UUID vs BIGINT entre servicios |
Aceptado |
Cuándo usar UUID y cuándo BIGINT |
| 0012 |
RLS: aislamiento por empresa |
Aceptado |
Middleware, SET app.current_empresa_id, service accounts |
| 0013 |
Modelo de datos: navegación |
Propuesto |
cat_aplicaciones, cfg_modulos, cfg_menu, cfg_menu_acciones |
| 0014 |
Modelo de datos: auditoría |
Propuesto |
audit_log (particionada) |
| 0015 |
Tareas programadas (APScheduler) |
Propuesto |
Jobs periódicos: particionado, outbox, purgas, caché |
Decisiones por microservicio (numeración local)
Cada microservicio mantiene su propio historial en adr/, con
numeración reiniciada desde 0001. Al mover el historial a su repositorio
de GitLab, los números se conservan. Consulta el README.md de cada servicio
para su registro.
| Microservicio |
Dominio |
Registro |
| svc-identidad |
usuarios, empresas, sucursales, permisos, SSO ERP+CRM |
adr |
| svc-documents |
generación de documentos PDF/Excel/Word |
adr |
| svc-workflow |
motor genérico de casos/aprobaciones |
adr |
| svc-notificaciones |
WhatsApp, marcaciones biométricas |
adr |
ERP
| Microservicio |
Dominio |
Registro |
| svc-operaciones |
inventario, recepción, producción, calidad, envasado |
adr |
| svc-pedidos |
pedido de despacho, tienda/app |
adr |
| svc-contable |
facturación, CxC, contabilidad, caja |
adr |
| svc-compras |
órdenes, proveedores, cuentas por pagar |
adr |
| svc-rrhh |
nómina, asistencia, faena pesquera |
adr |
| svc-activos |
activos, GDT, gastos por activo |
adr |
| svc-integraciones |
Aylen, QBO, Siigo (solo escritura) |
adr |
| svc-reportes |
consolidados gerenciales (solo lectura) |
adr |
CRM
| Microservicio |
Dominio |
Registro |
| svc-clientes |
cartera, contactos, historial |
adr |
| svc-fuerza-ventas |
promotores, presupuesto de cliente |
adr |
Notas
- Plantilla: los archivos de plantilla viven en la carpeta
template/. Copia uno de ellos para crear un ADR nuevo.
- Cómo añadir una decisión de plataforma: crear
NNNN-titulo.md en la
carpeta transversales/ (continúa la numeración global) y añadir su fila a la tabla superior.
- Cómo añadir una decisión de microservicio: dentro de
adr/ de ese
servicio, crear NNNN-titulo.md (reinicia desde 0001) y añadir su fila al
README.md de ese servicio — nunca a la numeración global.