Describe el Bug
El flujo para crear un nuevo curso está fundamentalmente roto y presenta múltiples errores críticos que impiden su funcionamiento. Los síntomas principales son:
- Persistencia Incompleta: Al crear un curso, este se guarda en su propia colección, pero su
ObjectId no se añade a las colecciones courses de las entidades Professor y CourseType relacionadas.
- Errores de Búsqueda y Autenticación: Las peticiones a la API fallan con errores
401 Unauthorized o crashean con BSONError, porque la lógica no convierte correctamente los string IDs (del token o del body) a ObjectIds de MongoDB antes de consultar la base de datos.
- Errores de Validación: El endpoint
POST /courses devuelve un error 400 Bad Request al recibir FormData, ya que el esquema de Valibot no está configurado para coaccionar los valores de tipo string a boolean o number.
- Conflicto de Rutas: La ruta
GET /api/courses/my-courses es interceptada por la ruta dinámica GET /api/courses/:id, causando que el controlador incorrecto se ejecute.
Nombre de Rama Sugerido (Opcional)
fix/course-creation-persistence
Tareas Propuestas (Checklist)
Definición de 'Hecho' (Definition of Done)
Describe el Bug
El flujo para crear un nuevo curso está fundamentalmente roto y presenta múltiples errores críticos que impiden su funcionamiento. Los síntomas principales son:
ObjectIdno se añade a las coleccionescoursesde las entidadesProfessoryCourseTyperelacionadas.401 Unauthorizedo crashean conBSONError, porque la lógica no convierte correctamente losstringIDs (del token o del body) aObjectIds de MongoDB antes de consultar la base de datos.POST /coursesdevuelve un error400 Bad Requestal recibirFormData, ya que el esquema de Valibot no está configurado para coaccionar los valores de tipostringabooleanonumber.GET /api/courses/my-courseses interceptada por la ruta dinámicaGET /api/courses/:id, causando que el controlador incorrecto se ejecute.Nombre de Rama Sugerido (Opcional)
fix/course-creation-persistenceTareas Propuestas (Checklist)
createdelCourseServicepara garantizar que las relaciones bidireccionales se guarden correctamente en las colecciones deProfessoryCourseType.stringaObjectId.CreateCourseSchemadevalibotpara que utilicev.transformy maneje la coerción de tipos de los datos provenientes deFormData.course.routes.tspara que las rutas específicas (/my-courses) se definan antes que las dinámicas (/:id).Definición de 'Hecho' (Definition of Done)
BSONError,400o401relacionados con los problemas descritos.