# DEPENDENCY GRAPH - GAMILIT # Grafo de dependencias entre modulos, schemas y componentes # Version: 2.0.0 # Fecha: 2025-12-05 (Post-Sprint P1) # Fuente: Requirements-Analyst version: "2.0.0" proyecto: "GAMILIT - Sistema de Gamificacion Educativa" fecha_actualizacion: "2025-12-05" descripcion: "Grafo de dependencias entre capas (Database -> Backend -> Frontend)" estado_proyecto: "75% completado" # ======================================== # SCHEMAS DE DATABASE (Base de la pirámide) # ======================================== database_schemas: auth_management: descripcion: "Gestión de autenticación y perfiles de usuario" dependencias: [] usado_por: - backend: ["auth", "users", "profiles"] - frontend: ["AuthContext", "useAuth"] content_management: descripcion: "Gestión de contenido pedagógico" dependencias: ["auth_management"] usado_por: - backend: ["content", "exercises", "lessons"] - frontend: ["ContentPages", "ExercisePage"] gamification_system: descripcion: "Sistema de gamificación (puntos, logros, recompensas)" dependencias: ["auth_management", "content_management"] usado_por: - backend: ["gamification", "rewards", "achievements"] - frontend: ["GamifiedHeader", "RewardsPage", "LeaderboardPage"] classroom_system: descripcion: "Gestión de aulas y grupos" dependencias: ["auth_management"] usado_por: - backend: ["classrooms", "assignments"] - frontend: ["ClassroomPages", "TeacherPortal"] analytics_system: descripcion: "Métricas y análisis de uso" dependencias: ["auth_management", "content_management", "gamification_system"] usado_por: - backend: ["analytics"] - frontend: ["AnalyticsPage", "DashboardPage"] notification_system: descripcion: "Sistema de notificaciones" dependencias: ["auth_management"] usado_por: - backend: ["notifications"] - frontend: ["NotificationsComponent"] system_config: descripcion: "Configuración del sistema" dependencias: [] usado_por: - backend: ["config"] - frontend: ["SettingsPage"] # ======================================== # MÓDULOS DE BACKEND (Capa intermedia) # ======================================== backend_modules: auth: descripcion: "Autenticación y autorización" dependencias_db: ["auth_management"] dependencias_backend: [] expone_endpoints: - "POST /auth/login" - "POST /auth/register" - "POST /auth/logout" - "GET /auth/me" usado_por_frontend: - "AuthContext" - "useAuth hook" - "LoginPage" - "RegisterPage" users: descripcion: "Gestión de usuarios" dependencias_db: ["auth_management"] dependencias_backend: ["auth"] expone_endpoints: - "GET /users" - "GET /users/:id" - "PATCH /users/:id" - "DELETE /users/:id" usado_por_frontend: - "UsersPage (admin)" - "ProfilePage" profiles: descripcion: "Perfiles de usuario" dependencias_db: ["auth_management"] dependencias_backend: ["auth", "users"] expone_endpoints: - "GET /profiles/:userId" - "PATCH /profiles/:userId" usado_por_frontend: - "ProfilePage" - "EnhancedProfilePage" content: descripcion: "Gestión de contenido" dependencias_db: ["content_management", "auth_management"] dependencias_backend: ["auth"] expone_endpoints: - "GET /content" - "POST /content" - "PATCH /content/:id" - "DELETE /content/:id" usado_por_frontend: - "ContentManagementPage" - "TeacherPortal" exercises: descripcion: "Gestión de ejercicios" dependencias_db: ["content_management"] dependencias_backend: ["auth", "content"] expone_endpoints: - "GET /exercises" - "GET /exercises/:id" - "POST /exercises/:id/submit" # ⚠️ BLOQUEANTE usado_por_frontend: - "ExercisePage" - "ExercisesList" gamification: descripcion: "Sistema de gamificación" dependencias_db: ["gamification_system", "auth_management"] dependencias_backend: ["auth", "exercises"] expone_endpoints: - "GET /gamification/points" - "GET /gamification/achievements" - "POST /gamification/claim-reward" usado_por_frontend: - "GamifiedHeader" - "RewardsPage" - "AchievementsPage" classrooms: descripcion: "Gestión de aulas" dependencias_db: ["classroom_system", "auth_management"] dependencias_backend: ["auth", "users"] expone_endpoints: - "GET /classrooms" - "POST /classrooms" - "GET /classrooms/:id/students" usado_por_frontend: - "ClassroomsPage" - "TeacherPortal" assignments: descripcion: "Gestión de tareas" dependencias_db: ["classroom_system", "content_management"] dependencias_backend: ["auth", "classrooms", "exercises"] expone_endpoints: - "GET /assignments" - "POST /assignments" - "POST /assignments/:id/submit" usado_por_frontend: - "AssignmentsPage" - "StudentDashboard" analytics: descripcion: "Métricas y análisis" dependencias_db: ["analytics_system"] dependencias_backend: ["auth", "exercises", "gamification"] expone_endpoints: - "GET /analytics/dashboard" - "GET /analytics/user/:userId" usado_por_frontend: - "AnalyticsPage" - "DashboardPage" notifications: descripcion: "Sistema de notificaciones" dependencias_db: ["notification_system"] dependencias_backend: ["auth"] expone_endpoints: - "GET /notifications" - "PATCH /notifications/:id/read" usado_por_frontend: - "NotificationsComponent" - "Header" # ======================================== # COMPONENTES DE FRONTEND (Capa superior) # ======================================== frontend_components: AuthContext: descripcion: "Contexto de autenticación" dependencias_backend: ["auth"] dependencias_frontend: [] usado_por: - "App.tsx" - "Todas las páginas protegidas" GamifiedHeader: descripcion: "Header con información de gamificación" dependencias_backend: ["gamification", "auth"] dependencias_frontend: ["AuthContext"] usado_por: - "StudentLayout" - "TeacherLayout" StudentDashboard: descripcion: "Dashboard del estudiante" dependencias_backend: ["auth", "gamification", "assignments", "analytics"] dependencias_frontend: ["AuthContext", "GamifiedHeader"] usado_por: - "StudentApp" TeacherPortal: descripcion: "Portal del maestro" dependencias_backend: ["auth", "classrooms", "assignments", "content"] dependencias_frontend: ["AuthContext"] usado_por: - "TeacherApp" AdminPortal: descripcion: "Portal de administración" dependencias_backend: ["auth", "users", "config"] dependencias_frontend: ["AuthContext"] usado_por: - "AdminApp" # ======================================== # SPRINT P2 - DEPENDENCIAS # ======================================== sprint_p2_dependencies: # Sprint P2-A p2_a_tareas: - id: "P2-DTO-001" descripcion: "Tipos canonicos frontend" dependencias: [] bloquea: ["P2-DTO-002"] - id: "P2-DTO-002" descripcion: "Transformacion snake/camel" dependencias: ["P2-DTO-001"] bloquea: [] - id: "P2-TEACHER-001" descripcion: "Eliminar mock-teacher-id" dependencias: [] bloquea: ["P2-TEACHER-002", "P2-TEACHER-003"] - id: "P2-ADMIN-001" descripcion: "AdminRolesPage" dependencias: [] bloquea: [] - id: "P2-ADMIN-002" descripcion: "AdminInstitutionsPage" dependencias: [] bloquea: [] # Sprint P2-B p2_b_tareas: - id: "P2-TEACHER-002" descripcion: "TeacherCommunicationPage" dependencias: ["P2-TEACHER-001"] bloquea: [] - id: "P2-TEACHER-003" descripcion: "TeacherContentPage" dependencias: ["P2-TEACHER-001"] bloquea: [] - id: "P2-TEACHER-004" descripcion: "TeacherResourcesPage" dependencias: ["P2-TEACHER-001"] bloquea: [] - id: "P2-ADMIN-003" descripcion: "AdminAdvancedPage (Feature Flags)" dependencias: ["P2-ADMIN-001", "P2-ADMIN-002"] bloquea: ["P2-QUALITY"] # Sprint P2-C p2_c_tareas: - id: "P2-TEST-001" descripcion: "Backend test coverage 50%" dependencias: [] bloquea: [] - id: "P2-TEST-002" descripcion: "E2E tests" dependencias: ["P2-TEACHER-004", "P2-ADMIN-003"] bloquea: [] - id: "P2-GAM-002" descripcion: "Misiones grupales gremios" dependencias: [] bloquea: [] # ======================================== # BLOQUEADORES Y DEPENDENCIAS CRITICAS # ======================================== bloqueadores_conocidos: - id: "BLOCK-001" descripcion: "Endpoint POST /exercises/:id/submit" afecta: - backend: ["exercises"] - frontend: ["ExercisePage"] prioridad: "P0" estado: "RESUELTO (Sprint P1)" - id: "BLOCK-002" descripcion: "Modulo Admin Portal incompleto" afecta: - backend: ["admin"] - frontend: ["AdminPortal"] prioridad: "P1" estado: "EN PROGRESO (80%)" - id: "BLOCK-003" descripcion: "Mock-teacher-id en 10 paginas" afecta: - frontend: ["TeacherPortal"] prioridad: "P0" estado: "PENDIENTE P2-A" - id: "BLOCK-004" descripcion: "Test coverage 18% vs 50% objetivo" afecta: - backend: ["*"] - frontend: ["*"] prioridad: "P2" estado: "PENDIENTE P2-C" # ======================================== # NOTAS # ======================================== notas: - "Actualizado post-Sprint P1 (2025-12-05)" - "Database: 95% completitud" - "Backend: 88% completitud" - "Frontend: 75% completitud" - "Test Coverage: 18% (objetivo 50%)" - "Ver ANALISIS-ALCANCES-P2-POST-SPRINT-P1-2025-12-05.md para detalles" # ======================================== # HISTORIAL # ======================================== historial: - fecha: "2025-11-23" version: "1.0.0" cambios: "Creacion inicial" - fecha: "2025-12-05" version: "2.0.0" cambios: "Actualizacion post-Sprint P1, agregado Sprint P2 dependencies"