RF26: Usuario actualiza estado de recomendación a pendiente
Descripción
Como usuario autenticado, quiero marcar una recomendación como "pendiente" para indicar que pienso realizarla y darle seguimiento.
Cambia el estado de una recomendación a pending. Solo el dueño de la recomendación puede modificarla.
| Campo | Valor |
|---|---|
| Módulo | Finance Data Collection (FDC) Module — Recomendaciones |
| Actor | Usuario autenticado |
| Endpoint | PATCH /recommendations/:id/status ({ status: 'pending' }) |
| Precondiciones | Sesión activa; la recomendación pertenece al usuario |
| Prioridad | Media (MVP) |
| Etapa | MVP |
| Requisitos relacionados | RF25, RF27 |
Reglas de negocio
- RN-26.1 — Solo el dueño (
user_iddel JWT) puede cambiar el estado de su recomendación. - RN-26.2 — Transición válida:
new→pending(ycompleted→pendingsi el usuario reabre el seguimiento). - RN-26.3 — El cambio de estado se registra con marca de tiempo para análisis de adopción.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
id | Obligatorio. UUID existente y del usuario. | "Recomendación no encontrada." (404) |
status | Debe ser pending. | "Estado no válido." (400) |
Criterios de aceptación
Escenario 1: Marcar como pendiente exitoso
Dado que tengo una recomendación nueva,
Cuando la marco como pendiente,
Entonces el sistema actualiza su estado a pending y responde 200 OK,
Y el dashboard refleja el nuevo estado.
Escenario 2: Recomendación inexistente o ajena (seguridad)
Dado que envío un id que no existe o no es mío,
Cuando intento cambiar el estado,
Entonces el sistema responde 404 Not Found sin revelar si pertenece a otro usuario.
Escenario 3: Estado no válido
Dado que envío un valor de estado fuera del enum permitido,
Cuando el backend valida,
Entonces responde 400 con "Estado no válido".
Criterios no funcionales
- Operación idempotente (marcar dos veces como pendiente no cambia el resultado).
- Respuesta < 500 ms; comunicación TLS 1.2+.