Fase 5 completada (21/21 correcciones ejecutadas): P2-001: Documentar Social API (10 controllers, 106 endpoints) P2-002: Documentar componentes Frontend (497 componentes, 103 hooks) P2-003: Actualizar FRONTEND_INVENTORY.yml a v4.0 P2-004: Documentar views Database (17 views en 7 schemas) P2-005: Documentar rutas duplicadas Auth (requiere refactor) P2-006: Documentar código muerto Teacher (requiere refactor) Archivos creados: - docs/90-transversal/api/API-SOCIAL-MODULE.md - docs/frontend/COMPONENTES-INVENTARIO.md - docs/database/VIEWS-INVENTARIO.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9.5 KiB
API SOCIAL MODULE
Proyecto: GAMILIT - Plataforma Educativa Gamificada
Modulo: Social
Version: 1.0
Fecha: 2025-12-23
Base URL: /api/v1/social
RESUMEN
| Metrica | Valor |
|---|---|
| Controllers | 10 |
| Services | 10 |
| Endpoints | 106 |
| Entidades | 13 |
CONTROLLERS
SchoolsController- Instituciones educativasClassroomsController- Aulas virtualesClassroomMembersController- Membresia en aulasTeamsController- Equipos colaborativosTeamMembersController- Membresia en equiposTeamChallengesController- Desafios de equiposFriendshipsController- AmistadesPeerChallengesController- Desafios peer-to-peerChallengeParticipantsController- Participantes en desafiosUserActivitiesController- Activity Feed
1. SCHOOLS ENDPOINTS
Base: /social/schools
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /schools |
Listar escuelas |
| GET | /schools/:id |
Obtener escuela por ID |
| GET | /schools/code/:code |
Obtener por codigo |
| POST | /schools |
Crear escuela |
| PATCH | /schools/:id |
Actualizar escuela |
| DELETE | /schools/:id |
Desactivar escuela |
| GET | /schools/:id/stats |
Estadisticas |
| PATCH | /schools/:id/settings |
Actualizar config |
2. CLASSROOMS ENDPOINTS
Base: /social/classrooms
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /classrooms |
Listar aulas |
| GET | /classrooms/:id |
Obtener aula |
| GET | /classrooms/code/:code |
Obtener por codigo |
| POST | /classrooms |
Crear aula |
| PATCH | /classrooms/:id |
Actualizar aula |
| DELETE | /classrooms/:id |
Desactivar aula |
| GET | /classrooms/:id/stats |
Estadisticas |
| GET | /classrooms/:id/members |
Listar miembros |
| POST | /classrooms/:id/students/:studentId |
Inscribir estudiante |
| DELETE | /classrooms/:id/students/:studentId |
Retirar estudiante |
| PATCH | /classrooms/:id/schedule |
Actualizar horario |
| GET | /teachers/:teacherId/classrooms/active |
Aulas del profesor |
3. CLASSROOM MEMBERS ENDPOINTS
Base: /social/classroom-members
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /classrooms/:id |
Obtener miembros |
| GET | /users/:userId |
Aulas del usuario |
| GET | /classrooms/:id/users/:userId |
Membresia especifica |
| POST | / |
Inscribir estudiante |
| PATCH | /:id/status |
Actualizar estado |
| PATCH | /:id/grade |
Registrar calificacion |
| PATCH | /:id/attendance |
Actualizar asistencia |
| POST | /:id/withdraw |
Marcar retirado |
| GET | /classrooms/:id/active |
Miembros activos |
| GET | /classrooms/:id/leaderboard |
Leaderboard del aula |
Estados: active, inactive, withdrawn, completed
4. TEAMS ENDPOINTS
Base: /social/teams
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /teams |
Listar equipos |
| GET | /teams/:id |
Obtener equipo |
| GET | /teams/code/:code |
Obtener por codigo |
| POST | /teams |
Crear equipo |
| PATCH | /teams/:id |
Actualizar equipo |
| DELETE | /teams/:id |
Eliminar equipo |
| POST | /teams/:id/members/:userId |
Agregar miembro |
| DELETE | /teams/:id/members/:userId |
Remover miembro |
| PATCH | /teams/:id/score |
Actualizar puntuacion |
| POST | /teams/:id/xp |
Agregar XP |
| GET | /teams/:id/stats |
Estadisticas |
| GET | /teams/:id/members |
Listar miembros |
| GET | /classrooms/:id/teams/leaderboard |
Leaderboard equipos |
5. TEAM MEMBERS ENDPOINTS
Base: /social/team-members
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /teams/:teamId |
Miembros del equipo |
| GET | /users/:userId |
Equipos del usuario |
| GET | /teams/:id/users/:userId |
Membresia especifica |
| POST | / |
Unirse a equipo |
| PATCH | /:id/role |
Actualizar rol |
| DELETE | /:id |
Salir del equipo |
| GET | /teams/:id/active |
Miembros activos |
| POST | /teams/:id/transfer-ownership |
Transferir propiedad |
Roles: owner, admin, member
6. TEAM CHALLENGES ENDPOINTS
Base: /social/team-challenges
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /teams/:teamId |
Desafios del equipo |
| GET | /challenges/:id |
Equipos en desafio |
| GET | /teams/:id/challenges/:id |
Registro especifico |
| POST | / |
Asignar desafio |
| PATCH | /:id/status |
Actualizar estado |
| PATCH | /:id/score |
Registrar puntuacion |
| POST | /:id/complete |
Completar |
| POST | /:id/fail |
Marcar fallido |
| GET | /challenges/:id/leaderboard |
Leaderboard |
Estados: active, in_progress, completed, failed
7. FRIENDSHIPS ENDPOINTS
Base: /social/users/:userId/friends
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /users/:userId/friends |
Listar amigos |
| GET | /users/:userId/friends/pending |
Solicitudes pendientes |
| GET | /users/:userId/friends/sent |
Solicitudes enviadas |
| POST | /friendships/request |
Enviar solicitud |
| PATCH | /friendships/:id/accept |
Aceptar |
| PATCH | /friendships/:id/reject |
Rechazar |
| POST | /users/:userId/block/:friendId |
Bloquear usuario |
| DELETE | /users/:userId/block/:friendId |
Desbloquear |
| DELETE | /users/:userId/friends/:friendId |
Eliminar amistad |
| GET | /users/:id1/:id2/friendship |
Verificar estado |
Estados: pending, accepted, rejected, blocked
8. PEER CHALLENGES ENDPOINTS (EPIC EXT-009)
Base: /social/peer-challenges
| Method | Endpoint | Descripcion |
|---|---|---|
| POST | / |
Crear desafio P2P |
| GET | / |
Listar desafios |
| GET | /open |
Desafios abiertos |
| GET | /active |
Desafios activos |
| GET | /:id |
Obtener desafio |
| GET | /creator/:userId |
Desafios del creador |
| PATCH | /:id |
Actualizar desafio |
| PATCH | /:id/start |
Iniciar desafio |
| PATCH | /:id/complete |
Completar |
| PATCH | /:id/cancel |
Cancelar |
| PATCH | /mark-expired |
Marcar expirados |
| DELETE | /:id |
Eliminar |
| GET | /stats/by-type |
Stats por tipo |
| GET | /stats/by-status |
Stats por estado |
Tipos: head_to_head, multiplayer, tournament, leaderboard Estados: open, full, in_progress, completed, cancelled, expired
9. CHALLENGE PARTICIPANTS ENDPOINTS (EPIC EXT-009)
Base: /social/challenge-participants
| Method | Endpoint | Descripcion |
|---|---|---|
| POST | / |
Agregar participante |
| GET | /challenge/:id |
Participantes |
| GET | /challenge/:id/user/:userId |
Participacion especifica |
| GET | /user/:userId |
Desafios del usuario |
| PATCH | /challenge/:id/user/:userId/accept |
Aceptar invitacion |
| PATCH | /challenge/:id/user/:userId/status |
Actualizar estado |
| PATCH | /challenge/:id/user/:userId/score |
Actualizar score |
| PATCH | /challenge/:id/rankings |
Calcular rankings |
| PATCH | /challenge/:id/winner |
Determinar ganador |
| POST | /challenge/:id/user/:userId/rewards |
Distribuir recompensa |
| POST | /challenge/:id/rewards |
Distribuir a todos |
| PATCH | /challenge/:id/user/:userId/forfeit |
Abandonar |
| PATCH | /challenge/:id/user/:userId/disqualify |
Descalificar |
| DELETE | /challenge/:id/user/:userId |
Eliminar participante |
| GET | /user/:userId/stats |
Estadisticas usuario |
Estados: invited, accepted, in_progress, completed, forfeit, disqualified
10. USER ACTIVITIES ENDPOINTS (TASK 2.5)
Base: /social/activities
| Method | Endpoint | Descripcion |
|---|---|---|
| GET | /users/:userId/activities/me |
Mis actividades |
| GET | /activities/feed |
Feed de amigos |
| POST | /activities |
Crear actividad |
| GET | /activities/:id |
Obtener actividad |
| GET | /activities/public/all |
Actividades publicas |
Tipos: achievement, exercise, rankup, level_up
ENTIDADES
| Entidad | Descripcion |
|---|---|
| School | Instituciones educativas |
| Classroom | Aulas virtuales |
| ClassroomMember | Membresia en aulas |
| Team | Equipos colaborativos |
| TeamMember | Membresia en equipos |
| TeamChallenge | Desafios de equipos |
| Friendship | Relaciones de amistad |
| PeerChallenge | Desafios peer-to-peer |
| ChallengeParticipant | Participantes en desafios |
| UserActivity | Activity Feed |
| TeacherClassroom | Relacion profesor-aula |
| AssignmentClassroom | Asignaciones a aulas |
| DiscussionThread | Hilos de discusion |
SERVICES
SchoolsService- CRUD escuelas, estadisticasClassroomsService- CRUD aulas, inscripcionClassroomMembersService- Membresia, calificacionesTeamsService- CRUD equipos, leaderboardsTeamMembersService- Membresia, rolesTeamChallengesService- Asignacion desafiosFriendshipsService- Gestión amistadesPeerChallengesService- Desafios P2PChallengeParticipantsService- Participantes, recompensasUserActivitiesService- Activity Feed
CARACTERISTICAS
Multi-Tenancy
- Escuelas asociadas a tenant_id
- Filtrado automatico en consultas
Gamificacion
- Puntuaciones (score, total_score)
- Experiencia (XP, total_xp)
- Leaderboards por aula, equipo, desafio
- Recompensas (XP + ML Coins)
Gestion de Miembros
- Estados: active, inactive, withdrawn, completed
- Calificaciones y asistencia
- Roles: owner, admin, member
Validaciones
- Codigos unicos por escuela, aula, equipo
- Capacidad maxima
- Control de permisos
Generado por: Requirements-Analyst Fecha: 2025-12-23 Version: 1.0