erp-transportistas-v2/docs/02-definicion-modulos/MAI-005-despacho/historias-usuario/US-MAI005-009.md
Adrian Flores Cortes 6ed7f9e2ec [BACKUP] Pre-restructure workspace backup 2026-01-29
- Updated docs and inventory files
- Added new architecture docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 17:35:54 -06:00

142 lines
6.2 KiB
Markdown

# US-MAI005-009: Reasignar viaje con motivo
**ID:** US-MAI005-009
**Modulo:** MAI-005 (Despacho)
**Prioridad:** Alta
**Story Points:** 5
---
## Historia de Usuario
**Como** despachador del centro de control
**Quiero** poder cambiar la unidad asignada a un viaje registrando el motivo del cambio
**Para** responder a imprevistos operativos y mantener trazabilidad de las decisiones
---
## Criterios de Aceptacion
### CA-001: Iniciar reasignacion
**Dado** que tengo un viaje con unidad asignada
**Cuando** selecciono la opcion de reasignar
**Entonces** se abre el flujo de reasignacion mostrando la asignacion actual
### CA-002: Seleccionar motivo obligatorio
**Dado** que inicio la reasignacion
**Cuando** selecciono una nueva unidad
**Entonces** debo elegir un motivo de la lista predefinida
### CA-003: Motivos predefinidos
**Dado** que debo seleccionar motivo
**Cuando** veo la lista de opciones
**Entonces** encuentro: Falla mecanica, Operador no disponible, Solicitud cliente, Optimizacion, Skills no coinciden, Problema capacidad, Otro
### CA-004: Detalle adicional opcional
**Dado** que seleccione un motivo
**Cuando** selecciono "Otro" o quiero dar mas contexto
**Entonces** puedo escribir un detalle adicional en texto libre
### CA-005: Ver sugerencias para reasignacion
**Dado** que inicio la reasignacion
**Cuando** busco nueva unidad
**Entonces** veo sugerencias ordenadas por score excluyendo la unidad actual
### CA-006: Confirmar reasignacion
**Dado** que seleccione nueva unidad y motivo
**Cuando** confirmo la reasignacion
**Entonces** el viaje se asigna a la nueva unidad y la anterior queda disponible
### CA-007: Notificar afectados
**Dado** que se confirma la reasignacion
**Cuando** el proceso termina
**Entonces** se notifica al operador anterior (liberado) y al nuevo (asignado)
### CA-008: Registrar en log de auditoria
**Dado** que se completa la reasignacion
**Cuando** consulto el historial del viaje
**Entonces** veo el registro con: unidad anterior, nueva unidad, motivo, detalle, usuario, timestamp
---
## Mockup / UI
```
+-----------------------------------------------------------------------+
| REASIGNAR VIAJE [X] |
+-----------------------------------------------------------------------+
| |
| Viaje: VJE-0456 | Cliente: Transportes MX |
| Origen: CDMX | Destino: Queretaro | Fecha: 27-Ene-2026 |
| |
| ASIGNACION ACTUAL |
| +----------------------------------------------------------------+ |
| | Unidad: U-005 Kenworth T680 | |
| | Operador: Juan Perez Garcia | |
| | Asignado: 27-Ene-2026 08:30 por admin@transportes.com | |
| +----------------------------------------------------------------+ |
| |
| MOTIVO DE REASIGNACION * |
| +----------------------------------------------------------------+ |
| | ( ) Falla mecanica | |
| | (x) Operador no disponible | |
| | ( ) Solicitud del cliente | |
| | ( ) Optimizacion de rutas | |
| | ( ) Skills no coinciden | |
| | ( ) Problema de capacidad | |
| | ( ) Otro | |
| +----------------------------------------------------------------+ |
| |
| Detalle adicional (opcional): |
| +----------------------------------------------------------------+ |
| | Operador reporto enfermedad esta manana | |
| +----------------------------------------------------------------+ |
| |
| NUEVA UNIDAD |
| +----------------------------------------------------------------+ |
| | #1 U-012 Freightliner Cascadia [72] ### [SELECT] | |
| | Carlos Lopez | 15.3 km | DISPONIBLE | |
| +----------------------------------------------------------------+ |
| | #2 U-008 International LT [65] ## [ ] | |
| | Roberto Sanchez | 22.1 km | DISPONIBLE | |
| +----------------------------------------------------------------+ |
| | #3 U-015 Volvo VNL [58] ## [ ] | |
| | Maria Garcia | 28.5 km | DISPONIBLE | |
| +----------------------------------------------------------------+ |
| |
| [Cancelar] [CONFIRMAR CAMBIO] |
| |
+-----------------------------------------------------------------------+
```
---
## Notas Tecnicas
- Endpoint: `POST /api/dispatch/reassign`
- Motivos definidos como ENUM en backend: `ReassignReason`
- Requiere permiso `dispatch:write`
- Notificaciones via modulo de notificaciones existente
- Log se guarda en `dispatch_logs` con action='REASSIGNED'
- Al confirmar: actualizar `trips.unit_id`, cambiar estado unidad anterior a AVAILABLE
- Transaccion atomica para evitar estados inconsistentes
---
## Definicion de Done
- [ ] Endpoint /dispatch/reassign implementado
- [ ] UI de reasignacion con formulario
- [ ] Lista de motivos predefinidos
- [ ] Campo de detalle opcional
- [ ] Sugerencias de nuevas unidades (excluyendo actual)
- [ ] Notificaciones a operadores afectados
- [ ] Registro en log de auditoria
- [ ] Liberacion automatica de unidad anterior
- [ ] Tests unitarios de validaciones
- [ ] Tests E2E del flujo completo
---
*US-MAI005-009 - Modulo MAI-005 - ERP Transportistas*