# SGETECBA — Correcciones 11/06/2026 (sesión noche)

**Branch:** `features/MirkoALS`

---

## Bugs corregidos en esta sesión

### 1. Acordeones Matriculaciones — materias desaparecían al abrir

**Síntoma:** En el paso 2 de nueva matriculación, al hacer clic en un semestre/nivel para expandirlo, las materias no se veían. Aparecía solo una línea fina o nada.

**Causa:** El contenedor de la lista de acordeones tenía `maxHeight: "40vh"` con `overflowY: "auto"`. Al abrir un acordeón, las materias se insertaban dentro de ese div pero quedaban fuera del área visible sin ningún indicador de scroll. El usuario no tenía forma de saber que debía scrollear dentro de ese div pequeño.

**Fix:** `frontend/src/pages/Matriculaciones.tsx`
- Eliminado `maxHeight: "40vh"` y `overflowY: "auto"` del contenedor interior
- El modal externo ya tiene `maxHeight: "92vh"` y `overflowY: "auto"`, por lo que el scroll ocurre a nivel del modal completo — más intuitivo

---

### 2. Acordeones Matriculaciones — layout no responsivo

**Síntoma:** En pantallas pequeñas, el texto del nivel (ej. "3er Semestre") y los nombres de materias desbordaban horizontalmente el acordeón.

**Fix:** `frontend/src/pages/Matriculaciones.tsx`
- Header de nivel: `min-w-0 flex-1` en el contenedor + `truncate` en el texto del nivel + `shrink-0` en contador y chevron
- Items de materia: `min-w-0 break-words` en el span del nombre + `shrink-0` en el checkbox + padding `px-4 sm:px-6` en lugar del `px-6` fijo

---

### 3. Código automático de estudiante al crear

**Contexto:** La tabla `estudiantes` ya tenía la columna `codigo_estudiante` pero nunca se generaba al crear.

**Implementado:**
- Al crear un estudiante, el admin selecciona **Carrera** y **Fecha de inscripción**
- El backend genera automáticamente el código con formato `{CODIGO_CARRERA}-{AÑO}-{NNN}` (ej. `INF-2026-001`, `ADM-2026-003`)
- La secuencia es por carrera + año: si ya hay 2 estudiantes de INF en 2026, el siguiente es `INF-2026-003`
- Si no se selecciona carrera, el estudiante queda sin código (puede asignarse manualmente)
- El código aparece como primera columna de la tabla de estudiantes (color naranja, fuente monoespaciada)

**Archivos:**

| Archivo | Cambio |
|---------|--------|
| `backend/app/schemas/estudiantes.py` | `EstudianteCreate` acepta `carrera_id` y `fecha_inscripcion` (opcionales); `EstudianteRead` devuelve `codigo_estudiante` |
| `backend/app/crud/estudiantes_crud.py` | Función `_generar_codigo_estudiante` que cuenta patrones `{CODIGO}-{AÑO}-%` y asigna el siguiente número; `create_estudiante` llama a la función post-INSERT |
| `frontend/src/types/api.ts` | Campo `codigo_estudiante` en interfaz `Estudiante` |
| `frontend/src/api/client.ts` | `createEstudiante` acepta `carrera_id` y `fecha_inscripcion` |
| `frontend/src/pages/Estudiantes.tsx` | Selector de carrera + campo fecha en formulario de creación; columna Código en tabla |

---

## Archivos tocados esta sesión

```
backend/
  app/crud/estudiantes_crud.py    Generación de código automático
  app/schemas/estudiantes.py      Campos carrera_id, fecha_inscripcion, codigo_estudiante

frontend/src/
  api/client.ts                   createEstudiante con carrera_id y fecha_inscripcion
  types/api.ts                    codigo_estudiante en Estudiante
  pages/Estudiantes.tsx           Formulario + tabla con código
  pages/Matriculaciones.tsx       Fix acordeones (scroll + responsividad)
```

---

*SGETECBA — Documento interno de desarrollo — 11/06/2026 — Mirko Lazarte*
