# Tabla `periodos_clase` — Franjas horarias estándar

**Fecha de creación:** 2026-06-18  
**Creada por:** Santi (fuera del dump principal, sesión directa en BD)

---

## Por qué existe

TECBA maneja franjas horarias fijas por turno y modalidad. Antes de esta
tabla, los horarios de clase se definían libremente en `horario_clases`
(hora_inicio / hora_fin arbitrarias), lo que generaba inconsistencias entre
docentes y dificultaba la validación de choques.

Esta tabla centraliza las franjas válidas para que:
- El formulario de inscripción y asignación de horarios solo muestre opciones reales.
- El trigger `fn_verificar_choque_horario_estudiante` pueda trabajar con
  períodos estándar en vez de rangos libres.
- Marketing (MKT) y Asistente Académico vean exactamente los mismos períodos
  al registrar una inscripción.

---

## Estructura lógica

| Columna       | Descripción                                          |
|---------------|------------------------------------------------------|
| `codigo`      | Identificador corto (P1, P2 … P6, PM1, PM2)         |
| `turno_id`    | FK a `turnos` (MANANA=1, TARDE=2, NOCHE=3)           |
| `es_modular`  | `true` = aplica solo a carreras MODULAR              |
| `hora_inicio` | Inicio de la franja (TIME)                           |
| `hora_fin`    | Fin de la franja (TIME)                              |
| `activo`      | Permite desactivar una franja sin borrarla           |

---

## Datos actuales

### Anuales y Semestrales

| Código | Turno  | Inicio | Fin   |
|--------|--------|--------|-------|
| P1     | Mañana | 08:30  | 10:00 |
| P2     | Mañana | 10:15  | 11:45 |
| P3     | Tarde  | 15:30  | 17:00 |
| P4     | Tarde  | 17:15  | 18:45 |
| P5     | Noche  | 19:00  | 20:30 |
| P6     | Noche  | 20:30  | 22:00 |

### Modular

| Código | Turno  | Inicio | Fin   |
|--------|--------|--------|-------|
| PM1    | Mañana | 08:30  | 12:30 |
| PM2    | Tarde  | 14:30  | 18:30 |

---

## API expuesta

| Método  | Endpoint                        | Acceso                          |
|---------|---------------------------------|---------------------------------|
| GET     | `/api/v1/periodos-clase`        | ADMIN, ASISTENTE, DIRECCION, MKT|
| GET     | `/api/v1/periodos-clase/todos`  | ADMIN, ASISTENTE, DIRECCION, MKT|
| PATCH   | `/api/v1/periodos-clase/{id}`   | ADMIN únicamente                |

Parámetros de filtro en GET: `turno_id`, `es_modular`.

---

## Nota sobre editabilidad

Los horarios son editables vía `PATCH` solo por ADMIN. El 90% de los
catálogos del sistema siguen la misma política: lectura amplia, escritura
restringida a ADMIN o ASISTENTE_ACADEMICO.
