erp-transportistas-v2/docs/02-definicion-modulos/MAI-004-planeacion/historias-usuario/US-MAI004-002.md
Adrian Flores Cortes 9caeae936a docs: Add MAI-002, MAI-004, MAI-005 module specifications
MAI-002 (Tarifas y SLA):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (31 SP total)
- Covers: tarifario por lane, recargos, SLA, cotizaciones, aprobaciones

MAI-004 (Planeacion TMS):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (39 SP total)
- Covers: tablero planeacion, consolidacion, asignacion, validaciones, ETA

MAI-005 (Despacho):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (28 SP total)
- Covers: checklist NOM-068, sellos, evidencias, kit documental, gate out

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:51:58 -06:00

111 lines
4.9 KiB
Markdown

# 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