◆ Sección técnica

Arquitectura: 4 capas, 30+ BPL, datos integrados

Cada BPL se compila, prueba y distribuye de forma independiente, con dependencias rigurosamente monodireccionales. Varias bases de datos orquestadas por la sincronización, con PostgreSQL como hub de plataforma. Junto a ello, MemoryLens, seguridad e integración.

4
Capas
30+
BPL modulares
340k+
Líneas de código
580+
Unit Pascal
Arquitectura de paquetes
4 capas, cero acoplamiento

Las dependencias son monodireccionales. Actualizar un módulo significa sustituir un archivo .bpl, sin recompilar el ejecutable.

Layer 0
Framework
SF_CoreSF_Database SF_SyncSF_Tools
Layer 1
Common
DtoMes_Common Auth · Config · Menu · Help · SupportPanel · App_MLHelper · Theme
Layer 2
Módulos
ProdottiPrintProdTools MLLaboratorioDocTipoA DocTipoBMLEditorMLSupport PianificazioneProduzioneSBOM
Layer 3
EXE
DtoMesAdmin4.exe Bootstrap mínimo — toda la lógica en las BPL
Capa de datos
PostgreSQL como hub de plataforma

La plataforma sigue siendo multi-base de datos — Firebird para el MES, SQL Server/COBOL para el ERP — pero los servicios transversales (identidad, permisos, telemetría, documentación, IA) convergen en PostgreSQL. El salto está aislado tras interfaces (IAuthProvider, IAuthRepository): cambiar la fuente de datos significa cambiar una implementación y una línea de bootstrap, sin tocar los módulos.

🔑 Identidad & permisos

Tablas AUTH_* (recursos, acciones, roles, matriz de permisos, roles de usuario) y proveedor de identidad en PostgreSQL. FK reales, permisos e identidad co-ubicados.

📡 Telemetría & auditoría

Eventos aplicativos y de seguridad consolidados en ml_app_events en PostgreSQL, con patrón outbox desde el SyncEventHub.

🧮 Búsqueda semántica

Con pgvector, los embeddings viven junto a los datos: ninguna segunda base de datos, búsqueda semántica donde ya está la información.

SF.Auth.Provider.pas — un cambio de implementación, no de módulos
// La identidad es abstracta: Firebird hoy, PostgreSQL mañana
if HasAuthProvider then
  Result := CurrentAuthProvider.Authenticate(AUser, APwd)
else
  Result := LegacyLogin2(AUser, APwd);  // fallback

// Cutover a PG = una línea de bootstrap:
SetAuthProvider(TAuthPgProvider.Create(connPG));
Infraestructura transversal · heredada vía MCP
El sistema nervioso que cada módulo hereda

Dashboard, telemetría, auditoría, documentación, log y sincronización no son opciones por módulo: son servicios del framework. Un scaffolding conforme a las reglas del servidor MCP (scaffold_module) los engancha automáticamente — un módulo generado nace ya observable, trazado y documentado.

SEH · TelemetríaSyncEventHub · outbox → PostgreSQL · :8091
DAH · DashboardDtoMesAnalyticsHub · web interno · :8092
Auditoría centralizadaml_app_events en PostgreSQL · vocabulario RBAC
MemoryLens3 pilares: DEV · USER · SUPPORT
MLPivotarchivo + full-text · vía MCP
Logtrazado estructurado, coherente
Nginxreverse proxy de los cuadros de mando web
Sync PostgreSQLconsolidación de eventos/doc/embeddings
El punto: estas capacidades viven en el framework, no en los módulos. El servidor MCP codifica las reglas del framework, así un módulo generado hereda todo el sistema nervioso — coherente, observable y conforme desde el primer día. Ver IA & MCP →
MemoryLens
Documentación, diagnóstico, ayuda. Unificados.

Un sistema transversal que sirve a tres públicos con una única arquitectura. Cada módulo accede vía TMLHelper: un uses, cero dependencias adicionales.

DEV · Desarrollador

Captura errores, mide rendimiento, documenta decisiones de arquitectura. Browser ML para navegación cross-módulo.

USER · Usuario final

Ayuda contextual con botón ? en cada frame. Tips, avisos, guías. Late-binding: si ML no está cargada, fallback graceful.

SUPPORT · Soporte

Panel de diagnóstico con badge de eventos. Creación de tickets con contexto automático. Visor de eventos con detalle.

Seguridad & auditoría
RBAC, enforcement, trazabilidad

Autenticación y autorización bien hechas: modelo de permisos centralizado, enforcement declarativo, auditoría en PostgreSQL. Checklist interna OWASP ASVS L1, cimientos listos para verificaciones futuras.

🔑 RBAC centralizado

Recursos, acciones y roles en tabla. Un permiso es el par (recurso, acción); un rol es un conjunto de permisos; el usuario recibe uno o más roles. Complementario al modelo de niveles/entidades existente.

🚫 Enforcement declarativo

Guardias configuradas en JSON sobre formularios, menús y acciones. Rollout incremental "uno a la vez", con fail-open mientras el enforcement no esté activo en el módulo.

⚖ Segregación de funciones (SoD)

Quien crea no aprueba. Base APPROVE ya separada, control dinámico sobre acciones sensibles con override trazado.

📜 Auditoría & hash-chain

Eventos de seguridad (login, acceso denegado, override) en PostgreSQL. Cadena hash append-only: la propiedad "no manipulado" sin blockchain.

Sincronización · el corazón de la integración
Multi-base de datos, multi-perfil, cero triggers

Es el punto central de la arquitectura: SyncFramework mantiene alineadas bases de datos heterogéneas (SQL Server/COBOL del ERP, Firebird del MES, PostgreSQL de la plataforma) con un engine bidireccional basado en hash que no requiere triggers ni timestamps en las tablas de origen. Cada sistema queda en su lugar; los datos permanecen coherentes.

SQL Server

ERP / COBOL

SyncFramework

Engine basado en hash

Firebird

MES local

PostgreSQL

Plataforma · IA

🔒 Shadow Database

Deletion tracking sin modificar las tablas de origen. Garbage collector para la limpieza automática de las entradas obsoletas.

⇄ Parallel Executor

Ejecución multi-perfil en paralelo. Cada perfil tiene source, target y transform configurables.

⚠ Conflict Tracker

Registros fallidos trazados con retry. Conflictos gestionados con política configurable por perfil.

▶ Windows Service

Consola y servicio. Heartbeat en la BD para la monitorización. Graceful shutdown.

Por qué importa: la sincronización es lo que permite a ERP, MES y plataforma coexistir sin duplicar la gestión. Documentación y embeddings están en PostgreSQL, junto a los datos. Ver IA & MCP →

De la arquitectura a la IA

PostgreSQL debajo, Ollama al lado, MCP como puente hacia los modelos.

IA & MCP → Explora los módulos ↑ Volver a la panorámica