Saltar al contenido principal

RF27: Usuario actualiza estado de recomendación a completada

Descripción

Como usuario autenticado, quiero marcar una recomendación como "completada" para registrar mi progreso y que Finnova ajuste futuras recomendaciones.

Cambia el estado a completed. El sistema usa esta señal para medir adopción y afinar el motor de IA. Puede otorgar una recompensa (RF67) si aplica.

CampoValor
MóduloFinance Data Collection (FDC) Module — Recomendaciones
ActorUsuario autenticado
EndpointPATCH /recommendations/:id/status ({ status: 'completed' })
PrecondicionesSesión activa; la recomendación pertenece al usuario
PrioridadMedia (MVP)
EtapaMVP
Requisitos relacionadosRF25, RF26, RF67

Reglas de negocio

  • RN-27.1 — Solo el dueño (user_id del JWT) puede completar su recomendación.
  • RN-27.2 — Transición válida: new/pendingcompleted.
  • RN-27.3 — Completar una recomendación puede disparar la generación de una recompensa (RF67).
  • RN-27.4 — El evento se registra con marca de tiempo para análisis de adopción y reentrenamiento del modelo.

Validaciones de entrada

CampoReglasMensaje de error
idObligatorio. UUID existente y del usuario."Recomendación no encontrada." (404)
statusDebe ser completed."Estado no válido." (400)

Criterios de aceptación

Escenario 1: Marcar como completada exitoso

Dado que tengo una recomendación nueva o pendiente, Cuando la marco como completada, Entonces el sistema actualiza su estado a completed y responde 200 OK, Y evalúa si corresponde otorgar una recompensa (RF67).

Escenario 2: Recomendación inexistente o ajena (seguridad)

Dado que envío un id que no existe o no es mío, Cuando intento completarla, Entonces el sistema responde 404 Not Found.

Escenario 3: Estado no válido

Dado que envío un estado fuera del enum, Cuando el backend valida, Entonces responde 400 con "Estado no válido".

Criterios no funcionales

  • Operación idempotente; respuesta < 500 ms.
  • La evaluación de recompensa es asíncrona y no bloquea la respuesta.
  • Comunicación TLS 1.2+.

Diagrama de secuencia