docs(modulos): MAI-007 POD y Cierre - Especificacion completa
Nuevo modulo P0 critico especificado: - README.md: Vision general, alcance, actores, flujo - REQUERIMIENTOS.md: 4 RF (4.7.1-4.7.4), RNF, validaciones - RESUMEN-EPICA.md: Valor de negocio, criterios exito, 31 SP User Stories (5): - US-MAI007-001: Capturar firma digital (8 SP) - US-MAI007-002: Registrar tiempos reales (5 SP) - US-MAI007-003: Adjuntar fotos evidencia (5 SP) - US-MAI007-004: Validar POD antes de cierre (8 SP) - US-MAI007-005: Cerrar con excepcion (5 SP) Este modulo es bloqueante para: - MAI-009 (Facturacion) - MAI-010 (Liquidaciones) - MAE-016 (Carta Porte) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
1845cfcaec
commit
7f45eb6383
219
docs/02-definicion-modulos/MAI-007-pod-cierre/README.md
Normal file
219
docs/02-definicion-modulos/MAI-007-pod-cierre/README.md
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
# MAI-007: POD y Cierre Operativo
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Fecha:** 2026-01-27
|
||||||
|
**Estado:** Diseño
|
||||||
|
**Prioridad:** P0 (Critico - Bloquea facturacion)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Descripcion General
|
||||||
|
|
||||||
|
El modulo POD (Proof of Delivery) y Cierre Operativo es responsable de capturar la evidencia de entrega, registrar tiempos reales y cerrar operativamente los viajes para permitir su facturacion.
|
||||||
|
|
||||||
|
**Problema que resuelve:**
|
||||||
|
- Sin POD no se puede facturar al cliente
|
||||||
|
- Sin registro de tiempos reales no se pueden calcular recargos por demoras
|
||||||
|
- El cierre operativo es prerequisito para liquidacion de operadores
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objetivos del Modulo
|
||||||
|
|
||||||
|
1. **Captura de POD:** Registrar firma, nombre del receptor, fotos y documentos que comprueban la entrega
|
||||||
|
2. **Registro de tiempos:** Documentar llegada, inicio/fin de descarga, salida con precision
|
||||||
|
3. **Validaciones:** Asegurar que no se cierre un viaje sin evidencia completa o justificacion
|
||||||
|
4. **Cierre contable:** Congelar costos del viaje para calculo de rentabilidad
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Alcance Funcional
|
||||||
|
|
||||||
|
### Incluido
|
||||||
|
|
||||||
|
- Captura de POD desde app movil (online/offline)
|
||||||
|
- Firma digital del receptor
|
||||||
|
- Captura fotografica de evidencia
|
||||||
|
- Escaneo de documentos firmados
|
||||||
|
- Registro de tiempos reales por parada
|
||||||
|
- Calculo automatico de detention time
|
||||||
|
- Validaciones de cierre
|
||||||
|
- Notificacion a cliente de entrega
|
||||||
|
- Integracion con facturacion
|
||||||
|
|
||||||
|
### Excluido
|
||||||
|
|
||||||
|
- Gestion de incidencias (MAI-008)
|
||||||
|
- Generacion de facturas (MAI-009)
|
||||||
|
- Liquidacion de operadores (MAI-010)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Actores
|
||||||
|
|
||||||
|
| Actor | Rol en el modulo |
|
||||||
|
|-------|------------------|
|
||||||
|
| Operador | Captura POD, registra tiempos, toma evidencias |
|
||||||
|
| Despachador | Valida POD, aprueba cierres con excepciones |
|
||||||
|
| Cliente | Recibe notificacion de entrega |
|
||||||
|
| Facturacion | Consulta POD para emitir factura |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flujo Principal
|
||||||
|
|
||||||
|
```
|
||||||
|
VIAJE EN DESTINO
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ Registro Arribo │ ← Automatico por geocerca o manual
|
||||||
|
└────────┬────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ Inicio Descarga │ ← Timestamp + evidencias
|
||||||
|
└────────┬────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ Fin Descarga │ ← Timestamp
|
||||||
|
└────────┬────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────┐
|
||||||
|
│ Captura POD │
|
||||||
|
│ - Firma digital │
|
||||||
|
│ - Nombre receptor │
|
||||||
|
│ - Fotos (opcional) │
|
||||||
|
│ - Documento escaneado │
|
||||||
|
└────────┬────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ Validaciones │ ← POD completo? Tiempos OK?
|
||||||
|
└────────┬────────┘
|
||||||
|
│
|
||||||
|
┌────┴────┐
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
[APROBADO] [EXCEPCION]
|
||||||
|
│ │
|
||||||
|
│ ▼
|
||||||
|
│ ┌──────────────┐
|
||||||
|
│ │ Justificacion │
|
||||||
|
│ │ + Aprobacion │
|
||||||
|
│ └──────┬───────┘
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
┌─────────────────┐
|
||||||
|
│ VIAJE CERRADO │
|
||||||
|
└────────┬────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[Listo para facturar]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Datos del Modulo
|
||||||
|
|
||||||
|
### Entidades Principales
|
||||||
|
|
||||||
|
| Entidad | Descripcion | Estado |
|
||||||
|
|---------|-------------|--------|
|
||||||
|
| POD | Prueba de entrega | NO IMPLEMENTADA |
|
||||||
|
| FirmaDigital | Firma capturada | NO IMPLEMENTADA |
|
||||||
|
| FotoEntrega | Evidencia fotografica | NO IMPLEMENTADA |
|
||||||
|
| TiempoReal | Tiempos registrados | NO IMPLEMENTADA |
|
||||||
|
| CierreViaje | Registro de cierre | NO IMPLEMENTADA |
|
||||||
|
|
||||||
|
### Campos Clave POD
|
||||||
|
|
||||||
|
| Campo | Tipo | Obligatorio | Descripcion |
|
||||||
|
|-------|------|-------------|-------------|
|
||||||
|
| viaje_id | UUID | Si | Referencia al viaje |
|
||||||
|
| parada_id | UUID | Si | Parada de entrega |
|
||||||
|
| receptor_nombre | VARCHAR(150) | Si | Nombre de quien recibe |
|
||||||
|
| receptor_identificacion | VARCHAR(50) | No | ID del receptor |
|
||||||
|
| firma_digital_id | UUID | Si | Referencia a firma |
|
||||||
|
| fecha_entrega | TIMESTAMP | Si | Fecha/hora de entrega |
|
||||||
|
| status | ENUM | Si | PENDIENTE, COMPLETO, EXCEPCION |
|
||||||
|
| notas | TEXT | No | Observaciones |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requerimientos Funcionales
|
||||||
|
|
||||||
|
Ver archivo: [REQUERIMIENTOS.md](./REQUERIMIENTOS.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Metricas del Modulo
|
||||||
|
|
||||||
|
| KPI | Formula | Meta |
|
||||||
|
|-----|---------|------|
|
||||||
|
| POD Capturados | % viajes con POD | >98% |
|
||||||
|
| Tiempo promedio captura | Avg(fin_descarga - arribo) | <60 min |
|
||||||
|
| Detention rate | % viajes con detention | <15% |
|
||||||
|
| POD con excepciones | % POD con justificacion | <5% |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependencias
|
||||||
|
|
||||||
|
### Este modulo depende de:
|
||||||
|
- MAI-005 (Despacho): Viaje debe estar despachado
|
||||||
|
- MAI-006 (Tracking): Eventos de arribo por geocerca
|
||||||
|
- MAI-011 (Gestion Flota): Datos de operador
|
||||||
|
|
||||||
|
### Otros modulos dependen de este:
|
||||||
|
- MAI-009 (Facturacion): No puede facturar sin POD
|
||||||
|
- MAI-010 (Liquidaciones): Cierre para liquidar operador
|
||||||
|
- MAE-016 (Carta Porte): Expediente fiscal del viaje
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Consideraciones Tecnicas
|
||||||
|
|
||||||
|
### App Movil
|
||||||
|
- Debe funcionar offline con sincronizacion posterior
|
||||||
|
- Compresion de fotos antes de subir
|
||||||
|
- Captura de firma mediante canvas
|
||||||
|
- Almacenamiento temporal seguro
|
||||||
|
|
||||||
|
### Validaciones
|
||||||
|
- Coordenadas GPS dentro de geocerca del destino
|
||||||
|
- Timestamp coherente con eventos previos
|
||||||
|
- Archivo de firma no vacio
|
||||||
|
|
||||||
|
### Integraciones
|
||||||
|
- Notificacion a cliente via WhatsApp/Email
|
||||||
|
- Webhook a sistema de facturacion
|
||||||
|
- Sincronizacion con ERP contable
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historias de Usuario
|
||||||
|
|
||||||
|
Ver carpeta: [historias-usuario/](./historias-usuario/)
|
||||||
|
|
||||||
|
| US | Titulo | Prioridad |
|
||||||
|
|----|--------|-----------|
|
||||||
|
| US-MAI007-001 | Capturar firma digital en entrega | Alta |
|
||||||
|
| US-MAI007-002 | Registrar tiempos reales de operacion | Alta |
|
||||||
|
| US-MAI007-003 | Adjuntar fotos de evidencia | Alta |
|
||||||
|
| US-MAI007-004 | Validar POD antes de cierre | Alta |
|
||||||
|
| US-MAI007-005 | Cerrar viaje con excepcion justificada | Media |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Referencias
|
||||||
|
|
||||||
|
- REQ-GIRO-TRANSPORTISTA.md - Seccion 4.7
|
||||||
|
- MATRIZ-COHERENCIA-DDL-BACKEND.yml
|
||||||
|
- MAPEO-RF-GIRO-A-MODULOS.yml
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Modulo MAI-007 - ERP Transportistas - Sistema SIMCO v4.0.0*
|
||||||
176
docs/02-definicion-modulos/MAI-007-pod-cierre/REQUERIMIENTOS.md
Normal file
176
docs/02-definicion-modulos/MAI-007-pod-cierre/REQUERIMIENTOS.md
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
# REQUERIMIENTOS.md - MAI-007: POD y Cierre Operativo
|
||||||
|
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Fecha:** 2026-01-27
|
||||||
|
**Fuente:** REQ-GIRO-TRANSPORTISTA.md - Seccion 4.7
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requerimientos Funcionales
|
||||||
|
|
||||||
|
### RF-4.7.1: Captura POD
|
||||||
|
|
||||||
|
**Descripcion:**
|
||||||
|
El sistema debe permitir capturar la prueba de entrega (Proof of Delivery) incluyendo firma digital, nombre/ID del receptor, sello, fotos y documento escaneado.
|
||||||
|
|
||||||
|
**Criterios de Aceptacion:**
|
||||||
|
1. El operador puede capturar firma digital en pantalla tactil
|
||||||
|
2. El sistema registra nombre y opcionalmente ID del receptor
|
||||||
|
3. El operador puede adjuntar 1-5 fotos de evidencia
|
||||||
|
4. El operador puede escanear documento firmado (carta de porte, remision)
|
||||||
|
5. La captura funciona en modo offline con sincronizacion posterior
|
||||||
|
6. El sistema valida que la firma no este vacia
|
||||||
|
7. El sistema registra coordenadas GPS de la captura
|
||||||
|
|
||||||
|
**Mapeo a DDL:**
|
||||||
|
- Tabla: `pod`
|
||||||
|
- Campos: receptor_nombre, receptor_identificacion, firma_digital_id, foto_ids, documento_url, coordenadas, fecha_captura
|
||||||
|
|
||||||
|
**Endpoints Requeridos:**
|
||||||
|
- `POST /api/v1/pod` - Crear POD
|
||||||
|
- `PUT /api/v1/pod/:id` - Actualizar POD
|
||||||
|
- `POST /api/v1/pod/:id/firma` - Subir firma digital
|
||||||
|
- `POST /api/v1/pod/:id/fotos` - Subir fotos
|
||||||
|
- `POST /api/v1/pod/:id/documento` - Subir documento escaneado
|
||||||
|
|
||||||
|
**Prioridad:** Alta
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RF-4.7.2: Validaciones POD
|
||||||
|
|
||||||
|
**Descripcion:**
|
||||||
|
El sistema no debe permitir "cerrar" un viaje sin POD o sin justificacion aprobada por un supervisor.
|
||||||
|
|
||||||
|
**Criterios de Aceptacion:**
|
||||||
|
1. El boton "Cerrar Viaje" esta deshabilitado si no hay POD capturado
|
||||||
|
2. Si no hay POD, el sistema muestra opcion "Cerrar con Excepcion"
|
||||||
|
3. Cerrar con excepcion requiere:
|
||||||
|
- Motivo de excepcion (catalogo + texto libre)
|
||||||
|
- Aprobacion de supervisor (puede ser posterior)
|
||||||
|
4. El sistema notifica al supervisor cuando hay excepciones pendientes
|
||||||
|
5. Las excepciones se registran en bitacora de auditoria
|
||||||
|
|
||||||
|
**Mapeo a DDL:**
|
||||||
|
- Tabla: `pod` campo `status` (COMPLETO, EXCEPCION_PENDIENTE, EXCEPCION_APROBADA)
|
||||||
|
- Tabla: `excepciones_pod` (viaje_id, motivo, justificacion, aprobador_id, fecha_aprobacion)
|
||||||
|
|
||||||
|
**Endpoints Requeridos:**
|
||||||
|
- `POST /api/v1/viajes/:id/cierre-excepcion` - Solicitar cierre con excepcion
|
||||||
|
- `PUT /api/v1/excepciones/:id/aprobar` - Aprobar excepcion
|
||||||
|
- `PUT /api/v1/excepciones/:id/rechazar` - Rechazar excepcion
|
||||||
|
|
||||||
|
**Prioridad:** Alta
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RF-4.7.3: Tiempos Reales
|
||||||
|
|
||||||
|
**Descripcion:**
|
||||||
|
El sistema debe registrar tiempos de llegada, inicio/fin de descarga y salida para metricas de detention y SLA.
|
||||||
|
|
||||||
|
**Criterios de Aceptacion:**
|
||||||
|
1. El operador puede registrar:
|
||||||
|
- Hora de arribo al destino
|
||||||
|
- Hora de inicio de descarga
|
||||||
|
- Hora de fin de descarga
|
||||||
|
- Hora de salida del destino
|
||||||
|
2. Los eventos pueden capturarse automaticamente por geocerca
|
||||||
|
3. El sistema calcula automaticamente:
|
||||||
|
- Tiempo de espera (arribo a inicio descarga)
|
||||||
|
- Tiempo de descarga (inicio a fin)
|
||||||
|
- Tiempo total en destino
|
||||||
|
4. El sistema compara vs tolerancia del SLA del cliente
|
||||||
|
5. Si se excede tolerancia, genera flag de "detention"
|
||||||
|
6. Los tiempos alimentan calculo de recargos en facturacion
|
||||||
|
|
||||||
|
**Mapeo a DDL:**
|
||||||
|
- Tabla: `tiempos_reales`
|
||||||
|
- Campos: viaje_id, parada_id, hora_arribo, hora_inicio_descarga, hora_fin_descarga, hora_salida, detention_minutos, excede_sla
|
||||||
|
|
||||||
|
**Endpoints Requeridos:**
|
||||||
|
- `POST /api/v1/tiempos-reales` - Registrar tiempo
|
||||||
|
- `GET /api/v1/viajes/:id/tiempos` - Consultar tiempos del viaje
|
||||||
|
- `GET /api/v1/viajes/:id/detention` - Consultar detention calculado
|
||||||
|
|
||||||
|
**Prioridad:** Alta
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RF-4.7.4: Cierre Contable Operativo
|
||||||
|
|
||||||
|
**Descripcion:**
|
||||||
|
Al cerrar el viaje, el sistema debe congelar los costos (combustible, peajes, viaticos) y calcular rentabilidad preliminar.
|
||||||
|
|
||||||
|
**Criterios de Aceptacion:**
|
||||||
|
1. Al cerrar viaje, el sistema:
|
||||||
|
- Marca costos como "cerrados" (no editables)
|
||||||
|
- Suma total de costos del viaje
|
||||||
|
- Calcula margen vs precio cotizado
|
||||||
|
- Genera registro de cierre con snapshot de valores
|
||||||
|
2. El cierre puede revertirse solo con autorizacion especial
|
||||||
|
3. El sistema genera alerta si margen es negativo
|
||||||
|
4. El viaje cerrado pasa a estado "LISTO_FACTURAR"
|
||||||
|
5. El sistema notifica a facturacion que hay viaje listo
|
||||||
|
|
||||||
|
**Mapeo a DDL:**
|
||||||
|
- Tabla: `cierres_viaje`
|
||||||
|
- Campos: viaje_id, fecha_cierre, usuario_cierre, total_costos, total_ingresos, margen, status
|
||||||
|
|
||||||
|
**Endpoints Requeridos:**
|
||||||
|
- `POST /api/v1/viajes/:id/cerrar` - Cerrar viaje
|
||||||
|
- `POST /api/v1/viajes/:id/reabrir` - Reabrir viaje (admin)
|
||||||
|
- `GET /api/v1/viajes/:id/rentabilidad` - Consultar rentabilidad
|
||||||
|
|
||||||
|
**Prioridad:** Alta
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requerimientos No Funcionales
|
||||||
|
|
||||||
|
### RNF-001: Performance App Movil
|
||||||
|
|
||||||
|
La captura de POD debe completarse en menos de 30 segundos incluyendo firma y fotos.
|
||||||
|
|
||||||
|
### RNF-002: Disponibilidad Offline
|
||||||
|
|
||||||
|
El modulo debe funcionar sin conexion, almacenando datos localmente hasta 72 horas.
|
||||||
|
|
||||||
|
### RNF-003: Compresion de Imagenes
|
||||||
|
|
||||||
|
Las fotos deben comprimirse a max 500KB antes de sincronizar.
|
||||||
|
|
||||||
|
### RNF-004: Seguridad
|
||||||
|
|
||||||
|
La firma digital debe almacenarse cifrada y ser verificable contra el registro de entrega.
|
||||||
|
|
||||||
|
### RNF-005: Auditoria
|
||||||
|
|
||||||
|
Todos los eventos de POD deben registrarse en log de auditoria con usuario, timestamp y coordenadas.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Validaciones de Negocio
|
||||||
|
|
||||||
|
| Validacion | Descripcion | Accion si falla |
|
||||||
|
|------------|-------------|-----------------|
|
||||||
|
| POD_001 | Firma no puede estar vacia | Rechazar POD |
|
||||||
|
| POD_002 | Receptor nombre obligatorio | Rechazar POD |
|
||||||
|
| POD_003 | GPS dentro de geocerca destino | Warning, permitir con nota |
|
||||||
|
| POD_004 | Tiempos en secuencia logica | Rechazar si arribo > descarga |
|
||||||
|
| POD_005 | Viaje en estado EN_DESTINO | No permitir captura |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Matriz de Trazabilidad
|
||||||
|
|
||||||
|
| RF | Tabla DDL | Entity | Endpoint | US |
|
||||||
|
|----|-----------|--------|----------|---|
|
||||||
|
| RF-4.7.1 | pod | POD | POST /api/v1/pod | US-MAI007-001, US-MAI007-003 |
|
||||||
|
| RF-4.7.2 | excepciones_pod | ExcepcionPOD | POST /viajes/:id/cierre-excepcion | US-MAI007-005 |
|
||||||
|
| RF-4.7.3 | tiempos_reales | TiempoReal | POST /api/v1/tiempos-reales | US-MAI007-002 |
|
||||||
|
| RF-4.7.4 | cierres_viaje | CierreViaje | POST /viajes/:id/cerrar | US-MAI007-004 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*MAI-007 REQUERIMIENTOS - ERP Transportistas - Sistema SIMCO v4.0.0*
|
||||||
190
docs/02-definicion-modulos/MAI-007-pod-cierre/RESUMEN-EPICA.md
Normal file
190
docs/02-definicion-modulos/MAI-007-pod-cierre/RESUMEN-EPICA.md
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
# RESUMEN-EPICA.md - MAI-007: POD y Cierre Operativo
|
||||||
|
|
||||||
|
**Codigo:** MAI-007
|
||||||
|
**Nombre:** POD y Cierre Operativo
|
||||||
|
**Version:** 1.0.0
|
||||||
|
**Fecha:** 2026-01-27
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Valor de Negocio
|
||||||
|
|
||||||
|
### Problema
|
||||||
|
|
||||||
|
Actualmente las empresas transportistas enfrentan:
|
||||||
|
- Disputas con clientes por falta de evidencia de entrega
|
||||||
|
- Retrasos en facturacion por documentacion incompleta
|
||||||
|
- Perdida de ingresos por no documentar detention time
|
||||||
|
- Imposibilidad de calcular rentabilidad real por viaje
|
||||||
|
|
||||||
|
### Solucion
|
||||||
|
|
||||||
|
Un sistema robusto de captura de POD que:
|
||||||
|
- Provee evidencia digital irrefutable de entrega
|
||||||
|
- Automatiza el registro de tiempos para recargos
|
||||||
|
- Cierra operativamente el viaje para facturacion inmediata
|
||||||
|
- Calcula rentabilidad preliminar al cerrar
|
||||||
|
|
||||||
|
### Beneficios Esperados
|
||||||
|
|
||||||
|
| Beneficio | Metrica | Impacto |
|
||||||
|
|-----------|---------|---------|
|
||||||
|
| Reduccion disputas | -80% reclamos sin evidencia | Ahorro legal |
|
||||||
|
| Facturacion rapida | -3 dias ciclo facturacion | Flujo de caja |
|
||||||
|
| Recargos detention | +15% captura detention | Ingresos |
|
||||||
|
| Visibilidad costos | 100% viajes con rentabilidad | Decisiones |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Actores y Stakeholders
|
||||||
|
|
||||||
|
### Usuarios Primarios
|
||||||
|
|
||||||
|
| Actor | Responsabilidad | Frecuencia |
|
||||||
|
|-------|-----------------|------------|
|
||||||
|
| Operador | Captura POD, registra tiempos | Cada entrega |
|
||||||
|
| Despachador | Valida POD, aprueba excepciones | Continuo |
|
||||||
|
| Supervisor | Autoriza cierres especiales | Bajo demanda |
|
||||||
|
|
||||||
|
### Usuarios Secundarios
|
||||||
|
|
||||||
|
| Actor | Interes |
|
||||||
|
|-------|---------|
|
||||||
|
| Facturacion | Usa POD para emitir facturas |
|
||||||
|
| Atencion Cliente | Consulta POD para responder dudas |
|
||||||
|
| Gerencia | Revisa metricas de entrega |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flujo Principal
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ VIAJE EN DESTINO │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 1. REGISTRO ARRIBO │
|
||||||
|
│ - Automatico: Geocerca detecta unidad en destino │
|
||||||
|
│ - Manual: Operador registra en app │
|
||||||
|
│ - Sistema: Timestamp + coordenadas │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 2. DESCARGA │
|
||||||
|
│ - Operador marca inicio descarga │
|
||||||
|
│ - Operador marca fin descarga │
|
||||||
|
│ - Sistema: Calcula duracion, compara vs SLA │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 3. CAPTURA POD │
|
||||||
|
│ - Operador captura firma digital en pantalla │
|
||||||
|
│ - Operador ingresa nombre receptor │
|
||||||
|
│ - Operador toma fotos (opcional) │
|
||||||
|
│ - Operador escanea documento firmado (opcional) │
|
||||||
|
│ - Sistema: Valida datos minimos │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
┌─────────┴─────────┐
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
┌──────────────────┐ ┌──────────────────┐
|
||||||
|
│ POD COMPLETO │ │ POD INCOMPLETO │
|
||||||
|
│ │ │ │
|
||||||
|
│ Firma OK │ │ Falta firma o │
|
||||||
|
│ Receptor OK │ │ receptor │
|
||||||
|
└────────┬─────────┘ └────────┬─────────┘
|
||||||
|
│ │
|
||||||
|
│ ▼
|
||||||
|
│ ┌──────────────────┐
|
||||||
|
│ │ EXCEPCION │
|
||||||
|
│ │ │
|
||||||
|
│ │ Motivo + Notas │
|
||||||
|
│ │ Enviar a aprobar │
|
||||||
|
│ └────────┬─────────┘
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 4. CIERRE VIAJE │
|
||||||
|
│ - Sistema: Congela costos │
|
||||||
|
│ - Sistema: Calcula rentabilidad │
|
||||||
|
│ - Sistema: Cambia estado a CERRADO │
|
||||||
|
│ - Sistema: Notifica a facturacion │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ LISTO PARA FACTURAR │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Exito
|
||||||
|
|
||||||
|
### Funcionales
|
||||||
|
|
||||||
|
- [ ] Operador puede capturar POD completo en <2 minutos
|
||||||
|
- [ ] Sistema funciona offline y sincroniza al reconectar
|
||||||
|
- [ ] Excepciones requieren aprobacion de supervisor
|
||||||
|
- [ ] Cierre calcula rentabilidad automaticamente
|
||||||
|
|
||||||
|
### Tecnicos
|
||||||
|
|
||||||
|
- [ ] Fotos comprimidas a <500KB
|
||||||
|
- [ ] Firma almacenada como imagen PNG
|
||||||
|
- [ ] Sincronizacion en <30 segundos con conexion
|
||||||
|
- [ ] Logs de auditoria completos
|
||||||
|
|
||||||
|
### Negocio
|
||||||
|
|
||||||
|
- [ ] 98% de viajes con POD capturado
|
||||||
|
- [ ] <5% de POD con excepciones
|
||||||
|
- [ ] Facturacion dentro de 24h del cierre
|
||||||
|
- [ ] 100% viajes con rentabilidad calculada
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Riesgos y Mitigaciones
|
||||||
|
|
||||||
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
||||||
|
|--------|--------------|---------|------------|
|
||||||
|
| Operador sin conectividad | Alta | Alto | Modo offline robusto |
|
||||||
|
| Fotos muy pesadas | Media | Medio | Compresion automatica |
|
||||||
|
| Firma ilegible | Media | Medio | Validacion de trazos minimos |
|
||||||
|
| Rechazo de cierre sin POD | Baja | Alto | Flujo de excepciones |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependencias
|
||||||
|
|
||||||
|
### Prerequisitos
|
||||||
|
- MAI-005 (Despacho): Viaje despachado
|
||||||
|
- MAI-006 (Tracking): Geocercas configuradas
|
||||||
|
- MAI-011 (Flota): Operador asignado
|
||||||
|
|
||||||
|
### Habilita
|
||||||
|
- MAI-009 (Facturacion): Requiere POD para facturar
|
||||||
|
- MAI-010 (Liquidaciones): Requiere cierre para liquidar
|
||||||
|
- MAE-016 (Carta Porte): Expediente completo
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Story Points Estimados
|
||||||
|
|
||||||
|
| Historia | Complejidad | SP |
|
||||||
|
|----------|-------------|---|
|
||||||
|
| US-MAI007-001 | Alta | 8 |
|
||||||
|
| US-MAI007-002 | Media | 5 |
|
||||||
|
| US-MAI007-003 | Media | 5 |
|
||||||
|
| US-MAI007-004 | Alta | 8 |
|
||||||
|
| US-MAI007-005 | Media | 5 |
|
||||||
|
| **Total** | | **31** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Epica MAI-007 - ERP Transportistas - Sistema SIMCO v4.0.0*
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
# US-MAI007-001: Capturar firma digital en entrega
|
||||||
|
|
||||||
|
**ID:** US-MAI007-001
|
||||||
|
**Modulo:** MAI-007 (POD y Cierre)
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Story Points:** 8
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historia de Usuario
|
||||||
|
|
||||||
|
**Como** operador de transporte
|
||||||
|
**Quiero** capturar la firma digital del receptor en mi dispositivo movil
|
||||||
|
**Para** tener evidencia irrefutable de que la mercancia fue entregada
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Aceptacion
|
||||||
|
|
||||||
|
### CA-001: Captura de firma
|
||||||
|
**Dado** que estoy en la pantalla de captura POD
|
||||||
|
**Cuando** el receptor firma con su dedo en el area de firma
|
||||||
|
**Entonces** el sistema captura la firma como imagen y la muestra en preview
|
||||||
|
|
||||||
|
### CA-002: Validacion de firma
|
||||||
|
**Dado** que intento guardar el POD sin firma
|
||||||
|
**Cuando** presiono el boton guardar
|
||||||
|
**Entonces** el sistema muestra error "Firma requerida" y no permite continuar
|
||||||
|
|
||||||
|
### CA-003: Datos del receptor
|
||||||
|
**Dado** que capturo la firma
|
||||||
|
**Cuando** completo los datos del receptor (nombre obligatorio, ID opcional)
|
||||||
|
**Entonces** el sistema asocia estos datos a la firma capturada
|
||||||
|
|
||||||
|
### CA-004: Limpiar y reintentar
|
||||||
|
**Dado** que la firma capturada no es satisfactoria
|
||||||
|
**Cuando** presiono el boton "Limpiar firma"
|
||||||
|
**Entonces** el area de firma se limpia y puedo capturar nuevamente
|
||||||
|
|
||||||
|
### CA-005: Modo offline
|
||||||
|
**Dado** que no tengo conexion a internet
|
||||||
|
**Cuando** capturo una firma
|
||||||
|
**Entonces** el sistema la almacena localmente y sincroniza cuando haya conexion
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mockup / UI
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ POD - Entrega #12345 │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ Nombre receptor: [________________] │
|
||||||
|
│ ID receptor: [________________] │
|
||||||
|
│ (opcional) │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────────────────────────┐ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ [AREA DE FIRMA] │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ └─────────────────────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ [Limpiar] [Continuar →] │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notas Tecnicas
|
||||||
|
|
||||||
|
- La firma se almacena como PNG base64 en SQLite local
|
||||||
|
- Resolucion minima: 300x150 px
|
||||||
|
- Validar que haya al menos 50 puntos de trazo
|
||||||
|
- Coordenadas GPS se capturan automaticamente
|
||||||
|
- Sincronizacion via endpoint POST /api/v1/pod/:id/firma
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Definicion de Done
|
||||||
|
|
||||||
|
- [ ] Codigo implementado y revisado
|
||||||
|
- [ ] Tests unitarios (cobertura >80%)
|
||||||
|
- [ ] Tests de integracion con backend
|
||||||
|
- [ ] Funciona en modo offline
|
||||||
|
- [ ] Documentacion de API actualizada
|
||||||
|
- [ ] Demo aprobada por Product Owner
|
||||||
@ -0,0 +1,106 @@
|
|||||||
|
# US-MAI007-002: Registrar tiempos reales de operacion
|
||||||
|
|
||||||
|
**ID:** US-MAI007-002
|
||||||
|
**Modulo:** MAI-007 (POD y Cierre)
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Story Points:** 5
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historia de Usuario
|
||||||
|
|
||||||
|
**Como** operador de transporte
|
||||||
|
**Quiero** registrar los tiempos de arribo, descarga y salida
|
||||||
|
**Para** que el sistema calcule automaticamente si hubo detention time
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Aceptacion
|
||||||
|
|
||||||
|
### CA-001: Registro de arribo
|
||||||
|
**Dado** que llego al destino
|
||||||
|
**Cuando** presiono "Registrar Arribo" o entro a geocerca
|
||||||
|
**Entonces** el sistema registra timestamp y coordenadas del arribo
|
||||||
|
|
||||||
|
### CA-002: Registro de inicio descarga
|
||||||
|
**Dado** que estoy en el destino y comienza la descarga
|
||||||
|
**Cuando** presiono "Iniciar Descarga"
|
||||||
|
**Entonces** el sistema registra el timestamp de inicio
|
||||||
|
|
||||||
|
### CA-003: Registro de fin descarga
|
||||||
|
**Dado** que la descarga ha terminado
|
||||||
|
**Cuando** presiono "Finalizar Descarga"
|
||||||
|
**Entonces** el sistema registra el timestamp de fin y calcula duracion
|
||||||
|
|
||||||
|
### CA-004: Calculo de detention
|
||||||
|
**Dado** que he registrado todos los tiempos
|
||||||
|
**Cuando** el tiempo de espera (arribo a inicio descarga) excede 2 horas
|
||||||
|
**Entonces** el sistema marca el evento como "detention" para facturacion
|
||||||
|
|
||||||
|
### CA-005: Validacion de secuencia
|
||||||
|
**Dado** que intento registrar fin descarga antes de inicio
|
||||||
|
**Cuando** presiono el boton
|
||||||
|
**Entonces** el sistema muestra error "Registre inicio de descarga primero"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flujo de Tiempos
|
||||||
|
|
||||||
|
```
|
||||||
|
ARRIBO (10:00)
|
||||||
|
│
|
||||||
|
├─── Tiempo de espera ───┐
|
||||||
|
│ │
|
||||||
|
▼ │
|
||||||
|
INICIO DESCARGA (11:30) │ 90 min (OK, < 2h)
|
||||||
|
│ │
|
||||||
|
├─── Tiempo descarga ────┤
|
||||||
|
│ │
|
||||||
|
▼ │
|
||||||
|
FIN DESCARGA (12:15) │ 45 min
|
||||||
|
│ │
|
||||||
|
└────────────────────────┘
|
||||||
|
Total: 2h 15min
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mockup / UI
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ Tiempos - Viaje #12345 │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ Destino: Bodega Central CDMX │
|
||||||
|
│ │
|
||||||
|
│ ✓ Arribo: 10:00 hrs │
|
||||||
|
│ ✓ Inicio descarga: 11:30 hrs │
|
||||||
|
│ ○ Fin descarga: --:-- hrs │
|
||||||
|
│ │
|
||||||
|
│ Tiempo espera: 1h 30min ✓ │
|
||||||
|
│ (Tolerancia SLA: 2h) │
|
||||||
|
│ │
|
||||||
|
│ [ Finalizar Descarga ] │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notas Tecnicas
|
||||||
|
|
||||||
|
- Los tiempos se almacenan en UTC
|
||||||
|
- La geocerca puede disparar arribo automatico
|
||||||
|
- Tolerancia SLA viene del contrato del cliente
|
||||||
|
- Detention time se factura segun reglas configuradas
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Definicion de Done
|
||||||
|
|
||||||
|
- [ ] Registro de 4 eventos (arribo, inicio, fin, salida)
|
||||||
|
- [ ] Calculo automatico de detention
|
||||||
|
- [ ] Integracion con geocercas
|
||||||
|
- [ ] Tests unitarios
|
||||||
|
- [ ] Funciona offline
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
# US-MAI007-003: Adjuntar fotos de evidencia
|
||||||
|
|
||||||
|
**ID:** US-MAI007-003
|
||||||
|
**Modulo:** MAI-007 (POD y Cierre)
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Story Points:** 5
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historia de Usuario
|
||||||
|
|
||||||
|
**Como** operador de transporte
|
||||||
|
**Quiero** adjuntar fotos de la entrega como evidencia
|
||||||
|
**Para** documentar el estado de la mercancia al momento de entrega
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Aceptacion
|
||||||
|
|
||||||
|
### CA-001: Captura de foto
|
||||||
|
**Dado** que estoy en la pantalla de POD
|
||||||
|
**Cuando** presiono "Tomar foto"
|
||||||
|
**Entonces** se abre la camara y puedo capturar una imagen
|
||||||
|
|
||||||
|
### CA-002: Seleccion de galeria
|
||||||
|
**Dado** que ya tome fotos previamente
|
||||||
|
**Cuando** presiono "Seleccionar de galeria"
|
||||||
|
**Entonces** puedo elegir fotos existentes del dispositivo
|
||||||
|
|
||||||
|
### CA-003: Limite de fotos
|
||||||
|
**Dado** que ya tengo 5 fotos adjuntas
|
||||||
|
**Cuando** intento agregar otra
|
||||||
|
**Entonces** el sistema muestra "Maximo 5 fotos por POD"
|
||||||
|
|
||||||
|
### CA-004: Compresion automatica
|
||||||
|
**Dado** que tomo una foto de alta resolucion
|
||||||
|
**Cuando** la adjunto al POD
|
||||||
|
**Entonces** el sistema la comprime a max 500KB automaticamente
|
||||||
|
|
||||||
|
### CA-005: Preview y eliminacion
|
||||||
|
**Dado** que tengo fotos adjuntas
|
||||||
|
**Cuando** toco una foto en la lista
|
||||||
|
**Entonces** puedo verla en pantalla completa y eliminarla si es necesario
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mockup / UI
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ Fotos de Evidencia │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
|
||||||
|
│ │ img │ │ img │ │ img │ │ + │ │
|
||||||
|
│ │ 1 │ │ 2 │ │ 3 │ │ │ │
|
||||||
|
│ └─────┘ └─────┘ └─────┘ └─────┘ │
|
||||||
|
│ │
|
||||||
|
│ 3 de 5 fotos │
|
||||||
|
│ │
|
||||||
|
│ [📷 Tomar foto] [🖼 Galeria] │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tipos de Evidencia Sugeridos
|
||||||
|
|
||||||
|
| Tipo | Descripcion |
|
||||||
|
|------|-------------|
|
||||||
|
| Estado mercancia | Foto de cajas/pallets al entregar |
|
||||||
|
| Documento firmado | Foto de remision con firma |
|
||||||
|
| Area descarga | Foto del area de descarga |
|
||||||
|
| Sello roto | Evidencia si se rompe sello |
|
||||||
|
| Dano | Documentar cualquier dano visible |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notas Tecnicas
|
||||||
|
|
||||||
|
- Fotos se almacenan en cache local hasta sincronizar
|
||||||
|
- Compresion JPEG calidad 70%
|
||||||
|
- Metadata EXIF preservada (fecha, GPS si disponible)
|
||||||
|
- Endpoint: POST /api/v1/pod/:id/fotos (multipart)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Definicion de Done
|
||||||
|
|
||||||
|
- [ ] Captura desde camara
|
||||||
|
- [ ] Seleccion desde galeria
|
||||||
|
- [ ] Compresion automatica
|
||||||
|
- [ ] Preview de fotos
|
||||||
|
- [ ] Eliminacion de fotos
|
||||||
|
- [ ] Funciona offline
|
||||||
@ -0,0 +1,119 @@
|
|||||||
|
# US-MAI007-004: Validar POD antes de cierre
|
||||||
|
|
||||||
|
**ID:** US-MAI007-004
|
||||||
|
**Modulo:** MAI-007 (POD y Cierre)
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Story Points:** 8
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historia de Usuario
|
||||||
|
|
||||||
|
**Como** despachador
|
||||||
|
**Quiero** que el sistema valide automaticamente que el POD este completo antes de cerrar
|
||||||
|
**Para** asegurar que tenemos toda la documentacion necesaria para facturar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Aceptacion
|
||||||
|
|
||||||
|
### CA-001: Validacion de firma
|
||||||
|
**Dado** que intento cerrar un viaje
|
||||||
|
**Cuando** el POD no tiene firma capturada
|
||||||
|
**Entonces** el sistema bloquea el cierre y muestra "POD sin firma"
|
||||||
|
|
||||||
|
### CA-002: Validacion de receptor
|
||||||
|
**Dado** que intento cerrar un viaje
|
||||||
|
**Cuando** el POD no tiene nombre de receptor
|
||||||
|
**Entonces** el sistema bloquea el cierre y muestra "Receptor no identificado"
|
||||||
|
|
||||||
|
### CA-003: Validacion de tiempos
|
||||||
|
**Dado** que intento cerrar un viaje
|
||||||
|
**Cuando** no se han registrado todos los tiempos requeridos
|
||||||
|
**Entonces** el sistema muestra advertencia pero permite continuar
|
||||||
|
|
||||||
|
### CA-004: Cierre exitoso
|
||||||
|
**Dado** que el POD cumple todas las validaciones
|
||||||
|
**Cuando** confirmo el cierre
|
||||||
|
**Entonces** el sistema:
|
||||||
|
- Cambia estado del viaje a CERRADO
|
||||||
|
- Congela costos del viaje
|
||||||
|
- Calcula rentabilidad preliminar
|
||||||
|
- Notifica a facturacion
|
||||||
|
|
||||||
|
### CA-005: Resumen de cierre
|
||||||
|
**Dado** que cierro un viaje exitosamente
|
||||||
|
**Cuando** se completa el proceso
|
||||||
|
**Entonces** veo un resumen con: costos, ingresos estimados, margen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mockup / UI
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ Cerrar Viaje #12345 │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ Validaciones: │
|
||||||
|
│ ✓ POD con firma │
|
||||||
|
│ ✓ Receptor identificado │
|
||||||
|
│ ✓ Tiempos registrados │
|
||||||
|
│ ⚠ Sin fotos adjuntas (opcional) │
|
||||||
|
│ │
|
||||||
|
│ ───────────────────────────────────── │
|
||||||
|
│ │
|
||||||
|
│ Resumen financiero: │
|
||||||
|
│ Ingresos: $15,000.00 │
|
||||||
|
│ Costos: $11,200.00 │
|
||||||
|
│ - Combustible $5,500.00 │
|
||||||
|
│ - Peajes $1,200.00 │
|
||||||
|
│ - Viaticos $800.00 │
|
||||||
|
│ - Otros $3,700.00 │
|
||||||
|
│ ───────────────────────────────────── │
|
||||||
|
│ Margen: $3,800.00 (25.3%) │
|
||||||
|
│ │
|
||||||
|
│ [Cancelar] [Confirmar Cierre ✓] │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Reglas de Validacion
|
||||||
|
|
||||||
|
| Validacion | Tipo | Bloquea cierre |
|
||||||
|
|------------|------|----------------|
|
||||||
|
| Firma presente | Requerido | Si |
|
||||||
|
| Nombre receptor | Requerido | Si |
|
||||||
|
| Tiempos completos | Recomendado | No |
|
||||||
|
| Fotos adjuntas | Opcional | No |
|
||||||
|
| GPS en geocerca | Recomendado | No |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estados del Viaje
|
||||||
|
|
||||||
|
```
|
||||||
|
EN_TRANSITO → EN_DESTINO → ENTREGADO → CERRADO → FACTURADO
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notas Tecnicas
|
||||||
|
|
||||||
|
- Al cerrar se crea snapshot de costos en `cierres_viaje`
|
||||||
|
- Calculo de margen: (tarifa_cliente - sum(costos)) / tarifa_cliente
|
||||||
|
- Notificacion a facturacion via evento/webhook
|
||||||
|
- El cierre es irreversible sin rol de admin
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Definicion de Done
|
||||||
|
|
||||||
|
- [ ] Validaciones automaticas implementadas
|
||||||
|
- [ ] Calculo de rentabilidad correcto
|
||||||
|
- [ ] Notificacion a facturacion
|
||||||
|
- [ ] Snapshot de costos inmutable
|
||||||
|
- [ ] UI de confirmacion clara
|
||||||
|
- [ ] Tests de integracion
|
||||||
@ -0,0 +1,138 @@
|
|||||||
|
# US-MAI007-005: Cerrar viaje con excepcion justificada
|
||||||
|
|
||||||
|
**ID:** US-MAI007-005
|
||||||
|
**Modulo:** MAI-007 (POD y Cierre)
|
||||||
|
**Prioridad:** Media
|
||||||
|
**Story Points:** 5
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Historia de Usuario
|
||||||
|
|
||||||
|
**Como** despachador
|
||||||
|
**Quiero** poder cerrar un viaje sin POD completo con una justificacion
|
||||||
|
**Para** no bloquear el proceso cuando hay situaciones excepcionales
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Criterios de Aceptacion
|
||||||
|
|
||||||
|
### CA-001: Opcion de excepcion
|
||||||
|
**Dado** que el POD no cumple validaciones
|
||||||
|
**Cuando** intento cerrar el viaje
|
||||||
|
**Entonces** el sistema ofrece la opcion "Cerrar con excepcion"
|
||||||
|
|
||||||
|
### CA-002: Motivo obligatorio
|
||||||
|
**Dado** que selecciono cerrar con excepcion
|
||||||
|
**Cuando** no selecciono un motivo del catalogo
|
||||||
|
**Entonces** el sistema no permite continuar
|
||||||
|
|
||||||
|
### CA-003: Justificacion detallada
|
||||||
|
**Dado** que selecciono un motivo de excepcion
|
||||||
|
**Cuando** escribo la justificacion detallada (min 20 caracteres)
|
||||||
|
**Entonces** puedo proceder con la solicitud de excepcion
|
||||||
|
|
||||||
|
### CA-004: Aprobacion pendiente
|
||||||
|
**Dado** que solicito cierre con excepcion
|
||||||
|
**Cuando** completo el formulario
|
||||||
|
**Entonces** el viaje queda en estado "EXCEPCION_PENDIENTE" hasta aprobacion
|
||||||
|
|
||||||
|
### CA-005: Notificacion a supervisor
|
||||||
|
**Dado** que hay una excepcion pendiente
|
||||||
|
**Cuando** se crea la solicitud
|
||||||
|
**Entonces** el supervisor recibe notificacion para aprobar/rechazar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Catalogo de Motivos
|
||||||
|
|
||||||
|
| Codigo | Motivo | Descripcion |
|
||||||
|
|--------|--------|-------------|
|
||||||
|
| EXC-001 | Rechazo en destino | Cliente rechazo la mercancia |
|
||||||
|
| EXC-002 | Entrega parcial | Solo se entrego parte de la carga |
|
||||||
|
| EXC-003 | Falla dispositivo | No se pudo capturar firma/fotos |
|
||||||
|
| EXC-004 | Emergencia | Accidente, robo, desastre natural |
|
||||||
|
| EXC-005 | Cambio destino | Cliente solicito entregar en otro lugar |
|
||||||
|
| EXC-006 | Otro | Especificar en justificacion |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mockup / UI
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────┐
|
||||||
|
│ Cierre con Excepcion - Viaje #12345 │
|
||||||
|
├─────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ ⚠ El POD no cumple validaciones: │
|
||||||
|
│ ✗ Sin firma capturada │
|
||||||
|
│ │
|
||||||
|
│ ───────────────────────────────────── │
|
||||||
|
│ │
|
||||||
|
│ Motivo de excepcion: * │
|
||||||
|
│ ┌─────────────────────────────────┐ │
|
||||||
|
│ │ Rechazo en destino ▼ │ │
|
||||||
|
│ └─────────────────────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ Justificacion detallada: * │
|
||||||
|
│ ┌─────────────────────────────────┐ │
|
||||||
|
│ │ El cliente rechazo la carga │ │
|
||||||
|
│ │ por dano visible en 3 cajas. │ │
|
||||||
|
│ │ Se levanto acta con fotos. │ │
|
||||||
|
│ │ Contacto: Juan Perez, almacen │ │
|
||||||
|
│ └─────────────────────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ Evidencia adicional: │
|
||||||
|
│ [+ Adjuntar foto/documento] │
|
||||||
|
│ │
|
||||||
|
│ ───────────────────────────────────── │
|
||||||
|
│ ℹ Esta solicitud sera enviada a │
|
||||||
|
│ supervisor para aprobacion. │
|
||||||
|
│ │
|
||||||
|
│ [Cancelar] [Enviar Solicitud] │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flujo de Aprobacion
|
||||||
|
|
||||||
|
```
|
||||||
|
SOLICITUD CREADA
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌────────────────┐
|
||||||
|
│ SUPERVISOR │
|
||||||
|
│ revisa │
|
||||||
|
└───────┬────────┘
|
||||||
|
│
|
||||||
|
┌────┴────┐
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
APROBADA RECHAZADA
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
CERRADO PENDIENTE
|
||||||
|
(regresar a operador)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notas Tecnicas
|
||||||
|
|
||||||
|
- Excepciones se registran en tabla `excepciones_pod`
|
||||||
|
- Notificacion via push notification y email
|
||||||
|
- Timeout de aprobacion: 24 horas (escalamiento automatico)
|
||||||
|
- Auditoria completa de quien aprobo/rechazo y cuando
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Definicion de Done
|
||||||
|
|
||||||
|
- [ ] Formulario de excepcion implementado
|
||||||
|
- [ ] Catalogo de motivos configurable
|
||||||
|
- [ ] Flujo de aprobacion funcional
|
||||||
|
- [ ] Notificaciones a supervisor
|
||||||
|
- [ ] Auditoria completa
|
||||||
|
- [ ] Tests de flujo completo
|
||||||
Loading…
Reference in New Issue
Block a user