Documento histórico
Este documento se conserva solo para trazabilidad. Consulte el índice maestro para la fuente vigente.
Documento histórico — no usar como fuente de decisiones actuales
Reemplazado por la versión canónica del 2026-07-11. Conservar solo como trazabilidad histórica.
CU-012: Abrir y gestionar una incidencia¶
Caso de uso detallado para que un usuario u operador abra, siga y cierre una incidencia. Cubre el flujo de incidencias de la app y del backoffice.
Metadatos¶
| Campo | Valor |
|---|---|
| ID | CU-012 |
| Nombre | Abrir y gestionar una incidencia |
| Actor primario | Usuario Final u Operador |
| Actores secundarios | Sistema de Notificaciones, opcionalmente Agencia |
| Módulo | Incidencias y reclamos |
| Prioridad | Alta (MVP) |
| Frecuencia esperada | Media |
| Trazabilidad SRS | RF-035, RF-036, RF-037, RF-038, RF-046, RF-049 |
Descripción¶
Una incidencia es cualquier evento que afecta negativamente la operación normal de un paquete, un envío, un pago o la cuenta de un usuario, y que requiere intervención del equipo de IslaBox para resolverse.
Este caso de uso cubre el ciclo de vida completo: apertura, mensajes, evidencia, cambio de estado, resolución, cierre, escalación y reembolso cuando aplica.
Para la lista de tipos, estados y reglas, ver flujos/incidencias-reclamos.md (documento normativo).
Precondiciones¶
- El actor está autenticado.
- Si es un usuario: tiene al menos un paquete, envío o pago registrado.
- Si es un operador: tiene rol
operator,adminosysadmin. - El recurso afectado existe y pertenece al usuario (o es visible para el operador).
Postcondiciones¶
Éxito:
- Se crea un registro en incidents.
- Se notifica al actor opuesto (operador recibe push si la abre el usuario; usuario recibe email si la escala el operador).
- Se registra en audit_logs.
Fallo: - Mensaje de error específico al actor.
Flujo principal — apertura por el usuario¶
- El usuario abre el detalle del paquete o envío afectado.
- El usuario toca "Reportar problema".
- El sistema muestra el formulario de incidencia con:
- Selector de tipo (los 11 tipos de incidencias-reclamos §2)
- Campo de descripción (mín. 30 caracteres)
- Selector de archivos adjuntos (fotos, video, PDF)
- El usuario completa y adjunta al menos 1 evidencia.
- El sistema valida y crea
incidentcon estadoabierta. - El sistema asigna automáticamente a la cola del operador con menos carga.
- El sistema notifica al operador.
- El usuario ve la confirmación: "Tu reporte #1234 fue creado. Te avisaremos cuando haya movimiento."
Flujo principal — gestión por el operador¶
- El operador abre la cola de incidencias (
/backoffice/incidencias). - Selecciona una incidencia.
- La ve en estado
abierta. - Cambia a
en_revisiony agrega un mensaje interno (visible para el usuario). - Si requiere más evidencia: pasa a
requiere_evidenciay notifica al usuario. - Si la información es suficiente: investiga, contacta al usuario vía mensajes o escala.
- Decide:
- Resolver: pasa a
resueltacon texto de resolución + opcional reembolso. - Rechazar: pasa a
rechazadacon motivo obligatorio. - La incidencia queda en
cerradaautomáticamente tras 30 días sin movimiento.
Flujos alternativos¶
FA-1: Escalar a agencia¶
- Si el problema es atribuible a la agencia (retraso, pérdida en última milla):
- Operador pasa a
en_espera_de_agenciay notifica vía webhook a la agencia. - La agencia responde → operador recibe notificación y continúa.
FA-2: Generar reembolso¶
- Si la resolución incluye devolución de dinero:
- Operador marca "Generar reembolso" + monto.
- Sistema crea
paymentcon estadoreembolsado(vinculado al original). - Se notifica al usuario.
FA-3: Escalación a administrador¶
- Si el operador no puede resolver en 5 días hábiles:
- Sistema escala automáticamente al administrador.
- Notificación al admin vía email + push.
FA-4: Cierre por inactividad¶
- Si en 30 días no hay movimiento, sistema cierra la incidencia automáticamente.
- Notificación final al usuario y operador.
FA-5: Reapertura (no permitida en MVP)¶
- En MVP, una incidencia cerrada no se puede reabrir. El usuario debe abrir una nueva referenciando la anterior.
Reglas de negocio¶
- RN-046: Plazo máximo del usuario para abrir incidencia: 7 días desde la entrega o el evento.
- RN-047: Plazo de investigación: 5 días hábiles.
- RN-048: Plazo de resolución: 10 días hábiles.
- RN-049: Toda incidencia queda registrada en
audit_logscon hash para inmutabilidad. - RN-RBAC-005: Solo
adminosysadminpuede iniciar reembolso.
Endpoints API¶
POST /api/v1/incidents— abreGET /api/v1/incidents— listaGET /api/v1/incidents/{id}— detallePOST /api/v1/incidents/{id}/messages— mensaje (usuario u operador)POST /api/v1/incidents/{id}/evidence— evidenciaPATCH /api/v1/incidents/{id}/status— cambia estado (operador)POST /api/v1/incidents/{id}/close— cierra con resoluciónPOST /api/v1/incidents/{id}/escalate— escala a admin o agenciaPOST /api/v1/incidents/{id}/refund— inicia reembolso (admin)
Pantallas¶
IncidentCreateScreen(app)IncidentsListScreen(app)IncidentDetailScreen(app y backoffice)- Backoffice:
IncidentQueueScreen,IncidentAssignScreen
Eventos generados¶
INCIDENT_OPENEDINCIDENT_MESSAGE_ADDEDINCIDENT_EVIDENCE_ADDEDINCIDENT_STATUS_CHANGEDINCIDENT_ESCALATEDINCIDENT_CLOSEDINCIDENT_REFUND_INITIATED
Notificaciones generadas¶
- Al abrir: email al usuario + push al operador.
- Al cambiar estado: push al usuario + email.
- Al agregar mensaje: push al actor opuesto.
- Al escalar: email al admin.
- Al cerrar: email al usuario con resumen.