erp-transportistas-v2/docs/02-definicion-modulos/MAI-003-ordenes-transporte/historias-usuario/US-MAI003-003.md
Adrian Flores Cortes ec43d9c6cd docs: Add Phase 3 secondary modules specifications (P1/P2/P3)
Modules documented:
- MAI-003 (OT): README, REQUERIMIENTOS, RESUMEN-EPICA, 10 US
- MAI-006 (Tracking): README, REQUERIMIENTOS, RESUMEN-EPICA
- MAI-008 (Incidencias): 3 US (18 SP)
- MAI-011 (Flota): README, REQUERIMIENTOS, RESUMEN-EPICA
- MAI-012 (Combustible): 3 US (18 SP)
- MAI-013 (Mantenimiento): 3 US (18 SP)
- MAI-014 (Carriers): 3 US (18 SP)
- MAI-015 (Portal): 3 US (18 SP)
- MAE-016 (Carta Porte): 10 US
- MAE-017 (HOS): 3 US (16 SP)
- MAE-018 (Reportes): 3 US (18 SP)

Phase 2+3 complete: 13 modules, 50+ User Stories

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

5.4 KiB

US-MAI003-003: Definir restricciones logisticas

Metadata

Campo Valor
ID US-MAI003-003
Epica EPIC-MAI-003 - Ordenes de Transporte
Modulo ordenes-transporte
Prioridad P1
Story Points 5
Sprint Por asignar
Estado Backlog

Historia de Usuario

Como despachador de una empresa transportista, quiero definir restricciones logisticas especificas para cada orden de transporte (temperatura, GPS, escolta, cita, instrucciones especiales), para asegurar que la planeacion y ejecucion del servicio cumplan con los requisitos del cliente y la naturaleza de la carga.

Descripcion Detallada

Las restricciones logisticas son requisitos adicionales que condicionan como debe ejecutarse el servicio de transporte. Estas restricciones van mas alla de los datos basicos de la OT y determinan el tipo de equipo, la seguridad y las condiciones especiales que se deben cumplir durante el viaje.

La tabla ordenes_transporte incluye campos booleanos y de parametros para estas restricciones: requiere_temperatura con rangos temperatura_min y temperatura_max (para carga refrigerada o de cadena de frio), requiere_gps (para seguimiento obligatorio), requiere_escolta (para carga de alto valor o zona de riesgo), requiere_cita (para destinos con sistema de appointment), e instrucciones_especiales (texto libre para indicaciones particulares del cliente).

Estas restricciones alimentan la planeacion (MAI-004) para seleccionar la unidad y operador adecuados, el despacho (MAI-005) para verificar el cumplimiento del checklist, y el tracking (MAI-006) para configurar alertas especificas.

Criterios de Aceptacion

Escenario 1: Definir requisito de temperatura

Dado que el despachador esta creando o editando una OT con tipo_carga REFRIGERADA, Cuando activa requiere_temperatura e ingresa temperatura_min (-5.00) y temperatura_max (2.00), Entonces el sistema almacena los rangos de temperatura y los validara contra las capacidades de la unidad asignada en la fase de planeacion.

Escenario 2: Activar multiples restricciones de seguridad

Dado que el despachador esta registrando una OT para carga de alto valor, Cuando activa requiere_gps y requiere_escolta simultaneamente, Entonces el sistema registra ambas restricciones y estas seran visibles en el tablero de planeacion como requisitos obligatorios para la asignacion de recursos.

Escenario 3: Registrar instrucciones especiales

Dado que el cliente tiene requerimientos operativos particulares, Cuando el despachador ingresa instrucciones especiales (por ejemplo: "Entregar solo en horario matutino. Requiere montacargas en destino. Contactar al Sr. Lopez 30 minutos antes de arribo."), Entonces el sistema almacena el texto completo y lo incluye en la informacion visible para el operador durante la ejecucion del viaje.

Escenario 4: Validacion de rango de temperatura

Dado que el despachador activa requiere_temperatura, Cuando ingresa temperatura_min mayor que temperatura_max, Entonces el sistema muestra un error de validacion indicando que la temperatura minima no puede ser mayor que la maxima.

Tareas Tecnicas

  • Database: Los campos ya existen en transport.ordenes_transporte: requiere_temperatura (BOOLEAN DEFAULT FALSE), temperatura_min (DECIMAL(5,2)), temperatura_max (DECIMAL(5,2)), requiere_gps (BOOLEAN DEFAULT FALSE), requiere_escolta (BOOLEAN DEFAULT FALSE), requiere_cita (BOOLEAN DEFAULT FALSE), instrucciones_especiales (TEXT).
  • Backend: Extender CreateOrdenTransporteDto y UpdateOrdenTransporteDto con campos de restricciones. Agregar validacion en el servicio: si requiere_temperatura es true, temperatura_min y temperatura_max son obligatorios y temperatura_min debe ser menor que temperatura_max. Agregar logica de compatibilidad que sera consumida por MAI-004 para validar capacidades de unidad.
  • Frontend: Crear seccion "Restricciones Logisticas" en el formulario de OT con toggles para cada requisito. Mostrar campos de temperatura condicionalmente cuando requiere_temperatura esta activo. Incluir campo de texto enriquecido para instrucciones especiales.
  • Tests: Tests unitarios de validacion de rangos de temperatura. Tests de validacion de datos obligatorios condicionales. Tests de integracion con persistencia de restricciones.

Dependencias

  • Depende de: US-MAI003-001 (la OT debe existir primero)
  • Bloquea: MAI-004 (Planeacion - usa restricciones para compatibilidad de recursos), MAI-005 (Despacho - verifica cumplimiento en checklist), MAI-006 (Tracking - configura alertas por restriccion)

Notas Tecnicas

  • Endpoint: PATCH /api/v1/ordenes-transporte/:id (actualizacion parcial de campos de restricciones)
  • Entity: Campos adicionales en OrdenTransporte entity
  • Validacion condicional: Usar decoradores de class-validator como @ValidateIf(o => o.requiere_temperatura === true) para temperatura_min y temperatura_max
  • Compatibilidad futura: Las restricciones seran leidas por el motor de planeacion de MAI-004 para filtrar unidades aptas (por ejemplo, solo unidades con refrigeracion si requiere_temperatura es true)
  • Tipos de carga y restricciones: PELIGROSA implica automaticamente requiere_gps = true; REFRIGERADA implica requiere_temperatura = true (sugerencia al usuario, no forzado)

US-MAI003-003 - ERP Transportistas v1.0.0