- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
368 lines
10 KiB
YAML
368 lines
10 KiB
YAML
# 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"
|