Skip to content

feat: Implementar entidad Enrollement #125

@carlex74

Description

@carlex74

Descripción

User Story: Como administrador/profesor, quiero un módulo de Enrollments para poder inscribir y rastrear a los estudiantes en cursos (estado, fecha, nota, progreso) y exponer CRUD + consultas necesarias para reporting y reglas de negocio.

Nombre de Rama Sugerido (Opcional)

feature/enrollment-entity

Tareas Propuestas (Checklist)

  • Crear la entidad Enrollment con campos mínimos:

_id: ObjectId
course: Rel
enrolledAt: Date
[state: 'enrolled' | 'completed' | 'dropped']
grade?: number
progress?: number

  • Añadir relación inversa (Collection) en [Student]
  • Añadir índice/constraint único compuesto (student, course) para prevenir duplicados.
  • Crear enrollment.services.ts con lógica: create, findAll, findOne, update, remove, findByStudent, findByCourse.
  • Crear enrollment.controller.ts y rutas REST (enrollment.routes.ts) con middlewares de validación y autorización.
  • Crear enrollment.schemas.ts (Valibot) para create/update y middleware de validación ([validate.middleware.ts]
  • Generar migración MikroORM que cree la colección / índices necesarios.
  • Añadir documentación OpenAPI (docs/enrollments.docs.yaml) y actualizar README/docs de módulos.
  • Añadir pruebas unitarias para service + controller y pruebas de integración (usar fixtures con DB de pruebas).
  • Añadir logging consistente (usar logger existente).
  • Añadir scripts de seed (opcional) para datos de ejemplo.

Definición de 'Hecho' (Definition of Done)

  • El código está cubierto por pruebas automatizadas (unit + integration relevantes).
  • La migración se ha creado y probado en entorno de desarrollo.
  • La documentación relevante (OpenAPI y README del módulo) ha sido actualizada.
  • La API expone endpoints REST claramente tipados y validados.
  • Los cambios en entidades ([Student] y Course) y la nueva Enrollment están migrados y no rompen integraciones existentes.
  • El Pull Request asociado ha sido revisado y aprobado.
  • Logs y errores están manejados de forma consistente (usa logger y middleware de errores).

Dependencias

  • Requiere revisar/coordinar cambios en:
  • [student.entity.ts]
  • [course.entity.ts]
  • Autenticación/roles: si se limitan operaciones por rol)
  • Migraciones y CI para ejecutar migrations en pipelines

Metadata

Metadata

Assignees

Labels

featureIntroduce new features, enhancements, or significant improvements to the projectneeds-triageEsta issue es nueva y necesita ser revisada, priorizada y asignada
No fields configured for Feature.

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions