# US-MAI005-006: Sugerir mejor unidad para asignacion **ID:** US-MAI005-006 **Modulo:** MAI-005 (Despacho) **Prioridad:** Alta **Story Points:** 8 --- ## Historia de Usuario **Como** despachador del centro de control **Quiero** ver sugerencias de asignacion con scoring detallado para cada viaje pendiente **Para** tomar decisiones informadas y asignar la mejor unidad disponible de forma eficiente --- ## Criterios de Aceptacion ### CA-001: Visualizar sugerencias ordenadas **Dado** que tengo un viaje pendiente de asignar **Cuando** solicito sugerencias de asignacion **Entonces** veo una lista de unidades ordenadas por score total de mayor a menor ### CA-002: Mostrar desglose de score **Dado** que veo la lista de sugerencias **Cuando** reviso cada unidad sugerida **Entonces** puedo ver el desglose del score por criterio (distancia, capacidad, disponibilidad, skills) ### CA-003: Indicador visual de score **Dado** que veo una unidad sugerida **Cuando** observo el score total **Entonces** veo un indicador visual (verde >80, amarillo 60-80, rojo <60) ### CA-004: Informacion de distancia **Dado** que veo una unidad sugerida **Cuando** reviso los datos de distancia **Entonces** veo la distancia en km y el tiempo estimado de llegada al origen ### CA-005: Mostrar ubicacion en mapa **Dado** que veo las sugerencias **Cuando** selecciono ver en mapa **Entonces** veo el origen del viaje y las unidades sugeridas con su ubicacion actual ### CA-006: Filtrar sugerencias **Dado** que solicito sugerencias **Cuando** aplico filtros (tipo de unidad, skills, distancia maxima) **Entonces** las sugerencias respetan los filtros aplicados ### CA-007: Asignar desde sugerencia **Dado** que revise las sugerencias **Cuando** selecciono una unidad y confirmo **Entonces** el viaje queda asignado y se registra el score en el log --- ## Mockup / UI ``` +-----------------------------------------------------------------------+ | SUGERENCIAS DE ASIGNACION [X] | +-----------------------------------------------------------------------+ | | | Viaje: VJE-0456 | Cliente: Transportes MX | | Origen: Av. Insurgentes 1234, CDMX | Destino: Queretaro Centro | | Capacidad requerida: 20 TON | Skills: HAZMAT | | | | Filtros: [Tipo: Todos v] [Distancia max: 50km] [Solo con HAZMAT] | | | | +----------------------------------------------------------------+ | | | #1 U-005 - Kenworth T680 [87] #### | | | | Juan Perez Garcia | 7.2 km | ETA: 15 min | | | | +-------------------------------------------------------+ | | | | | Distancia: 95/100 | Cap: 100/100 | Disp: 100/100 |Skill:90| | | | +-------------------------------------------------------+ | | | | Skills: HAZMAT, Refrigerado | | | | [Ver en Mapa] [Ver Detalles] [ASIGNAR] | | | +----------------------------------------------------------------+ | | | | +----------------------------------------------------------------+ | | | #2 U-012 - Freightliner Cascadia [72] ### | | | | Carlos Lopez | 15.3 km | ETA: 25 min | | | | +-------------------------------------------------------+ | | | | | Distancia: 70/100 | Cap: 100/100 | Disp: 50/100 |Skill:100| | | | +-------------------------------------------------------+ | | | | Skills: HAZMAT, Carga Pesada | | | | [Ver en Mapa] [Ver Detalles] [ASIGNAR] | | | +----------------------------------------------------------------+ | | | | +----------------------------------------------------------------+ | | | #3 U-008 - International LT [65] ## | | | | Roberto Sanchez | 22.1 km | ETA: 35 min | | | | +-------------------------------------------------------+ | | | | | Distancia: 55/100 | Cap: 100/100 | Disp: 100/100|Skill:70| | | | +-------------------------------------------------------+ | | | | Skills: HAZMAT (falta: ninguno) | | | | [Ver en Mapa] [Ver Detalles] [ASIGNAR] | | | +----------------------------------------------------------------+ | | | | Mostrando 3 de 3 unidades disponibles | Algoritmo: weighted_score_v1| | | +-----------------------------------------------------------------------+ ``` --- ## Notas Tecnicas - Endpoint: `POST /api/dispatch/suggest` - Calculo de distancia con formula Haversine - Criterios de scoring configurables en `dispatch_rules` - Cache de ubicaciones GPS con TTL de 30 segundos - Maximo de 5 sugerencias por defecto (configurable) - Score se persiste en `dispatch_logs` al asignar - Mapa utiliza componente MapView con marcadores dinamicos --- ## Definicion de Done - [ ] Endpoint /dispatch/suggest implementado - [ ] Algoritmo de scoring con 4 criterios - [ ] UI de lista de sugerencias con desglose - [ ] Indicadores visuales de score (colores) - [ ] Vista de mapa con unidades sugeridas - [ ] Filtros de busqueda funcionales - [ ] Integracion con endpoint /dispatch/assign - [ ] Tests unitarios del algoritmo de scoring - [ ] Tests E2E del flujo completo --- *US-MAI005-006 - Modulo MAI-005 - ERP Transportistas*