# US-MAI005-008: Configurar reglas de asignacion **ID:** US-MAI005-008 **Modulo:** MAI-005 (Despacho) **Prioridad:** Media **Story Points:** 5 --- ## Historia de Usuario **Como** administrador de operaciones **Quiero** definir y configurar los criterios de scoring para asignacion de unidades **Para** adaptar el algoritmo a las prioridades del negocio y mejorar la eficiencia operativa --- ## Criterios de Aceptacion ### CA-001: Listar reglas existentes **Dado** que accedo a la configuracion de despacho **Cuando** entro a la seccion de reglas de asignacion **Entonces** veo todas las reglas definidas con su nombre, prioridad y estado (activa/inactiva) ### CA-002: Crear nueva regla **Dado** que quiero personalizar el algoritmo **Cuando** creo una nueva regla de asignacion **Entonces** puedo definir nombre, condiciones, pesos de criterios y prioridad ### CA-003: Definir condiciones de aplicacion **Dado** que estoy creando una regla **Cuando** defino las condiciones **Entonces** puedo especificar: tipos de viaje, clientes, rutas, horarios ### CA-004: Ajustar pesos de criterios **Dado** que estoy editando una regla **Cuando** modifico los pesos **Entonces** puedo ajustar el porcentaje de distancia, capacidad, disponibilidad y skills (sumando 100%) ### CA-005: Validar suma de pesos **Dado** que modifico los pesos de criterios **Cuando** la suma no es igual a 100% **Entonces** el sistema muestra error y no permite guardar ### CA-006: Previsualizar impacto **Dado** que modifique los pesos de una regla **Cuando** solicito previsualizacion **Entonces** veo como cambiarian los scores de viajes recientes con la nueva configuracion ### CA-007: Activar/desactivar regla **Dado** que tengo una regla creada **Cuando** cambio su estado **Entonces** la regla se activa o desactiva sin eliminarla ### CA-008: Definir prioridad entre reglas **Dado** que tengo multiples reglas **Cuando** un viaje cumple condiciones de varias reglas **Entonces** se aplica la regla con mayor prioridad --- ## Mockup / UI ``` +-----------------------------------------------------------------------+ | CONFIGURACION - REGLAS DE ASIGNACION | +-----------------------------------------------------------------------+ | [+ Nueva Regla] Buscar: [_______] | +-----------------------------------------------------------------------+ | | | +----------------------------------------------------------------+ | | | REGLA: Clientes VIP Prioridad: 1 | | | | Estado: ACTIVA | | | | Condiciones: Clientes categoria 'VIP' | | | | Pesos: Dist 30% | Cap 25% | Disp 25% | Skills 20% | | | | [Editar] [Previsualizar] [Desactivar] | | | +----------------------------------------------------------------+ | | | | +----------------------------------------------------------------+ | | | REGLA: Cargas HAZMAT Prioridad: 2 | | | | Estado: ACTIVA | | | | Condiciones: Viajes con skill 'HAZMAT' | | | | Pesos: Dist 25% | Cap 20% | Disp 20% | Skills 35% | | | | [Editar] [Previsualizar] [Desactivar] | | | +----------------------------------------------------------------+ | | | | +----------------------------------------------------------------+ | | | REGLA: Default Prioridad: 99 | | | | Estado: ACTIVA (Sistema) | | | | Condiciones: Todos los viajes | | | | Pesos: Dist 40% | Cap 25% | Disp 20% | Skills 15% | | | | [Editar] [Previsualizar] [--] | | | +----------------------------------------------------------------+ | | | +-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+ | EDITAR REGLA: Clientes VIP [X] | +-----------------------------------------------------------------------+ | | | Nombre: [Clientes VIP_________________] | | Prioridad: [1] | | | | CONDICIONES (todas deben cumplirse) | | +----------------------------------------------------------------+ | | | Tipo de viaje: [ ] Todos [x] Nacional [ ] Local | | | | Clientes: [x] Solo VIP [ ] Todos | | | | Rutas: [ ] Todas [ ] Especificas: [Seleccionar...] | | | | Horario: [ ] Todo el dia [x] 06:00 - 18:00 | | | +----------------------------------------------------------------+ | | | | PESOS DE CRITERIOS (Total: 100%) | | +----------------------------------------------------------------+ | | | Distancia: [====30%====]------- | | | | Capacidad: [===25%===]--------- | | | | Disponibilidad: [===25%===]--------- | | | | Skills: [==20%==]----------- | | | +----------------------------------------------------------------+ | | | Total: 100% [OK] | | | +----------------------------------------------------------------+ | | | | [Cancelar] [Previsualizar Impacto] [Guardar] | | | +-----------------------------------------------------------------------+ ``` --- ## Notas Tecnicas - Tabla `dispatch_rules` para persistir reglas - Regla "Default" no puede eliminarse ni desactivarse - Prioridad menor = mayor importancia (1 es maxima prioridad) - Condiciones se almacenan como JSONB - Pesos se validan en backend (sum = 100) - Cache de reglas con invalidacion al modificar - Endpoint `POST /api/dispatch/rules/preview` para simulacion --- ## Definicion de Done - [ ] CRUD completo de reglas de asignacion - [ ] UI de lista de reglas con estado - [ ] Formulario de edicion con sliders de pesos - [ ] Validacion de suma de pesos = 100% - [ ] Editor de condiciones (clientes, rutas, horarios) - [ ] Funcion de previsualizacion de impacto - [ ] Activar/desactivar reglas - [ ] Proteccion de regla Default - [ ] Tests unitarios de validaciones - [ ] Tests de integracion de CRUD --- *US-MAI005-008 - Modulo MAI-005 - ERP Transportistas*