Compare commits

..

2 Commits

Author SHA1 Message Date
Adrian Flores Cortes
7f45eb6383 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>
2026-01-27 01:33:03 -06:00
Adrian Flores Cortes
1845cfcaec docs(analisis): Fase 1 - Matrices de coherencia y mapeo RF
Nuevos archivos de analisis:
- MATRIZ-COHERENCIA-DDL-BACKEND.yml: Coherencia 28% global
  - transport: 0% (6 tablas, 0 entities)
  - fleet: 0% (5 tablas, 0 entities)
  - fuel: 100% (5 tablas, 5 entities)
  - billing: 100% (6 tablas, 6 entities)

- MAPEO-RF-GIRO-A-MODULOS.yml: 68 RF mapeados
  - 35% con documentacion
  - P0 urgente: MAI-007, MAI-004, MAI-005, MAI-002

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 01:28:16 -06:00
10 changed files with 2625 additions and 0 deletions

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

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

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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,964 @@
# MAPEO-RF-GIRO-A-MODULOS.yml - ERP Transportistas
# Sistema SIMCO v4.0.0
# Mapeo de Requerimientos Funcionales del Giro a Modulos
# Fuente: docs/03-requerimientos/REQ-GIRO-TRANSPORTISTA.md
# Creado: 2026-01-27 (Fase 1 Auditoria)
version: "1.0.0"
created: "2026-01-27"
updated: "2026-01-27"
# ═══════════════════════════════════════════════════════════════════════════════
# RESUMEN EJECUTIVO
# ═══════════════════════════════════════════════════════════════════════════════
resumen:
total_rf_giro: 68
rf_mapeados_a_modulos: 68
rf_con_documentacion: 24
rf_sin_documentacion: 44
cobertura_documentacion: "35%"
# ═══════════════════════════════════════════════════════════════════════════════
# MAPEO POR PROCESO DEL GIRO
# ═══════════════════════════════════════════════════════════════════════════════
procesos:
# ═══════════════════════════════════════════════════════════════════════════
# 4.1 Gestion de Tarifas, Contratos y SLA
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_1:
nombre: "Gestion de tarifas, contratos y SLA"
modulo_principal: MAI-002
modulos_relacionados: [MAI-009]
requerimientos:
- codigo: RF-4.1.1
descripcion: "Tarifario por lane y servicio"
modulo: MAI-002
tablas_ddl: [lanes, tarifas]
entity_existente: true
documentacion: false
prioridad: P0
- codigo: RF-4.1.2
descripcion: "Matriz de recargos (surcharges)"
modulo: MAI-002
tablas_ddl: [recargos_catalogo, fuel_surcharge]
entity_existente: true
documentacion: false
prioridad: P0
- codigo: RF-4.1.3
descripcion: "SLA por cliente"
modulo: MAI-002
tablas_ddl: [sla_clientes]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.1.4
descripcion: "Cotizacion rapida"
modulo: MAI-002
tablas_ddl: [cotizaciones]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.1.5
descripcion: "Control de aprobaciones"
modulo: MAI-002
tablas_ddl: [aprobaciones]
entity_existente: false
documentacion: false
prioridad: P1
# ═══════════════════════════════════════════════════════════════════════════
# 4.2 Captura de Orden de Transporte (OT)
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_2:
nombre: "Captura de Orden de Transporte"
modulo_principal: MAI-003
modulos_relacionados: [MAI-002]
requerimientos:
- codigo: RF-4.2.1
descripcion: "Datos obligatorios OT"
modulo: MAI-003
tablas_ddl: [ordenes_transporte]
entity_existente: false
documentacion: true
us_existentes: [US-MAI003-001, US-MAI003-002]
prioridad: P0
- codigo: RF-4.2.2
descripcion: "Restricciones logisticas"
modulo: MAI-003
tablas_ddl: [restricciones_ot]
entity_existente: false
documentacion: true
us_existentes: [US-MAI003-003]
prioridad: P0
- codigo: RF-4.2.3
descripcion: "Multi-paradas"
modulo: MAI-003
tablas_ddl: [paradas_ot]
entity_existente: false
documentacion: true
us_existentes: [US-MAI003-004]
prioridad: P0
- codigo: RF-4.2.4
descripcion: "LTL vs FTL"
modulo: MAI-003
tablas_ddl: [ordenes_transporte.tipo_servicio]
entity_existente: false
documentacion: true
prioridad: P1
- codigo: RF-4.2.5
descripcion: "Documentacion adjunta"
modulo: MAI-003
tablas_ddl: [documentos_ot]
entity_existente: false
documentacion: true
us_existentes: [US-MAI003-009]
prioridad: P1
- codigo: RF-4.2.6
descripcion: "Portal/API de clientes"
modulo: MAI-015
tablas_ddl: [api_clientes]
entity_existente: false
documentacion: false
prioridad: P3
# ═══════════════════════════════════════════════════════════════════════════
# 4.3 Planeacion TMS
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_3:
nombre: "Planeacion (TMS-like)"
modulo_principal: MAI-004
modulos_relacionados: [MAI-003, MAI-011]
requerimientos:
- codigo: RF-4.3.1
descripcion: "Tablero de planeacion"
modulo: MAI-004
tablas_ddl: [planeacion_viajes]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.3.2
descripcion: "Consolidacion automatica sugerida"
modulo: MAI-004
tablas_ddl: [embarques]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.3.3
descripcion: "Calculo de capacidad"
modulo: MAI-004
tablas_ddl: [unidades.capacidad]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.3.4
descripcion: "Reservas de recursos"
modulo: MAI-004
tablas_ddl: [asignaciones]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.3.5
descripcion: "Reglas de compatibilidad"
modulo: MAI-004
tablas_ddl: [reglas_asignacion]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.3.6
descripcion: "Simulacion de ruta y ETA"
modulo: MAI-004
tablas_ddl: [eta_calculado]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.4 Despacho
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_4:
nombre: "Despacho: liberacion de viaje"
modulo_principal: MAI-005
modulos_relacionados: [MAI-004, MAI-011]
requerimientos:
- codigo: RF-4.4.1
descripcion: "Orden de Viaje (OV)"
modulo: MAI-005
tablas_ddl: [viajes]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.4.2
descripcion: "Checklists pre-viaje"
modulo: MAI-005
tablas_ddl: [inspecciones_pre_viaje]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.4.3
descripcion: "Control de sellos"
modulo: MAI-005
tablas_ddl: [sellos_viaje]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.4.4
descripcion: "Evidencias de carga"
modulo: MAI-005
tablas_ddl: [evidencias_carga]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.4.5
descripcion: "Kit documental"
modulo: MAI-005
tablas_ddl: [documentos_viaje]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.4.6
descripcion: "Gate out / salida oficial"
modulo: MAI-005
tablas_ddl: [eventos.tipo='SALIDA']
entity_existente: false
documentacion: false
prioridad: P0
# ═══════════════════════════════════════════════════════════════════════════
# 4.5 Ejecucion y Tracking
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_5:
nombre: "Ejecucion y tracking"
modulo_principal: MAI-006
modulos_relacionados: [MAI-005]
requerimientos:
- codigo: RF-4.5.1
descripcion: "Integracion GPS/Telematica"
modulo: MAI-006
tablas_ddl: [posiciones_gps]
entity_existente: false
documentacion: true
prioridad: P1
- codigo: RF-4.5.2
descripcion: "App movil operador"
modulo: MAI-006
tablas_ddl: [eventos]
entity_existente: true
documentacion: true
prioridad: P1
- codigo: RF-4.5.3
descripcion: "ETA dinamico"
modulo: MAI-006
tablas_ddl: [eta_calculado]
entity_existente: false
documentacion: true
prioridad: P2
- codigo: RF-4.5.4
descripcion: "Geocercas"
modulo: MAI-006
tablas_ddl: [geocercas]
entity_existente: false
documentacion: true
prioridad: P1
- codigo: RF-4.5.5
descripcion: "Alertas"
modulo: MAI-006
tablas_ddl: [alertas, reglas_alerta]
entity_existente: false
documentacion: true
prioridad: P1
- codigo: RF-4.5.6
descripcion: "Comunicacion omnicanal"
modulo: MAI-006
tablas_ddl: [notificaciones_tracking]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.6 Incidencias
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_6:
nombre: "Incidencias, excepciones y reclamaciones"
modulo_principal: MAI-008
modulos_relacionados: [MAI-006, MAI-009]
requerimientos:
- codigo: RF-4.6.1
descripcion: "Tipos de incidencia"
modulo: MAI-008
tablas_ddl: [incidencias]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.6.2
descripcion: "Flujo de atencion"
modulo: MAI-008
tablas_ddl: [incidencias.estado]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.6.3
descripcion: "Evidencias y bitacora"
modulo: MAI-008
tablas_ddl: [evidencias_incidencia]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.6.4
descripcion: "Impacto economico"
modulo: MAI-008
tablas_ddl: [costos_incidencia]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.6.5
descripcion: "SLA de incidencias"
modulo: MAI-008
tablas_ddl: [sla_incidencias]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.6.6
descripcion: "Integracion a facturacion"
modulo: MAI-008
tablas_ddl: [ajustes_factura]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.7 POD y Cierre
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_7:
nombre: "POD y cierre operativo"
modulo_principal: MAI-007
modulos_relacionados: [MAI-009]
requerimientos:
- codigo: RF-4.7.1
descripcion: "Captura POD"
modulo: MAI-007
tablas_ddl: [pod]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.7.2
descripcion: "Validaciones POD"
modulo: MAI-007
tablas_ddl: [pod.validado]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.7.3
descripcion: "Tiempos reales"
modulo: MAI-007
tablas_ddl: [tiempos_reales]
entity_existente: false
documentacion: false
prioridad: P0
- codigo: RF-4.7.4
descripcion: "Cierre contable operativo"
modulo: MAI-007
tablas_ddl: [cierre_viaje]
entity_existente: false
documentacion: false
prioridad: P0
# ═══════════════════════════════════════════════════════════════════════════
# 4.8 Facturacion Transporte
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_8:
nombre: "Facturacion especializada transporte"
modulo_principal: MAI-009
modulos_relacionados: [MAI-007, MAE-016]
requerimientos:
- codigo: RF-4.8.1
descripcion: "Factura por viaje/embarque/OT"
modulo: MAI-009
tablas_ddl: [facturas_transporte]
entity_existente: true
documentacion: false
prioridad: P1
- codigo: RF-4.8.2
descripcion: "Calculo automatico de recargos"
modulo: MAI-009
tablas_ddl: [lineas_factura]
entity_existente: true
documentacion: false
prioridad: P1
- codigo: RF-4.8.3
descripcion: "Integracion con POD"
modulo: MAI-009
tablas_ddl: [facturas_transporte.pod_id]
entity_existente: true
documentacion: false
prioridad: P1
- codigo: RF-4.8.4
descripcion: "Conciliacion"
modulo: MAI-009
tablas_ddl: [conciliaciones]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.8.5
descripcion: "Estados de cuenta por cliente"
modulo: MAI-009
tablas_ddl: [estados_cuenta]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.9 Liquidaciones
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_9:
nombre: "Liquidacion a operadores"
modulo_principal: MAI-010
modulos_relacionados: [MAI-007, MAI-012]
requerimientos:
- codigo: RF-4.9.1
descripcion: "Esquemas de pago"
modulo: MAI-010
tablas_ddl: [esquemas_pago]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.9.2
descripcion: "Viaticos"
modulo: MAI-010
tablas_ddl: [anticipos_viaticos]
entity_existente: true
documentacion: false
prioridad: P1
- codigo: RF-4.9.3
descripcion: "Deducciones"
modulo: MAI-010
tablas_ddl: [deducciones]
entity_existente: false
documentacion: false
prioridad: P1
- codigo: RF-4.9.4
descripcion: "Corte y autorizacion"
modulo: MAI-010
tablas_ddl: [liquidaciones]
entity_existente: false
documentacion: false
prioridad: P1
# ═══════════════════════════════════════════════════════════════════════════
# 4.10 Combustible y Gastos
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_10:
nombre: "Combustible, peajes y gastos"
modulo_principal: MAI-012
modulos_relacionados: [MAI-007]
requerimientos:
- codigo: RF-4.10.1
descripcion: "Planeado vs real"
modulo: MAI-012
tablas_ddl: [control_rendimiento]
entity_existente: true
documentacion: true
prioridad: P2
- codigo: RF-4.10.2
descripcion: "Captura de cargas combustible"
modulo: MAI-012
tablas_ddl: [cargas_combustible]
entity_existente: true
documentacion: true
prioridad: P2
- codigo: RF-4.10.3
descripcion: "Peajes"
modulo: MAI-012
tablas_ddl: [cruces_peaje]
entity_existente: true
documentacion: true
prioridad: P2
- codigo: RF-4.10.4
descripcion: "Gastos varios"
modulo: MAI-012
tablas_ddl: [gastos_viaje]
entity_existente: true
documentacion: true
prioridad: P2
- codigo: RF-4.10.5
descripcion: "Alertas antifraude"
modulo: MAI-012
tablas_ddl: [alertas_fraude]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.11 Mantenimiento Flota
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_11:
nombre: "Mantenimiento y disponibilidad flota"
modulo_principal: MAI-013
modulos_relacionados: [MAI-011]
requerimientos:
- codigo: RF-4.11.1
descripcion: "Plan preventivo"
modulo: MAI-013
tablas_ddl: [planes_mantenimiento, programacion_mantenimiento]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.11.2
descripcion: "Correctivo"
modulo: MAI-013
tablas_ddl: [ordenes_trabajo]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.11.3
descripcion: "Inventario de refacciones"
modulo: MAI-013
tablas_ddl: [refacciones_flota]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.11.4
descripcion: "Historial por activo"
modulo: MAI-013
tablas_ddl: [historial_mantenimiento]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.11.5
descripcion: "Disponibilidad"
modulo: MAI-011
tablas_ddl: [unidades.estado]
entity_existente: false
documentacion: true
prioridad: P0
# ═══════════════════════════════════════════════════════════════════════════
# 4.12 Carriers
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_12:
nombre: "Gestion de terceros (carriers)"
modulo_principal: MAI-014
modulos_relacionados: [MAI-004]
requerimientos:
- codigo: RF-4.12.1
descripcion: "Registro de carrier"
modulo: MAI-014
tablas_ddl: [carriers]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.12.2
descripcion: "Asignacion a carrier"
modulo: MAI-014
tablas_ddl: [asignaciones_carrier]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.12.3
descripcion: "Control de documentos"
modulo: MAI-014
tablas_ddl: [documentos_carrier]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.12.4
descripcion: "Recepcion POD tercero"
modulo: MAI-014
tablas_ddl: [pod_carrier]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.12.5
descripcion: "Costo vs ingreso"
modulo: MAI-014
tablas_ddl: [margenes_carrier]
entity_existente: false
documentacion: false
prioridad: P2
- codigo: RF-4.12.6
descripcion: "Scorecard"
modulo: MAI-014
tablas_ddl: [scorecard]
entity_existente: false
documentacion: false
prioridad: P2
# ═══════════════════════════════════════════════════════════════════════════
# 4.13 Portal Cliente
# ═══════════════════════════════════════════════════════════════════════════
proceso_4_13:
nombre: "Portal de cliente"
modulo_principal: MAI-015
modulos_relacionados: [MAI-006]
requerimientos:
- codigo: RF-4.13.1
descripcion: "Tracking"
modulo: MAI-015
tablas_ddl: [vista_tracking_cliente]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-4.13.2
descripcion: "Documentos"
modulo: MAI-015
tablas_ddl: [documentos_portal]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-4.13.3
descripcion: "Creacion de OT"
modulo: MAI-015
tablas_ddl: [ot_portal]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-4.13.4
descripcion: "Reclamaciones"
modulo: MAI-015
tablas_ddl: [reclamos_portal]
entity_existente: false
documentacion: false
prioridad: P3
# ═══════════════════════════════════════════════════════════════════════════
# 5.1 CFDI Carta Porte
# ═══════════════════════════════════════════════════════════════════════════
proceso_5_1:
nombre: "CFDI con Complemento Carta Porte"
modulo_principal: MAE-016
modulos_relacionados: [MAI-009]
requerimientos:
- codigo: RF-5.1.1
descripcion: "Soportar Carta Porte 3.1"
modulo: MAE-016
tablas_ddl: [cartas_porte]
entity_existente: true
documentacion: true
us_existentes: [US-MAE016-001]
prioridad: P1
- codigo: RF-5.1.2
descripcion: "Escenarios de emision"
modulo: MAE-016
tablas_ddl: [cartas_porte.tipo]
entity_existente: true
documentacion: true
us_existentes: [US-MAE016-002, US-MAE016-003]
prioridad: P1
- codigo: RF-5.1.3
descripcion: "Expediente fiscal por viaje"
modulo: MAE-016
tablas_ddl: [expediente_fiscal]
entity_existente: true
documentacion: true
us_existentes: [US-MAE016-006]
prioridad: P1
- codigo: RF-5.1.4
descripcion: "Validaciones previas"
modulo: MAE-016
tablas_ddl: [validaciones_carta_porte]
entity_existente: false
documentacion: true
us_existentes: [US-MAE016-002]
prioridad: P1
- codigo: RF-5.1.5
descripcion: "Reemision/correccion"
modulo: MAE-016
tablas_ddl: [bitacora_carta_porte]
entity_existente: false
documentacion: true
us_existentes: [US-MAE016-005]
prioridad: P1
- codigo: RF-5.1.6
descripcion: "Integracion con PAC"
modulo: MAE-016
tablas_ddl: [timbrado_pac]
entity_existente: false
documentacion: true
us_existentes: [US-MAE016-003]
prioridad: P1
- codigo: RF-5.1.7
descripcion: "Evidencia para inspeccion"
modulo: MAE-016
tablas_ddl: [documentos_carta_porte]
entity_existente: false
documentacion: true
us_existentes: [US-MAE016-004]
prioridad: P1
# ═══════════════════════════════════════════════════════════════════════════
# 5.2 HOS y Bitacora
# ═══════════════════════════════════════════════════════════════════════════
proceso_5_2:
nombre: "Bitacora de Horas de Servicio (HOS)"
modulo_principal: MAE-017
modulos_relacionados: [MAI-011]
requerimientos:
- codigo: RF-5.2.1
descripcion: "Registro HOS"
modulo: MAE-017
tablas_ddl: [hos_logs]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-5.2.2
descripcion: "Bitacora formato"
modulo: MAE-017
tablas_ddl: [hos_resumen_diario]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-5.2.3
descripcion: "Alertas incumplimiento"
modulo: MAE-017
tablas_ddl: [alertas_hos]
entity_existente: false
documentacion: false
prioridad: P3
- codigo: RF-5.2.4
descripcion: "Evidencias HOS"
modulo: MAE-017
tablas_ddl: [auditoria_hos]
entity_existente: false
documentacion: false
prioridad: P3
# ═══════════════════════════════════════════════════════════════════════════════
# RESUMEN POR MODULO
# ═══════════════════════════════════════════════════════════════════════════════
resumen_por_modulo:
MAI-002:
nombre: "Clientes y Tarifas"
rf_asignados: 5
rf_con_entity: 2
rf_con_docs: 0
prioridad: P0
MAI-003:
nombre: "Ordenes de Transporte"
rf_asignados: 6
rf_con_entity: 0
rf_con_docs: 5
prioridad: P0
MAI-004:
nombre: "Planeacion TMS"
rf_asignados: 6
rf_con_entity: 0
rf_con_docs: 0
prioridad: P0
MAI-005:
nombre: "Despacho"
rf_asignados: 6
rf_con_entity: 0
rf_con_docs: 0
prioridad: P0
MAI-006:
nombre: "Tracking"
rf_asignados: 6
rf_con_entity: 1
rf_con_docs: 5
prioridad: P1
MAI-007:
nombre: "POD y Cierre"
rf_asignados: 4
rf_con_entity: 0
rf_con_docs: 0
prioridad: P0
MAI-008:
nombre: "Incidencias"
rf_asignados: 6
rf_con_entity: 0
rf_con_docs: 0
prioridad: P1
MAI-009:
nombre: "Facturacion Transporte"
rf_asignados: 5
rf_con_entity: 3
rf_con_docs: 0
prioridad: P1
MAI-010:
nombre: "Liquidaciones"
rf_asignados: 4
rf_con_entity: 1
rf_con_docs: 0
prioridad: P1
MAI-011:
nombre: "Gestion de Flota"
rf_asignados: 1
rf_con_entity: 0
rf_con_docs: 1
prioridad: P0
MAI-012:
nombre: "Combustible y Gastos"
rf_asignados: 5
rf_con_entity: 4
rf_con_docs: 4
prioridad: P2
MAI-013:
nombre: "Mantenimiento Flota"
rf_asignados: 4
rf_con_entity: 0
rf_con_docs: 0
prioridad: P2
MAI-014:
nombre: "Carriers"
rf_asignados: 6
rf_con_entity: 0
rf_con_docs: 0
prioridad: P2
MAI-015:
nombre: "Portal Cliente"
rf_asignados: 5
rf_con_entity: 0
rf_con_docs: 0
prioridad: P3
MAE-016:
nombre: "Carta Porte CFDI"
rf_asignados: 7
rf_con_entity: 3
rf_con_docs: 7
prioridad: P1
MAE-017:
nombre: "HOS y Bitacora"
rf_asignados: 4
rf_con_entity: 0
rf_con_docs: 0
prioridad: P3
# ═══════════════════════════════════════════════════════════════════════════════
# ACCIONES REQUERIDAS
# ═══════════════════════════════════════════════════════════════════════════════
acciones:
P0_urgente:
- modulo: MAI-007
accion: "Crear REQUERIMIENTOS.md y 5 US"
rf_afectados: 4
- modulo: MAI-004
accion: "Crear REQUERIMIENTOS.md y 5 US"
rf_afectados: 6
- modulo: MAI-005
accion: "Crear REQUERIMIENTOS.md y 5 US"
rf_afectados: 6
- modulo: MAI-002
accion: "Crear REQUERIMIENTOS.md y 5 US"
rf_afectados: 5
P1_corto_plazo:
- modulo: MAI-008
accion: "Crear REQUERIMIENTOS.md"
rf_afectados: 6
- modulo: MAI-009
accion: "Crear REQUERIMIENTOS.md"
rf_afectados: 5
- modulo: MAI-010
accion: "Crear REQUERIMIENTOS.md"
rf_afectados: 4
- modulo: MAI-006
accion: "Agregar 5-10 User Stories"
rf_afectados: 6
- modulo: MAI-011
accion: "Agregar 5-10 User Stories"
rf_afectados: 1

View File

@ -0,0 +1,527 @@
# MATRIZ-COHERENCIA-DDL-BACKEND.yml - ERP Transportistas
# Sistema SIMCO v4.0.0
# Analisis de coherencia entre DDL y Backend
# Creado: 2026-01-27 (Fase 1 Auditoria)
version: "1.0.0"
created: "2026-01-27"
updated: "2026-01-27"
# ═══════════════════════════════════════════════════════════════════════════════
# RESUMEN EJECUTIVO
# ═══════════════════════════════════════════════════════════════════════════════
resumen:
total_tablas_ddl: 53
total_entities_especializadas: 44
entities_heredadas: 109
gap_entities_faltantes: 42
coherencia_porcentaje: "21%"
estado: "INCOHERENTE - Requiere implementacion urgente"
# ═══════════════════════════════════════════════════════════════════════════════
# DETALLE POR SCHEMA
# ═══════════════════════════════════════════════════════════════════════════════
schemas:
transport:
ddl_file: "01-transport-schema-ddl.sql"
tablas_ddl: 6
tablas:
- nombre: ordenes_transporte
entity_esperada: OrdenTransporte
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-003
- nombre: embarques
entity_esperada: Embarque
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-003
- nombre: viajes
entity_esperada: Viaje
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-004
- nombre: paradas_viaje
entity_esperada: ParadaViaje
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-004
- nombre: pod
entity_esperada: POD
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-007
- nombre: incidencias
entity_esperada: Incidencia
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-008
resumen:
implementadas: 0
faltantes: 6
coherencia: "0%"
fleet:
ddl_file: "02-fleet-schema-ddl.sql"
tablas_ddl: 5
tablas:
- nombre: unidades
entity_esperada: Unidad
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-011
- nombre: remolques
entity_esperada: Remolque
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-011
- nombre: operadores
entity_esperada: Operador
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P0
modulo: MAI-011
- nombre: documentos_flota
entity_esperada: DocumentoFlota
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-011
- nombre: asignaciones
entity_esperada: AsignacionFlota
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-011
resumen:
implementadas: 0
faltantes: 5
coherencia: "0%"
tracking:
ddl_file: "03-tracking-schema-ddl.sql"
tablas_ddl: 6
tablas:
- nombre: posiciones_gps
entity_esperada: PosicionGPS
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-006
- nombre: eventos
entity_esperada: EventoTracking
entity_existente: "tracking/entities (2 basicas)"
estado: PARCIAL
prioridad: P1
modulo: MAI-006
- nombre: geocercas
entity_esperada: Geocerca
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAI-006
- nombre: alertas
entity_esperada: AlertaTracking
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-006
- nombre: reglas_alerta
entity_esperada: ReglaAlerta
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-006
- nombre: eta_calculado
entity_esperada: ETACalculado
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-006
resumen:
implementadas: 1
faltantes: 5
coherencia: "17%"
fuel:
ddl_file: "04-fuel-schema-ddl.sql"
tablas_ddl: 5
tablas:
- nombre: cargas_combustible
entity_esperada: CargaCombustible
entity_existente: "combustible-gastos/carga-combustible.entity.ts"
estado: IMPLEMENTADA
prioridad: P2
modulo: MAI-012
- nombre: cruces_peaje
entity_esperada: CrucePeaje
entity_existente: "combustible-gastos/cruce-peaje.entity.ts"
estado: IMPLEMENTADA
prioridad: P2
modulo: MAI-012
- nombre: gastos_viaje
entity_esperada: GastoViaje
entity_existente: "combustible-gastos/gasto-viaje.entity.ts"
estado: IMPLEMENTADA
prioridad: P2
modulo: MAI-012
- nombre: anticipos_viaticos
entity_esperada: AnticipoViatico
entity_existente: "combustible-gastos/anticipo-viatico.entity.ts"
estado: IMPLEMENTADA
prioridad: P2
modulo: MAI-012
- nombre: control_rendimiento
entity_esperada: ControlRendimiento
entity_existente: "combustible-gastos/control-rendimiento.entity.ts"
estado: IMPLEMENTADA
prioridad: P2
modulo: MAI-012
resumen:
implementadas: 5
faltantes: 0
coherencia: "100%"
maintenance:
ddl_file: "05-maintenance-schema-ddl.sql"
tablas_ddl: 5
tablas:
- nombre: planes_mantenimiento
entity_esperada: PlanMantenimiento
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-013
- nombre: programacion_mantenimiento
entity_esperada: ProgramacionMantenimiento
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-013
- nombre: ordenes_trabajo
entity_esperada: OrdenTrabajo
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-013
- nombre: lineas_orden_trabajo
entity_esperada: LineaOrdenTrabajo
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-013
- nombre: checklist_items
entity_esperada: ChecklistItem
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-013
resumen:
implementadas: 0
faltantes: 5
coherencia: "0%"
carriers:
ddl_file: "06-carriers-schema-ddl.sql"
tablas_ddl: 6
tablas:
- nombre: carriers
entity_esperada: Carrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
- nombre: documentos_carrier
entity_esperada: DocumentoCarrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
- nombre: unidades_carrier
entity_esperada: UnidadCarrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
- nombre: operadores_carrier
entity_esperada: OperadorCarrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
- nombre: asignaciones_carrier
entity_esperada: AsignacionCarrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
- nombre: scorecard
entity_esperada: ScorecardCarrier
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAI-014
resumen:
implementadas: 0
faltantes: 6
coherencia: "0%"
billing:
ddl_file: "07-billing-transport-ddl.sql"
tablas_ddl: 6
tablas:
- nombre: lanes
entity_esperada: Lane
entity_existente: "tarifas-transporte/lane.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
- nombre: tarifas
entity_esperada: Tarifa
entity_existente: "tarifas-transporte/tarifa.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
- nombre: recargos_catalogo
entity_esperada: RecargoCatalogo
entity_existente: "tarifas-transporte/recargo-catalogo.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
- nombre: facturas_transporte
entity_esperada: FacturaTransporte
entity_existente: "tarifas-transporte/factura-transporte.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
- nombre: lineas_factura
entity_esperada: LineaFactura
entity_existente: "tarifas-transporte/linea-factura.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
- nombre: fuel_surcharge
entity_esperada: FuelSurcharge
entity_existente: "tarifas-transporte/fuel-surcharge.entity.ts"
estado: IMPLEMENTADA
prioridad: P1
modulo: MAI-009
resumen:
implementadas: 6
faltantes: 0
coherencia: "100%"
compliance:
ddl_file: "08-compliance-schema-ddl.sql"
tablas_ddl: 8
tablas:
- nombre: cartas_porte
entity_esperada: CartaPorte
entity_existente: "carta-porte/entities (7 basicas)"
estado: PARCIAL
prioridad: P1
modulo: MAE-016
- nombre: ubicaciones_carta_porte
entity_esperada: UbicacionCartaPorte
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAE-016
- nombre: mercancias_carta_porte
entity_esperada: MercanciaCartaPorte
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAE-016
- nombre: figuras_transporte
entity_esperada: FiguraTransporte
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAE-016
- nombre: autotransporte_carta_porte
entity_esperada: AutotransporteCartaPorte
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P1
modulo: MAE-016
- nombre: hos_logs
entity_esperada: HOSLog
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P3
modulo: MAE-017
- nombre: hos_resumen_diario
entity_esperada: HOSResumenDiario
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P3
modulo: MAE-017
- nombre: inspecciones_pre_viaje
entity_esperada: InspeccionPreViaje
entity_existente: null
estado: NO_IMPLEMENTADA
prioridad: P2
modulo: MAE-017
resumen:
implementadas: 1
faltantes: 7
coherencia: "13%"
# ═══════════════════════════════════════════════════════════════════════════════
# RESUMEN CONSOLIDADO
# ═══════════════════════════════════════════════════════════════════════════════
consolidado:
por_schema:
- schema: transport
tablas: 6
implementadas: 0
coherencia: "0%"
prioridad: P0
- schema: fleet
tablas: 5
implementadas: 0
coherencia: "0%"
prioridad: P0
- schema: tracking
tablas: 6
implementadas: 1
coherencia: "17%"
prioridad: P1
- schema: fuel
tablas: 5
implementadas: 5
coherencia: "100%"
prioridad: P2
- schema: maintenance
tablas: 5
implementadas: 0
coherencia: "0%"
prioridad: P2
- schema: carriers
tablas: 6
implementadas: 0
coherencia: "0%"
prioridad: P2
- schema: billing
tablas: 6
implementadas: 6
coherencia: "100%"
prioridad: P1
- schema: compliance
tablas: 8
implementadas: 1
coherencia: "13%"
prioridad: P1
totales:
tablas_ddl: 47
entities_implementadas: 13
entities_parciales: 2
entities_faltantes: 32
coherencia_global: "28%"
# ═══════════════════════════════════════════════════════════════════════════════
# PLAN DE ACCION
# ═══════════════════════════════════════════════════════════════════════════════
plan_accion:
P0_urgente:
descripcion: "Entities criticas para workflow principal"
schemas: [transport, fleet]
entities_requeridas: 11
justificacion: |
Sin estas entities no se puede implementar el flujo:
OT -> Planeacion -> Despacho -> Viaje -> POD -> Facturacion
P1_corto_plazo:
descripcion: "Entities para visibilidad y compliance"
schemas: [tracking, compliance]
entities_requeridas: 12
justificacion: |
Tracking es diferenciador de mercado.
Compliance (Carta Porte) es obligacion fiscal.
P2_mediano_plazo:
descripcion: "Entities de optimizacion"
schemas: [maintenance, carriers]
entities_requeridas: 11
justificacion: |
Mantenimiento para disponibilidad de flota.
Carriers para escalabilidad.
# ═══════════════════════════════════════════════════════════════════════════════
# NOTAS
# ═══════════════════════════════════════════════════════════════════════════════
notas:
- "fuel y billing estan 100% coherentes (11 entities implementadas)"
- "transport y fleet estan al 0% - CRITICO para el negocio"
- "Se requieren ~32 entities nuevas especializadas"
- "Las entities genericas existentes (Product, SalesOrder, etc.) NO sirven para el giro"