Daily Scrum - 04 de Diciembre 2025 (Admin Dashboard)

🎯 Objetivo hoy

Implementar el dashboard de administración con estadísticas globales del sistema.


✅ ¿Qué hice ayer?

  • Dashboard de profesor completo con gestión de asignaturas.
  • Sistema de roles (student, professor, admin) implementado.
  • Página de configuración unificada con secciones por rol.

🚀 ¿Qué haré hoy?

  1. Backend - Endpoints de Admin:
    • GET /admin/stats - estadísticas globales del sistema.
    • POST /admin/assign-subject - asignar asignatura a profesor (solo admin).
    • POST /admin/promote - cambiar rol de usuario (solo admin).
    • Métricas: total usuarios por rol, sesiones, mensajes, documentos.
    • Datos para gráficas: actividad por día, uso por asignatura.
  2. Backend - Separar permisos de enroll:
    • POST /admin/enroll - matricular estudiante (professor en su asignatura + admin).
    • Validar que el usuario objetivo sea estudiante.
    • Validar que el professor solo matricule en sus asignaturas.
  3. Frontend - Admin Dashboard:
    • Reemplazar placeholders con datos reales.
    • Cards con estadísticas globales (usuarios, sesiones, documentos).
    • Gráfica de actividad reciente (últimos 7 días).
    • Lista de usuarios con opción de promover/asignar.
  4. Frontend - Diálogos de Gestión:
    • EnrollStudentDialog - matricular estudiante (para professor).
    • AssignSubjectDialog - asignar asignatura a profesor (solo admin).
    • PromoteUserDialog - cambiar rol de usuario (solo admin).

🚧 Obstáculos potenciales

  • Agregación de datos en MongoDB puede ser lenta → Usar índices apropiados.
  • El endpoint /admin/enroll ya existe pero no valida roles → Refactorizar.
  • Necesito distinguir entre acciones de professor y admin en el frontend.

✅ Criterios de aceptación

  • Admin ve estadísticas reales (usuarios por rol, sesiones, documentos).
  • Gráfica de actividad muestra datos de los últimos 7 días.
  • Professor puede matricular estudiantes en SUS asignaturas.
  • Admin puede asignar asignaturas a profesores.
  • Admin puede promover estudiante a profesor o profesor a admin.
  • Toast de confirmación en cada acción.

📝 Notas

  • Reutilizar componentes de StatsOverview del dashboard de profesor.
  • El professor solo ve el diálogo de matricular estudiante.
  • El admin ve todos los diálogos de gestión.

🔐 Matriz de permisos

| Acción | Student | Professor | Admin | |——–|———|———–|——-| | Matricular estudiante | ❌ | ✅ (su asignatura) | ✅ | | Asignar asignatura a profesor | ❌ | ❌ | ✅ | | Promover usuario | ❌ | ❌ | ✅ | | Ver stats globales | ❌ | ❌ | ✅ |