feat: convertir una actividad en proyecto (con sus tareas)

Una tarea siempre necesita una actividad contenedora, asi que convertir crea DOS cosas: el
proyecto nuevo y, dentro, una actividad nueva que recibe las tareas -- y comentarios/adjuntos --
de la actividad original. Se piden ambos nombres (precargados con el nombre actual) antes de
confirmar. La actividad original se borra al final, ya vacia de tareas (no choca con el bloqueo
de removeActivity). Exige el mismo permiso que crear un proyecto, no solo escribir la actividad.

Nuevo POST /api/activities/:id/convert-to-project. Probado de punta a punta en dev: prioridad
heredada, tareas y comentario movidos correctamente, actividad original eliminada, navega al
proyecto nuevo al terminar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-09-17 08:59:16 -05:00
parent cc7928464b
commit 043433bf9b
15 changed files with 185 additions and 6 deletions
+5
View File
@@ -81,6 +81,11 @@
permiso de escritura en ambos proyectos. Tareas/comentarios/adjuntos se mueven solos (referencian
`activity_id`, no `project_id`). Las dependencias existentes (en cualquiera de los dos sentidos)
se eliminan — solo tienen sentido dentro del mismo proyecto. `sort_order` vuelve a 0 en el destino.
- `POST /api/activities/:id/convert-to-project` — `{ projectName, taskActivityName }`. Crea un
proyecto nuevo (`projectName`) y, dentro, una actividad nueva (`taskActivityName`) que recibe
las tareas/comentarios/adjuntos de la actividad original; la original se borra al final (ya sin
tareas). Exige el mismo permiso que crear un proyecto (no solo escribir la actividad). Responde
`{ project, activity }` (201).
### Tareas (`/api/activities/:activityId/tasks`)
- `GET` · `POST` · `PUT /api/tasks/:id` · `PATCH /api/tasks/:id/done` · `DELETE /api/tasks/:id`