Saltar a contenido

Riesgos operativos

Riesgos que la app debe prevenir o mitigar activamente, conectados a validaciones, pantallas, estados, notificaciones e incidencias.


Matriz de riesgos

Riesgo Validación Pantalla Estado que previene Notificación Incidencia asociada Responsable
Dirección mal puesta No permite guardar sin formato válido de provincia + municipio + dirección Registro, Editar perfil N/A N/A Incidencia de dirección Usuario
Paquete sin identificador El operador recibe por código de casillero; sin código no se puede recibir Recepción (operador) pendiente_conciliacion N/A Paquete sin identificar Operador
Tracking incompleto Formato obligatorio: al menos 5 caracteres, solo letras y números Prealerta N/A N/A Tracking inválido Usuario
Valor subdeclarado Advertencia visible si el valor declarado está bajo el rango típico del marketplace Prealerta, Detalle de paquete N/A N/A Subdeclaración Usuario
Categoría incorrecta Guía visual con ejemplos por categoría; categoría requerida antes de cotizar Prealerta, Paquete N/A N/A Mal clasificado Usuario
Artículo restringido Lista de restricciones visible en tutoriales y al reportar; bloquea si es prohibido Prealerta, Paquete N/A N/A Retenido en aduana Usuario
Remitente/destinatario incompleto Campos obligatorios con formato validado antes de enviar Prealerta, Paquete N/A N/A Envío bloqueado Usuario
Error al consolidar Lista de paquetes a consolidar con foto y tracking antes de confirmar Consolidación consolidado N/A Paquetes mezclados Operador
Exceso de tiempo en almacén Job diario verifica días de almacenaje; alerta antes del día 20 Dashboard, Paquete N/A Push a los 15 y 19 días Cargo por almacenaje Sistema + Operador
Devolución no documentada Flujo formal con motivo obligatorio, evidencia y estado devuelto_a_tienda Paquete → Devolución devuelto_a_tienda Notificación de inicio y fin de devolución Trazabilidad de devolución Operador
Tutorial desactualizado Fecha de última actualización visible; contenido administrable desde Django Admin Tutoriales N/A N/A Instrucción incorrecta Admin
Reglas de aduana vencidas Fecha de actualización visible en módulo de aduana; fuente normativa cargada por admin Módulo de aduana N/A N/A Información errónea Admin
Falta de trazabilidad Cada cambio de estado genera package_event visible en timeline Paquete → Timeline Todos N/A N/A Sistema
KYC no aprobado No bloquea prealerta; bloquea despacho, consolidación, pago y crédito Dashboard (aviso), Paquete N/A Push cuando KYC expire Envío bloqueado Usuario
Pago duplicado Lock en Redis durante confirmación; estado pendiente antes de completar Pagos N/A N/A Doble cargo Sistema
Identificador duplicado Lock en Redis al generar; dígito verificador con mod-10 N/A (se genera) N/A N/A Identificador duplicado Sistema
Crédito negativo Check constraint en DB; validación en servicio antes de aplicar N/A N/A N/A Crédito inválido Sistema
Archivo KYC expuesto Bucket privado; URLs firmadas con TTL 5 min; log de acceso obligatorio KYC N/A N/A Exposición de documento Sistema
OTP reutilizado o brute-force Rate limit: 3 intentos por código; código expira en 5 min Login N/A N/A Acceso no autorizado Sistema

Validaciones automáticas por pantalla

Pantalla Validaciones automáticas
Registro Formato de email, teléfono con código de país, contraseña con requisitos mínimos
Prealerta Tracking no vacío ni inválido, valor > 0, categoría obligatoria, remitente completo
Recepción (operador) Identificador existe y está activo; tracking no duplicado en mismo día
Consolidación Al menos 2 paquetes, todos en estado en_almacen, mismo usuario, mismo KYC aprobado
Cotización Todos los paquetes en consolidación con KYC aprobado; cotización no expirada
Pago Saldo suficiente o método alternativo; sesión de pago no expirada
KYC Documento legible (no borroso), datos consistentes entre rostro y documento

Estados que activan incidencias automáticamente

Estado Incidencia automática Condición
incidencia en paquete damaged_package o wrong_package Operador reporta
perdido carrier_loss Después de 30 días en en_transito sin actualización
rechazado en envío customs_hold Aduana reclasifica o retiene
KYC vencido Bloqueo de dispatch User con KYC aprobado hace más de 10 años sin revalidación

Notificaciones automáticas

Evento Canal Timing
Paquete recibido en almacén Push Inmediato
Paquete próximo a vencer (15 días) Push Una vez al día a las 9am
Paquete próximo a vencer (19 días) Push + Email Una vez al día a las 9am
Cargo por almacenaje aplicado Push Inmediato
KYC próximo a vencer (90 días antes) Push + Email Una vez
KYC vencido Push Inmediato
Consolidación lista para pagar Push Inmediato
Envío despachado Push Inmediato
Envío entregado Push Inmediato
Incidencia abierta Push al usuario + email al operador Inmediato

Auditoría de riesgos

Cada riesgo que resulta en una incidencia debe generar un registro en audit_logs con:

  • Entidad afectada (paquete, usuario, envío)
  • Acción que lo causó
  • Usuario o sistema que lo provocó
  • Timestamp
  • Estado anterior y nuevo

Estrategia general

La app debe funcionar como una red de prevención que anticipa errores del usuario en lugar de corregirlos después:

  1. Validar antes, no después: campos obligatorios, formatos, rangos.
  2. Guiar con ejemplos: cada campo complejo debe tener un ejemplo visible.
  3. Alertar proactivamente: notificaciones antes de que un plazo venza.
  4. Registrar todo: auditoría de cambios para resolver disputas.
  5. Facilitar lo correcto: que lo más fácil de hacer sea lo correcto (copiar dirección en un toque, reportar en pocos pasos).