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-011: Solicitar servicio adicional (inspección / reempaque / devolución)¶
Caso de uso detallado para que un usuario solicite un servicio adicional sobre uno de sus paquetes.
Metadatos¶
| Campo | Valor |
|---|---|
| ID | CU-011 |
| Nombre | Solicitar servicio adicional |
| Actor primario | Usuario Final |
| Actores secundarios | Operador, Sistema de Notificaciones |
| Módulo | Servicios adicionales |
| Prioridad | Alta (MVP) |
| Frecuencia esperada | Media |
| Trazabilidad SRS | RF-033, RF-034, RF-050, RF-051, RF-052, RN-053, RN-054 |
Descripción¶
Un usuario con KYC aprobado puede solicitar uno o más servicios adicionales sobre un paquete propio que esté en estado en_almacen o listo_para_consolidar. Los servicios disponibles en MVP son:
- Inspección visual: el operador abre el paquete, toma fotos del producto y verifica estado físico.
- Prueba funcional: el operador enciende y prueba brevemente el dispositivo.
- Reempaque: el operador cambia el empaque por uno más seguro.
- Devolución a tienda: el operador envía el paquete de vuelta al vendedor.
Precondiciones¶
- El usuario está autenticado.
- El usuario tiene KYC
aprobado. - El paquete pertenece al usuario.
- El paquete está en
en_almacenolisto_para_consolidar. - El usuario tiene al menos 1 foto de evidencia (si ya fue solicitado y rechazado por falta de evidencia).
Postcondiciones¶
Éxito:
- Se crea un registro en service_requests con estado solicitado.
- El paquete pasa a estado en_servicio_adicional.
- Se envía notificación al operador.
- Se envía confirmación al usuario.
Fallo: - Se muestra error inline al usuario.
Flujo principal¶
- El usuario abre el detalle de un paquete propio.
- El usuario toca "Solicitar servicio".
- El sistema muestra las opciones disponibles según el tipo de paquete.
- El usuario selecciona el tipo de servicio (inspección, prueba, reempaque, devolución).
- Si es inspección o prueba, el usuario puede:
- Adjuntar hasta 5 fotos del producto esperado.
- Agregar descripción de qué debe verificar el operador.
- Si es reempaque, el usuario puede:
- Seleccionar tamaño de caja (S, M, L, XL).
- Indicar si requiere material extra (cinta, plástico burbuja).
- Si es devolución, el usuario debe:
- Subir evidencia de la conversación con la tienda.
- Indicar dirección de retorno del vendedor.
- El usuario revisa el costo estimado (calculado por
Quote Service). - El usuario acepta el costo → se crea
service_requestcon estadosolicitado. - El sistema cambia el paquete a
en_servicio_adicional. - El sistema notifica al operador.
- El operador ejecuta el servicio y sube evidencia (ver CU-022).
- El servicio pasa por los estados:
solicitado → cotizado → pendiente_pago → en_proceso → completado.
Flujos alternativos¶
FA-1: KYC no aprobado¶
- En el paso 1, si KYC !=
aprobado: - El sistema bloquea la acción con mensaje "Debes completar KYC para solicitar servicios".
FA-2: Paquete no elegible¶
- Si el paquete está en estado distinto a
en_almacenolisto_para_consolidar: - El sistema muestra "Este paquete no admite servicios en su estado actual".
FA-3: Servicio ya activo¶
- Si ya existe un
service_requestactivo sobre este paquete: - El sistema muestra el existente y no permite duplicar.
FA-4: Cancelación antes de pago¶
- En cualquier momento antes de
en_proceso, el usuario puede cancelar el servicio. - El paquete vuelve a
en_almacen.
Reglas de negocio¶
- RN-050: Un paquete solo puede tener un servicio activo a la vez.
- RN-051: El servicio de inspección no aplica a alimentos, líquidos o sustancias controladas.
- RN-052: El reempaque requiere aprobación previa de costo.
- RN-053: La devolución requiere evidencia de la conversación con la tienda.
- RN-054: El plazo máximo del paquete en
en_servicio_adicionales de 15 días. Pasado ese plazo, se escala a administrador.
Endpoints API¶
POST /api/v1/service-requests— crea la solicitudGET /api/v1/service-requests?package_id={id}— listaPOST /api/v1/service-requests/{id}/approve-cost— aprueba el costoPOST /api/v1/service-requests/{id}/cancel— cancela (usuario)POST /api/v1/service-requests/{id}/evidence— sube evidencia (operador)
Ver api-contract.md para el detalle.
Pantallas¶
RequestServiceScreen(app)ServiceRequestDetailScreen(app)- Backoffice:
ServiceRequestsQueueScreen,ServiceRequestDetailScreen
Eventos generados¶
SERVICE_REQUESTED— al crearSERVICE_QUOTED— al cotizarSERVICE_APPROVED— al aprobar el costoSERVICE_IN_PROGRESS— al iniciar ejecuciónSERVICE_COMPLETED— al terminarSERVICE_CANCELLED— al cancelar
Notificaciones generadas¶
- Push al operador: "Nuevo servicio solicitado por usuario X"
- Push al usuario: "Tu solicitud de [servicio] fue recibida"
- Push al usuario: "Tu servicio está en proceso"
- Push al usuario: "Tu servicio fue completado. [Ver evidencia]"