# API TEACHER MODULE

**Proyecto:** GAMILIT - Plataforma Educativa Gamificada
**Modulo:** Teacher
**Version:** 1.0
**Fecha:** 2025-12-23
**Generado por:** Auditoria de Documentacion

---

## RESUMEN

| Metrica | Valor |
|---------|-------|
| **Controllers** | 8 |
| **Services** | 16 |
| **Endpoints** | 50+ |
| **Roles requeridos** | admin_teacher, super_admin |

---

## CONTROLLERS

1. `TeacherController` - Controlador principal
2. `TeacherClassroomsController` - Gestion de aulas
3. `TeacherGradesController` - Calificaciones
4. `TeacherContentController` - Contenido educativo
5. `TeacherCommunicationController` - Comunicacion
6. `InterventionAlertsController` - Alertas de intervencion
7. `ManualReviewController` - Revision manual
8. `ExerciseResponsesController` - Respuestas de ejercicios

---

## 1. DASHBOARD ENDPOINTS

### GET /teacher/dashboard/stats
**Descripcion:** Obtiene estadisticas del aula

**Response:**
```json
{
  "totalStudents": 25,
  "activeStudents": 22,
  "averageProgress": 75.5,
  "pendingSubmissions": 12
}
```

### GET /teacher/dashboard/activities
**Descripcion:** Obtiene actividades recientes

**Query params:**
- `limit` (optional): Numero de actividades (default: 10)

### GET /teacher/dashboard/alerts
**Descripcion:** Obtiene alertas de estudiantes

### GET /teacher/dashboard/top-performers
**Descripcion:** Obtiene mejores estudiantes

**Query params:**
- `limit` (optional): Numero de estudiantes (default: 5)

### GET /teacher/dashboard/module-progress
**Descripcion:** Resumen de progreso por modulo

---

## 2. STUDENT PROGRESS ENDPOINTS

### GET /teacher/students/:studentId/progress
**Descripcion:** Obtiene progreso completo del estudiante

**Query params:**
- `moduleId` (optional): Filtrar por modulo
- `startDate` (optional): Fecha inicio
- `endDate` (optional): Fecha fin

### GET /teacher/students/:studentId/overview
**Descripcion:** Vista general del estudiante

### GET /teacher/students/:studentId/stats
**Descripcion:** Estadisticas del estudiante

### GET /teacher/students/:studentId/notes
**Descripcion:** Obtiene notas del maestro sobre el estudiante

### POST /teacher/students/:studentId/note
**Descripcion:** Agrega o actualiza nota sobre estudiante

**Body:**
```json
{
  "classroomId": "uuid",
  "content": "Nota del maestro",
  "type": "observation|concern|praise"
}
```

### GET /teacher/students/:studentId/insights
**Descripcion:** Insights con IA sobre el estudiante

**Response:**
```json
{
  "strengths": ["...", "..."],
  "weaknesses": ["...", "..."],
  "predictions": {...},
  "recommendations": ["...", "..."]
}
```

---

## 3. GRADING ENDPOINTS

### GET /teacher/submissions
**Descripcion:** Obtiene envios con filtros

**Query params:**
- `assignmentId` (optional)
- `classroomId` (optional)
- `studentId` (optional)
- `status` (optional): pending|graded|returned
- `moduleId` (optional)
- `page` (optional)
- `limit` (optional)
- `sortBy` (optional)
- `sortOrder` (optional): asc|desc

### GET /teacher/submissions/:id
**Descripcion:** Obtiene detalle de un envio

### POST /teacher/submissions/:submissionId/feedback
**Descripcion:** Envia retroalimentacion

**Body:**
```json
{
  "score": 85,
  "feedback": "Buen trabajo...",
  "rubricScores": {...}
}
```

### POST /teacher/submissions/bulk-grade
**Descripcion:** Califica multiples envios

**Body:**
```json
{
  "submissions": [
    {"id": "uuid1", "score": 90, "feedback": "..."},
    {"id": "uuid2", "score": 85, "feedback": "..."}
  ]
}
```

---

## 4. ANALYTICS ENDPOINTS

### GET /teacher/analytics
**Descripcion:** Analiticas generales del aula

**Query params:**
- `classroomId` (optional)
- `startDate` (optional)
- `endDate` (optional)
- `groupBy` (optional): day|week|month

### GET /teacher/analytics/classroom/:id
**Descripcion:** Analiticas de un aula especifica

### GET /teacher/analytics/assignment/:id
**Descripcion:** Analiticas de una asignacion

### GET /teacher/analytics/engagement
**Descripcion:** Metricas de compromiso

### GET /teacher/analytics/reports
**Descripcion:** Genera reportes comprehensivos

### GET /teacher/analytics/economy
**Descripcion:** Analiticas de economia ML Coins

**Response:**
```json
{
  "totalCirculation": 50000,
  "averageBalance": 200,
  "distributionByRange": {...},
  "topEarners": [...],
  "wealthDistribution": {...}
}
```

### GET /teacher/analytics/students-economy
**Descripcion:** Datos de economia por estudiante

### GET /teacher/analytics/achievements
**Descripcion:** Estadisticas de logros

---

## 5. REPORT GENERATION ENDPOINTS

### POST /teacher/reports/generate
**Descripcion:** Genera reporte de insights (PDF/Excel)

**Body:**
```json
{
  "classroomId": "uuid",
  "format": "pdf|excel",
  "includeInsights": true,
  "studentIds": ["uuid1", "uuid2"] // optional
}
```

**Response:** Archivo binario (PDF o XLSX)

### GET /teacher/reports/recent
**Descripcion:** Obtiene reportes recientes

**Query params:**
- `limit` (optional): Numero de reportes (default: 10)

### GET /teacher/reports/stats
**Descripcion:** Estadisticas de reportes generados

### GET /teacher/reports/:id/download
**Descripcion:** Descarga un reporte previamente generado

---

## 6. BONUS ML COINS

### POST /teacher/students/:studentId/bonus
**Descripcion:** Otorga ML Coins bonus a estudiante

**Body:**
```json
{
  "amount": 50,
  "reason": "Excelente participacion en clase"
}
```

**Response:**
```json
{
  "success": true,
  "newBalance": 350,
  "transactionId": "uuid"
}
```

---

## 7. CLASSROOMS ENDPOINTS

### GET /teacher/classrooms
**Descripcion:** Lista aulas del maestro

### GET /teacher/classrooms/:id
**Descripcion:** Detalle de un aula

### GET /teacher/classrooms/:id/students
**Descripcion:** Lista estudiantes del aula

### GET /teacher/classrooms/:id/stats
**Descripcion:** Estadisticas del aula

### GET /teacher/classrooms/:id/progress
**Descripcion:** Progreso del aula

### GET /teacher/classrooms/:classroomId/teachers
**Descripcion:** Maestros asignados al aula

### GET /teacher/classrooms/:classroomId/students/:studentId/permissions
**Descripcion:** Permisos de un estudiante

### PATCH /teacher/classrooms/:classroomId/students/:studentId/permissions
**Descripcion:** Actualiza permisos de estudiante

### POST /teacher/classrooms/:classroomId/students/:studentId/block
**Descripcion:** Bloquea a un estudiante

### POST /teacher/classrooms/:classroomId/students/:studentId/unblock
**Descripcion:** Desbloquea a un estudiante

---

## 8. COMMUNICATION ENDPOINTS

### GET /teacher/conversations
**Descripcion:** Lista conversaciones

### GET /teacher/unread-count
**Descripcion:** Cuenta mensajes no leidos

### POST /teacher/classroom/:classroomId/announcement
**Descripcion:** Envia anuncio al aula

**Body:**
```json
{
  "title": "Titulo del anuncio",
  "content": "Contenido del anuncio",
  "priority": "normal|high"
}
```

---

## 9. INTERVENTION ALERTS ENDPOINTS

### GET /teacher/alerts
**Descripcion:** Lista alertas de intervencion

### GET /teacher/alerts/:id
**Descripcion:** Detalle de una alerta

### PATCH /teacher/alerts/:id/acknowledge
**Descripcion:** Reconoce una alerta

### PATCH /teacher/alerts/:id/resolve
**Descripcion:** Resuelve una alerta

### PATCH /teacher/alerts/:id/dismiss
**Descripcion:** Descarta una alerta

---

## 10. MANUAL REVIEW ENDPOINTS

### GET /teacher/pending
**Descripcion:** Ejercicios pendientes de revision manual

### GET /teacher/my-reviews
**Descripcion:** Mis revisiones

### POST /teacher/:id/start
**Descripcion:** Inicia revision

### POST /teacher/:id/complete
**Descripcion:** Completa revision

### POST /teacher/:id/return
**Descripcion:** Devuelve para correccion

---

## 11. EXERCISE RESPONSES ENDPOINTS

### GET /teacher/exercises/:exerciseId/responses
**Descripcion:** Respuestas de un ejercicio

### GET /teacher/attempts
**Descripcion:** Lista intentos de ejercicios

### GET /teacher/attempts/:id
**Descripcion:** Detalle de un intento

### GET /teacher/attempts/student/:studentId
**Descripcion:** Intentos de un estudiante

### GET /teacher/student/:studentId/history
**Descripcion:** Historial del estudiante

### POST /teacher/student/:studentId/feedback
**Descripcion:** Envia retroalimentacion

---

## 12. CONTENT MANAGEMENT

### POST /teacher/content/generate
**Descripcion:** Genera contenido educativo

### GET /teacher/content/:id
**Descripcion:** Obtiene contenido

### POST /teacher/content/:id/clone
**Descripcion:** Clona contenido

### PATCH /teacher/content/:id/publish
**Descripcion:** Publica contenido

### DELETE /teacher/content/:id
**Descripcion:** Elimina contenido

---

## AUTENTICACION Y AUTORIZACION

Todos los endpoints requieren:
- **Header:** `Authorization: Bearer <jwt_token>`
- **Roles permitidos:** `admin_teacher`, `super_admin`

---

## CODIGOS DE RESPUESTA

| Codigo | Descripcion |
|--------|-------------|
| 200 | Exito |
| 201 | Creado |
| 400 | Solicitud invalida |
| 401 | No autenticado |
| 403 | No autorizado |
| 404 | No encontrado |
| 500 | Error del servidor |

---

## SERVICES DEL MODULO

1. `TeacherDashboardService`
2. `StudentProgressService`
3. `GradingService`
4. `AnalyticsService`
5. `ReportsService`
6. `BonusCoinsService`
7. `StorageService`
8. `TeacherReportsService`
9. `ManualReviewService`
10. `InterventionAlertsService`
11. `ExerciseResponsesService`
12. `TeacherClassroomsCrudService`
13. `TeacherMessagesService`
14. `TeacherContentService`
15. `StudentBlockingService`
16. `MlPredictorService`

---

**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-23
**Version:** 1.0
