Saltar a contenido

⏰ DTM — Distributed Task Manager (Análisis y Absorción)

Fecha: 1 de abril de 2026 Propósito: Documentar qué es DTM, qué hace actualmente, y cómo Pet Flows lo absorbe Fuente: investigacion_dkv_pet_cloud.md, arquitectura general del ecosistema DKV


1. ¿Qué es DTM?

dkv-distributed-task-manager (DTM) es un servicio Java independiente que utiliza Quartz Scheduler para ejecutar tareas periódicas en el ecosistema DKV PET. Es un contenedor aislado que se conecta a su propia base de datos PostgreSQL para persistir los jobs de Quartz.

Posicionamiento en el Ecosistema

graph TB
    subgraph "Ecosistema DKV PET"
        PC["🐾 dkv-pet-cloud<br/>Spring Boot<br/>API + Lógica de negocio"]
        NC["🦎 netcomp<br/>Erlang<br/>Platform legacy"]
        NTF["📲 dkv-notifications<br/>Erlang OTP<br/>Push notifications"]
        DTM["⏰ DTM<br/>Java + Quartz<br/>Tareas planificadas"]
        PF["📊 dkv-pet-flows<br/>Quarkus + Dapr<br/>Customer Engagement"]
    end

    DTM -->|"HTTP calls"| PC
    DTM -->|"HTTP calls"| NTF
    PC <-->|"RabbitMQ"| NC

    style DTM fill:#6366f1,color:#fff
    style PC fill:#009BE0,color:#fff
    style NTF fill:#D97706,color:#fff
    style PF fill:#7C3AED,color:#fff

2. Tipos de Tareas que DTM Ejecuta

Basado en el análisis del ecosistema, DTM se encarga de tareas como:

Categoría Ejemplos Frecuencia típica
Limpieza Purgar encounters inactivos, limpiar tokens expirados Diaria / Semanal
Reportes Generar reportes de actividad, métricas de colas Diaria
Sincronización Sincronizar datos entre sistemas, reindexar ES Periódica
SLA / Alertas Verificar tiempos de respuesta de colas, enviar alertas Cada N minutos
Mantenimiento Rotación de logs, compactación de datos Semanal

Características Técnicas

Aspecto Detalle
Lenguaje Java
Scheduler Quartz Scheduler
Persistencia PostgreSQL (tablas QRTZ_*)
Ejecución Cron expressions
Distribución Quartz clustering (múltiples instancias)
Imagen Docker Container independiente en el stack

3. ¿Por Qué Absorber DTM?

Problema actual

  • DTM es un servicio aislado sin dashboard ni visibilidad
  • Las tareas planificadas están dispersas entre DTM (Quartz), las notificaciones de cola (pet-cloud), y configuraciones ad-hoc
  • No hay un lugar único donde un operador pueda ver "¿qué tareas periódicas tenemos y cuándo se ejecutan?"

Valor de la absorción

ANTES                                    DESPUÉS
──────                                   ───────

DTM (Quartz):                            Pet Flows (Dapr Timers + Cron Bindings):
  - tarea_limpieza_diaria                  - Flujo: Limpieza diaria
  - tarea_reporte_semanal                  - Flujo: Reporte semanal
  - tarea_alerta_sla                       - Flujo: Alerta SLA
  - tarea_sync_datos                       - Flujo: Sync datos

Cola (pet-cloud):                          ┌────────────────────────┐
  - notify_encounter_*                     │  TODO en un solo lugar │
  - notify_inactive_*                      │  con editor visual     │
  - notify_unassigned_*                    │  y dashboard unificado │
                                           └────────────────────────┘
Config ad-hoc:  
  - cron en docker-compose
  - scripts de bash con crontab

4. Estrategia de Absorción: Strangler Fig

[!IMPORTANT] NO hacemos una migración big-bang. DTM sigue corriendo. Los nuevos scheduling van a Pet Flows. Los históricos expiran solos.

Fases de la Absorción

graph LR
    subgraph "Fase 1: Coexistencia"
        DTM1["⏰ DTM<br/>Tareas históricas<br/>siguen corriendo"]
        PF1["📊 Pet Flows<br/>NUEVAS tareas<br/>Dapr Cron Bindings"]
    end

    subgraph "Fase 2: Migración gradual"
        DTM2["⏰ DTM<br/>Menos tareas<br/>solo las que no expiran"]
        PF2["📊 Pet Flows<br/>Absorbe tareas<br/>una por una"]
    end

    subgraph "Fase 3: Apagado"
        PF3["📊 Pet Flows<br/>TODAS las tareas<br/>DTM eliminado"]
    end

    DTM1 --> DTM2
    PF1 --> PF2
    DTM2 -.->|"se apaga"| PF3
    PF2 --> PF3

    style DTM1 fill:#6366f1,color:#fff
    style DTM2 fill:#f97316,color:#fff
    style PF1 fill:#7C3AED,color:#fff
    style PF2 fill:#7C3AED,color:#fff
    style PF3 fill:#059669,color:#fff

Reglas de la Absorción

Regla Descripción
R1 Toda NUEVA tarea planificada se crea como flujo en Pet Flows (con trigger Cron)
R2 DTM NO recibe nuevos jobs. Solo ejecuta los existentes
R3 Cada tarea de DTM se evalúa: ¿expira sola? Si sí → no hacer nada. Si no → migrar a Pet Flows
R4 Cuando DTM no tiene jobs activos → apagar contenedor
R5 No hay ETL de datos. Las tablas QRTZ_* se archivan, no se migran

5. Equivalencia Técnica: Quartz vs Dapr

Capacidad Quartz (DTM) Dapr (Pet Flows)
Cron scheduling CronTrigger Cron Binding (YAML)
One-time scheduling SimpleTrigger ctx.createTimer(duration)
Persistencia de jobs QRTZ_* tables ✅ Built-in (state store)
Clustering ✅ Quartz Cluster Mode ✅ Dapr sidecar per instance
Retry / failover ✅ Misfire policies ✅ Dapr retry policies
Dashboard / visibilidad ❌ No tiene ✅ Pet Flows UI + SSE monitor
Editor visual ✅ Canvas con nodo Cron Trigger

6. Impacto en el MVP Backlog

Para el MVP Backlog de Pet Flows, la absorción de DTM no es prioridad. El flujo de encuesta no necesita nada de DTM. Pero el segundo flujo (SLA de colas) sí se beneficiaría de tener un trigger tipo Cron.

Flujo MVP Backlog ¿Necesita DTM? Tipo de trigger
Encuesta post-consulta ❌ No Event-based (webhook)
Alerta SLA de cola 🟡 Parcial Podría ser cron (polling SLA) o event-based
Re-engagement por inactividad ✅ Sí Cron (diario) + segmento

Timeline Recomendado

MVP Backlog (Semana 1-5):     Sin DTM. Solo event-based triggers.
Sprint 4 (Semana 6-7): Implementar Cron Binding en Dapr. Primer flujo cron.
Sprint 5+ (Semana 8+): Migrar tareas DTM existentes a flujos Pet Flows.
Post-GoLive (Julio+):  Apagar contenedor DTM.

7. Beneficio Estratégico

Cuando Pet Flows absorba DTM, DKV tendrá:

  1. Un único dashboard donde ver flujos de engagement + tareas de mantenimiento
  2. Un único motor (Dapr) para ejecutar todo tipo de scheduling
  3. Un único formato (flow JSON) para definir tanto campañas como tareas operativas
  4. Menos contenedores en producción (DTM desaparece)

Esto posiciona a Pet Flows como el "centro de control de operaciones automatizadas" del ecosistema DKV PET.


Documentos Relacionados

Documento Propósito
01 — Mapa de Piezas Vista general del ecosistema
aux_03 — Netcomp Webhooks Análisis de webhooks y Leader/Follower
05 — Direcciones Estratégicas Sprint plan