ERP-WMS Sync Middleware
Middleware de sincronización bidireccional entre sistemas ERP (Tango/SQL Server), WMS (API HTTP) y bases de datos MySQL.
Características Principales
- Sincronización bidireccional: Lee de cualquier source, escribe a cualquier destino
- Detección de cambios por hash: Solo sincroniza lo que cambió
- Cola de trabajos con prioridades: BullMQ con Redis
- Transforms configurables: Pipelines de transformación de datos
- Multi-tabla transaccional: una fila origen puede materializarse en varias tablas MySQL coordinadas (transacción + subselects para resolver IDs autogenerados)
- Dashboard web: Control visual con métricas, pause/resume, límites de ejecución
- Bull Board integrado: Gestión detallada de cola de trabajos
- Retry inteligente: Backoff exponencial con hasta 5 reintentos
- Alertas multicanal: email / webhook / Slack en jobs fallidos, con filtrado por destino
- OpenTelemetry: trazas, métricas y correlación de logs hacia SigNoz
Diagrama General
flowchart TB
subgraph Sources["📥 SOURCES (Leer)"]
TANGO[(Tango<br/>SQL Server)]
TANGO_DEV[(Tango Dev<br/>SQL Server)]
WMS_SRC[WMS API<br/>Source]
end
subgraph Core["⚙️ SYNC ENGINE"]
POLLER[Poller]
HASH[(Redis<br/>Hash Store)]
QUEUE[BullMQ<br/>Job Queue]
METRICS[Metrics<br/>Store]
end
subgraph Destinations["📤 DESTINATIONS (Escribir)"]
WMS[WMS API]
WMS_DEV[WMS Dev]
MYSQL[(MySQL Web)]
MYSQL_DEV[(MySQL Dev)]
TANGO_DEST[(Tango<br/>Destino)]
end
subgraph Dashboard["🖥️ DASHBOARD"]
API[REST API]
BULL[Bull Board]
WEB[Admin UI]
end
TANGO --> POLLER
TANGO_DEV --> POLLER
WMS_SRC --> POLLER
POLLER <--> HASH
POLLER --> QUEUE
POLLER --> METRICS
QUEUE --> WMS
QUEUE --> WMS_DEV
QUEUE --> MYSQL
QUEUE --> MYSQL_DEV
QUEUE --> TANGO_DEST
API --> POLLER
API --> QUEUE
BULL --> QUEUE
WEB --> API
Estructura del Proyecto
erp-wms-sync-ts/
├── src/
│ ├── index.ts # Entry point + API + Dashboard
│ ├── types/ # TypeScript types
│ ├── sources/ # Source adapters (leer)
│ │ ├── mssql-source.ts # SQL Server
│ │ └── http-source.ts # HTTP/REST APIs
│ ├── destinations/ # Destination adapters (escribir)
│ │ ├── http.ts # HTTP/REST APIs
│ │ ├── mysql.ts # MySQL
│ │ └── mssql.ts # SQL Server
│ ├── services/ # Servicios core
│ │ ├── poller.ts # Polling y detección de cambios
│ │ ├── hash-store.ts # Storage de hashes
│ │ ├── job-queue.ts # Cola BullMQ
│ │ └── metrics.ts # Métricas
│ ├── transforms/ # Transformaciones de datos
│ └── config/ # Configuración
│ ├── sources/ # Config de sources
│ ├── destinations/ # Config de destinations
│ └── sync-flows.ts # Definición de flujos
├── Dockerfile
├── docker-compose.yml
└── bitbucket-pipelines.yml
Accesos
| URL | Descripción |
|---|---|
http://localhost:8080/admin |
Dashboard de administración |
http://localhost:8080/admin/queues |
Bull Board (gestión de jobs) |
http://localhost:8080/health |
Health check |
http://localhost:8080/stats |
Estadísticas |