# US-MAI004-002: Consolidar OTs en embarque **ID:** US-MAI004-002 **Módulo:** MAI-004 (Planeación TMS) **Prioridad:** Alta **Story Points:** 8 --- ## Historia de Usuario **Como** planner de tráfico **Quiero** que el sistema sugiera qué OTs puedo consolidar en un mismo viaje **Para** maximizar la utilización de capacidad de las unidades --- ## Criterios de Aceptación ### CA-001: Selección múltiple **Dado** que hay OTs con características similares **Cuando** selecciono 2 o más OTs en el tablero **Entonces** se habilita el botón "Sugerir Consolidación" ### CA-002: Análisis de compatibilidad **Dado** que solicito sugerencia de consolidación **Cuando** el sistema analiza las OTs **Entonces** verifica: zona origen similar, destinos cercanos, ventanas compatibles, mismo tipo equipo ### CA-003: Resultado positivo **Dado** que las OTs son consolidables **Cuando** veo el resultado **Entonces** muestra: capacidad combinada, ahorro estimado, y botón "Crear Embarque" ### CA-004: Resultado negativo **Dado** que las OTs no son consolidables **Cuando** veo el resultado **Entonces** muestra el motivo: "Ventanas incompatibles", "Destinos muy lejanos", etc. ### CA-005: Creación de embarque **Dado** que acepto la sugerencia **Cuando** confirmo crear embarque **Entonces** se crea EMB con las OTs agrupadas y aparece en el tablero --- ## Mockup / UI ``` ┌─────────────────────────────────────────────────────────────────┐ │ ANÁLISIS DE CONSOLIDACIÓN [X]│ ├─────────────────────────────────────────────────────────────────┤ │ │ │ OTs Seleccionadas: │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ OT-1234 │ CDMX → GDL │ 8 ton │ Ventana 8:00-12:00 │ │ │ │ OT-1237 │ CDMX → GDL Sur │ 4 ton │ Ventana 9:00-14:00 │ │ │ └───────────────────────────────────────────────────────────┘ │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ✅ CONSOLIDACIÓN RECOMENDADA │ │ │ │ Criterios cumplidos: │ │ ✓ Mismo origen: CDMX │ │ ✓ Destinos cercanos: 15 km entre GDL y GDL Sur │ │ ✓ Ventanas compatibles: Overlap 9:00-12:00 │ │ ✓ Mismo tipo equipo: Caja seca │ │ │ │ Capacidad combinada: 12 toneladas │ │ Unidad sugerida: Caja seca 18 ton (67% utilización) │ │ │ │ 💰 Ahorro estimado: $2,500 vs 2 viajes separados │ │ │ │ [Cancelar] [Crear Embarque EMB-0089] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Reglas de Consolidación | Criterio | Condición | Peso | |----------|-----------|------| | Mismo origen | Distancia < 20km | Obligatorio | | Destinos cercanos | Distancia < 50km | Obligatorio | | Ventanas compatibles | Overlap > 2 horas | Obligatorio | | Mismo tipo equipo | Match exacto | Obligatorio | | Mismo cliente | Preferido | Opcional | | Capacidad disponible | Sum < 100% unidad | Obligatorio | --- ## Notas Técnicas - Algoritmo de clustering por zona geográfica - Cálculo de distancias vía API de mapas (cache) - El ahorro se calcula: 2*tarifa_individual - tarifa_consolidada --- ## Definición de Done - [ ] Selección múltiple de OTs - [ ] Algoritmo de análisis implementado - [ ] UI de resultado con detalles - [ ] Creación de embarque funcional - [ ] Cálculo de ahorro estimado - [ ] Tests unitarios del algoritmo