erp-transportistas-v2/docs/02-definicion-modulos/MAI-005-despacho/historias-usuario/US-MAI005-003.md
Adrian Flores Cortes 9caeae936a docs: Add MAI-002, MAI-004, MAI-005 module specifications
MAI-002 (Tarifas y SLA):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (31 SP total)
- Covers: tarifario por lane, recargos, SLA, cotizaciones, aprobaciones

MAI-004 (Planeacion TMS):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (39 SP total)
- Covers: tablero planeacion, consolidacion, asignacion, validaciones, ETA

MAI-005 (Despacho):
- README, REQUERIMIENTOS, RESUMEN-EPICA
- 5 User Stories (28 SP total)
- Covers: checklist NOM-068, sellos, evidencias, kit documental, gate out

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

172 lines
9.7 KiB
Markdown

# US-MAI005-003: Capturar evidencias de carga
**ID:** US-MAI005-003
**Módulo:** MAI-005 (Despacho)
**Prioridad:** Alta
**Story Points:** 5
---
## Historia de Usuario
**Como** operador de transporte
**Quiero** capturar evidencias fotográficas del estado de la carga antes de salir
**Para** tener respaldo del estado inicial y evitar disputas por daños
---
## Criterios de Aceptación
### CA-001: Capturar fotos de la carga
**Dado** que la carga está lista en la unidad
**Cuando** tomo fotos de evidencia
**Entonces** puedo capturar múltiples fotos mostrando el estado de la mercancía
### CA-002: Mínimo de fotos requerido
**Dado** que el cliente o tipo de carga requiere evidencias
**Cuando** intento continuar sin fotos suficientes
**Entonces** el sistema indica cuántas fotos mínimas se requieren (configurable)
### CA-003: Registrar peso en báscula
**Dado** que la carga pasa por báscula
**Cuando** registro el peso
**Entonces** puedo ingresar el peso total (kg) manual o desde ticket de báscula
### CA-004: Capturar firma de almacén
**Dado** que el almacén entrega la carga
**Cuando** solicito la firma
**Entonces** el responsable de almacén firma en pantalla confirmando la entrega
### CA-005: Funcionamiento offline
**Dado** que estoy en área sin señal
**Cuando** capturo fotos y firma
**Entonces** se almacenan localmente y sincronizan al recuperar conexión
### CA-006: Metadata de fotos
**Dado** que capturo una foto
**Cuando** se guarda
**Entonces** incluye timestamp, coordenadas GPS y dispositivo origen
---
## Mockup / UI
```
┌─────────────────────────────────────────────────────────────────┐
│ EVIDENCIAS DE CARGA ✕ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Viaje: VJE-0123 | Carga: Electrodomésticos │
│ Requisito mínimo: 3 fotos │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ 📷 FOTOS DE CARGA (3/3 mínimo) │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 📷 1 │ │ 📷 2 │ │ 📷 3 │ │ + │ │
│ │ [Vista] │ │ [Vista] │ │ [Vista] │ │ Agregar │ │
│ │ 06:10am │ │ 06:11am │ │ 06:12am │ │ foto │ │
│ │ ✓ │ │ ✓ │ │ ✓ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ ⚖ PESO EN BÁSCULA (Opcional) │
│ │
│ Peso bruto: [12,500] kg │
│ Peso neto: [10,200] kg │
│ Referencia ticket: [BSC-2026-0145] │
│ │
│ [📷 Foto de ticket báscula] ✓ Capturada │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ ✍ FIRMA DE ALMACÉN │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [Área de firma - táctil] │ │
│ │ │ │
│ │ ~~~~~~~~~~~~~~~~~~~~~~ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Nombre: [Carlos López Hernández] │
│ Puesto: [Jefe de Almacén] │
│ │
│ [Limpiar firma] │
│ │
│ ───────────────────────────────────────────────────────────── │
│ │
│ ✓ Fotos: 3/3 ✓ Peso: Registrado ✓ Firma: Capturada │
│ │
│ [Cancelar] [Continuar →] │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Vista de Foto Individual
```
┌─────────────────────────────────────────────────────────────────┐
│ DETALLE DE EVIDENCIA ✕ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ │ │
│ │ [Imagen de la carga] │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 📅 Fecha/Hora: 2026-01-28 06:10:32 │
│ 📍 Ubicación: 19.4326, -99.1332 (Bodega CDMX) │
│ 📱 Dispositivo: iPhone 14 Pro │
│ │
│ Nota: [Vista frontal de la estiba completa] │
│ │
│ [🗑 Eliminar] [✓ Confirmar] │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Configuración por Cliente
| Cliente | Fotos mínimas | Peso requerido | Firma requerida |
|---------|---------------|----------------|-----------------|
| Default | 3 | No | Sí |
| Cliente A | 5 | Sí | Sí |
| Cliente B | 3 | Sí (neto y bruto) | Sí |
| Cliente C | 2 | No | No |
---
## Notas Técnicas
- Tabla: `evidencias_carga`
- Fotos se comprimen a max 1MB antes de subir
- Firma se guarda como SVG o PNG base64
- Metadata EXIF se extrae automáticamente
- Cola de sincronización con reintentos exponenciales
- Configuración de requisitos en `requisitos_cliente`
---
## Definición de Done
- [ ] Captura de múltiples fotos con cámara
- [ ] Validación de fotos mínimas por configuración
- [ ] Registro de peso con campos bruto/neto
- [ ] Captura de firma táctil
- [ ] Almacenamiento con metadata (GPS, timestamp)
- [ ] Funcionamiento offline completo
- [ ] Sincronización con cola de reintentos
- [ ] Tests de sincronización y validación