erp-transportistas-v2/docs/02-definicion-modulos/MAI-005-despacho/historias-usuario/US-MAI005-008.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

157 lines
7.1 KiB
Markdown

# 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*