Saltar a contenido

Documentación de Bloques

Esta carpeta contiene la documentación relacionada con la gestión de bloques en el sistema.

Índice

Archivo Descripción
01_cierre_bloque.md Flujo de cierre de bloque (preview + confirmación)
02_revision_admin.md Revisión administrativa (aprobar/rechazar bloques pendientes)
GET_completed_blocks.md Obtener bloques completados por curso escolar
GET_review_thread.md Obtener hilo de conversación de un bloque
POST_add_thread_message.md Añadir mensaje al hilo de conversación
POST_review_block.md Aprobar/rechazar bloque pendiente

Arquitectura

La tabla student_blocks almacena el estado de cada bloque por estudiante:

Block (id=28, name="block1") - Plantilla de contenidos
   └── StudentBlock (id=1, blockId=28, studentId=123, status="pending", grade=7.5)
   └── StudentBlock (id=2, blockId=28, studentId=456, status="open", grade=null)
   └── StudentBlock (id=3, blockId=28, studentId=789, status="closed", grade=8.0)

Flujo General de Estados

┌─────────┐     Profesor cierra      ┌─────────┐     Admin aprueba     ┌─────────┐
│  open   │ ───────────────────────► │ pending │ ────────────────────► │ closed  │
└─────────┘                          └─────────┘                       └─────────┘
     ▲                                    │
     │                                    │
     └────────────────────────────────────┘
              Admin rechaza

Estados de un StudentBlock

Estado Descripción
open Bloque abierto, disponible para el profesor
blocked Bloque bloqueado (no es el primer bloque del estudiante)
pending Cerrado por profesor, pendiente de revisión administrativa
closed Aprobado por administrador, completamente cerrado

Endpoints Relacionados

Método Endpoint Descripción
POST /api/v2/blocks/:blockId/close Cerrar bloque para un estudiante (profesor)
GET /api/v2/blocks/pending-rejected Obtener bloques pendientes/rechazados (admin)
GET /api/v2/blocks/completed Obtener bloques completados por curso escolar
POST /api/v2/blocks/student-block/:studentBlockId/review Aprobar/rechazar bloque (admin)
GET /api/v2/blocks/student-block/:studentBlockId/thread Obtener hilo de conversación
POST /api/v2/blocks/student-block/:studentBlockId/thread Añadir mensaje al hilo
GET /api/v2/blocks/grades/:studentId/:subjectId Obtener notas de bloques

Migración Requerida

Ejecutar la migración para crear la tabla student_blocks:

npm run db:migrate