Saltar a contenido

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

Repositorio

mundo-it/erp-wms-sync