Saltar a contenido

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).

Decisiones de plataforma (numeración global)

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.

Core de plataforma

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.