# 04 — Flujos principales *(Entregable D)*

> Cada flujo indica: **quién** lo ejecuta, **precondiciones**, **pasos**, **validaciones**, **qué se audita** y
> **casos borde**. El orden refleja la secuencia real de operación de un colegio a lo largo del año.

---

## F-01 · Configuración inicial del sistema (una sola vez)

**Rol:** Superadmin · **Cuándo:** puesta en marcha · **Duración estimada:** 2–4 horas con la información a la mano

Al ingresar por primera vez, el sistema detecta que no hay institución configurada y presenta un **asistente de
puesta en marcha** con progreso visible, en lugar de dejar al usuario buscar en el menú.

```
[1] Datos del colegio ──► [2] Año académico ──► [3] Periodos ──► [4] Escala de desempeño
        │                                                                │
        └────────────────────────────────────────────────────────────────┘
                                       │
[5] Grados ──► [6] Áreas ──► [7] Asignaturas ──► [8] Docentes ──► [9] Cursos
                                                                        │
        ┌───────────────────────────────────────────────────────────────┘
        ▼
[10] Oferta de asignaturas por curso ──► [11] Asignación de docentes titulares
        │
        ▼
[12] Estudiantes y acudientes ──► [13] Matrículas ──► ✅ Sistema operativo
```

| Paso | Qué se define | Obligatorio para avanzar |
|---|---|---|
| 1 | Nombre del colegio (único campo obligatorio), logo, resto de datos institucionales | Solo el nombre |
| 2 | Año (ej. 2026), fecha de inicio y fin, estado `EN_CONFIGURACION` | Sí |
| 3 | Número de periodos y sus fechas; todos nacen `CERRADO` | Sí |
| 4 | Bandas de desempeño, nota mínima, máxima y decimales | Sí — valida que las bandas cubran el rango sin huecos |
| 5 | Catálogo de grados con su orden | Sí |
| 6–7 | Áreas y sus asignaturas | Sí |
| 8 | Docentes (genera usuarios y contraseñas iniciales) | No — se puede volver después |
| 9 | Cursos del año (grado + grupo + jornada) | Sí |
| 10 | Qué asignaturas se dictan en cada curso | Sí |
| 11 | Qué docente dicta cada asignatura de cada curso | No — se puede completar después |
| 12–13 | Población escolar | No |

**Cierre del asistente:** el Superadmin activa el año (`EN_CONFIGURACION` → `ACTIVO`), lo marca como
predeterminado y abre el periodo 1. A partir de ahí el sistema está en operación.

**Se audita:** creación de la institución, del año, de los periodos y de la escala. Activación del año.

**Caso borde — abandono a mitad:** el asistente guarda el progreso. Al volver a entrar, retoma en el paso
pendiente. Nunca exige rehacer pasos completados.

---

## F-02 · Crear un año académico

**Rol:** Superadmin (§7 lo excluye explícitamente al Coordinador)

1. **Nuevo año** → se digita el año (2027), fechas de inicio y fin.
2. El sistema valida que **no exista** ya ese año en la institución.
3. El año nace en estado `EN_CONFIGURACION`. **No es visible** para docentes ni familias.
4. Se define el **número de periodos** y las fechas de cada uno. Todos nacen `CERRADO`.
5. El sistema ofrece: **¿Copiar la estructura académica de 2026?** → deriva a [F-03](#f-03--copiar-la-estructura-académica-del-año-anterior).
6. Cuando el Superadmin lo decide: `EN_CONFIGURACION` → `ACTIVO`.

**Validaciones:** año único por institución · fecha fin posterior a fecha inicio · periodos sin solapamiento ·
número de periodos entre 1 y 8 · no se puede activar un año sin al menos un curso.

**Se audita:** creación, cambio de número de periodos, activación, designación como predeterminado.

> **Regla importante [RT]:** pueden coexistir dos años `ACTIVO` (2026 cerrando y 2027 configurándose y arrancando).
> Lo que **no** puede haber es dos años marcados como *predeterminados*. El contexto activo de la sesión resuelve
> la ambigüedad para el usuario.

---

## F-03 · Copiar la estructura académica del año anterior

**Rol:** Superadmin · **Ahorro estimado:** de 1–2 días de trabajo a 10 minutos

Este es uno de los flujos con mayor impacto operativo (§18, §62). **No es una copia ciega**: es un asistente con
vista previa donde todo se puede desmarcar y editar antes de confirmar.

```
Paso 1 — Origen        Paso 2 — Qué copiar        Paso 3 — Revisar        Paso 4 — Confirmar
┌──────────────┐      ┌────────────────────┐     ┌─────────────────┐     ┌───────────────┐
│ Año origen:  │ ───► │ ☑ Áreas            │ ──► │ Vista previa    │ ──► │ Resumen:      │
│   2026       │      │ ☑ Asignaturas      │     │ editable de     │     │  9 áreas      │
│ Año destino: │      │ ☑ Cursos           │     │ cada elemento,  │     │ 41 asignat.   │
│   2027       │      │ ☑ Oferta por curso │     │ con avisos      │     │ 18 cursos     │
└──────────────┘      │ ☐ Docentes titul.  │     │                 │     │ 3 avisos      │
                      │ ☐ Desempeños       │     └─────────────────┘     └───────────────┘
                      └────────────────────┘
```

**Qué hace el sistema en el paso 3 (donde está el valor real):**

| Situación detectada | Qué muestra | Qué propone |
|---|---|---|
| Un docente titular de 2026 está **inactivo** | Aviso ámbar en esa fila | Copiar el curso y la asignatura, dejar la titularidad **vacía** |
| Un área o asignatura está **desactivada** | Aviso | No copiarla (desmarcada por defecto) |
| El curso 11°A existe en 2026 y su grado es **terminal** | Aviso informativo | Copiarlo igual (habrá nuevos 11°) |
| Ya existe un curso con el mismo nombre en 2027 | Aviso rojo | Omitir para evitar duplicados |

**Reglas de la copia:**
- Se copian **definiciones**, nunca datos de estudiantes, matrículas ni notas.
- Los desempeños son opcionales y se copian **sin asignar a periodo**, para que el docente los reutilice.
- La operación es **transaccional**: o se copia todo lo confirmado, o no se copia nada.
- Es **repetible**: se puede ejecutar de nuevo copiando solo lo que faltó, sin duplicar lo existente.

**Se audita:** una entrada con el resumen de lo copiado (contadores por tipo) y el año origen/destino.

---

## F-04 · Registrar un docente

**Rol:** Superadmin o Coordinador

1. Se digita **tipo y número de documento**.
2. El sistema busca si esa **persona** ya existe (puede ser acudiente de un estudiante, por ejemplo).
   - **Existe:** se ofrece *"Esta persona ya está registrada como acudiente. ¿Agregar el rol Docente?"* — se
     reutiliza la persona y el usuario, se agrega el rol.
   - **No existe:** se crean persona, usuario y rol Docente.
3. Datos: nombres, apellidos, celular, correo, profesión, información adicional (§19).
4. El sistema **genera la contraseña inicial** según §11 y la muestra **una sola vez**, con opción de copiar o
   imprimir la ficha de credenciales.
5. Estado inicial: **Activo**.

**Validaciones:** documento único por institución · nombres normalizados a mayúsculas conservando `ÑÁÉÍÓÚÜ` ·
celular colombiano de 10 dígitos iniciando en 3, o marcado como internacional · correo con formato válido (opcional).

**Se audita:** creación del usuario, asignación de rol, generación de contraseña (nunca el valor de la contraseña).

**Caso borde — desactivar un docente con asignaturas asignadas:** el sistema **advierte** listando las
asignaciones afectadas y exige confirmación. Las notas ya registradas permanecen intactas con su autoría.

---

## F-05 · Registrar y matricular un estudiante

**Rol:** Superadmin o Coordinador · **Es el flujo de mayor volumen del sistema**

### Paso 0 — Búsqueda inteligente (§20)

```
        ┌─────────────────────────────────┐
        │  Digitar número de documento    │
        └───────────────┬─────────────────┘
                        ▼
              ┌──── ¿Existe? ────┐
         SÍ   │                  │   NO
              ▼                  ▼
   ┌──────────────────┐   ┌───────────────────────┐
   │ Ficha resumen:   │   │ Wizard de registro    │
   │ nombre, curso    │   │ + matrícula (5 pasos) │
   │ y año anteriores │   └───────────────────────┘
   │                  │
   │ [Editar datos]   │
   │ [Matricular en   │
   │  el año activo]  │
   └──────────────────┘
```

Esta pantalla evita el error más costoso del sistema: **crear un estudiante duplicado** porque nadie verificó si
ya existía. Un duplicado fragmenta el histórico académico y es muy laborioso de corregir después.

### Wizard de matrícula — 5 pasos

| Paso | Contenido | Campos obligatorios |
|---|---|---|
| **1. Identificación** | Tipo y número de documento, nombres, apellidos, fecha de nacimiento, sexo | Todos |
| **2. Datos personales** | Lugar de nacimiento, nacionalidad, dirección, municipio, departamento, estrato, EPS, RH | Ninguno |
| **3. Acudientes** | Uno o varios: documento, nombres, parentesco, celular, correo, principal, responsable financiero | Al menos un acudiente con parentesco y celular |
| **4. Matrícula** | Año (contexto activo), curso, fecha, observaciones | Curso |
| **5. Confirmación** | Resumen completo + autorización de tratamiento de datos + credenciales generadas | Casilla de autorización |

**Comportamiento del wizard:**
- Se puede **navegar atrás** sin perder lo digitado.
- Guarda **borrador** automáticamente: si se cierra el navegador, al volver se ofrece retomar.
- La búsqueda de acudiente en el paso 3 funciona igual que la del estudiante: **si el documento ya existe, se
  reutiliza la persona** y solo se crea la nueva relación con parentesco. Así los hermanos comparten acudiente sin
  duplicarlo (§22).
- Al confirmar, en **una sola transacción** se crean: estudiante, usuario del estudiante, acudientes nuevos,
  usuarios de acudientes, relaciones de acudiencia y matrícula con su código consecutivo.

**El código de matrícula** (`MAT-2026-000123`) se obtiene de una secuencia por año con bloqueo dentro de la misma
transacción — ver [AMB-13](00-hallazgos-y-decisiones.md#amb-13--el-código-de-matrícula-tiene-una-condición-de-carrera).

**Validaciones críticas:**
- No existe otra matrícula **Activa** del mismo estudiante en el mismo año.
- El curso pertenece al año del contexto y está activo.
- Si el curso tiene cupo definido, se advierte al superarlo (advertencia, no bloqueo).
- Autorización de tratamiento de datos marcada ([RG-02](00-hallazgos-y-decisiones.md#rg-02--datos-sensibles-de-menores--ley-1581-de-2012)).

**Se audita:** creación de estudiante, de acudientes, de la matrícula (con código, curso y año), y de los usuarios
generados.

---

## F-06 · Crear un curso y asignar docentes

**Rol:** Superadmin o Coordinador

1. **Nuevo curso:** grado (del catálogo), grupo (A, B, C…), jornada, sede opcional, cupo opcional.
   El nombre visible (`6°A`) se **compone automáticamente** de grado + grupo.
2. **Director de curso:** se selecciona entre docentes activos. Un docente puede dirigir un solo curso por año.
3. **Oferta de asignaturas:** se marcan las asignaturas que se dictan en ese curso. Al copiar del año anterior,
   viene precargada.
4. **Asignación de titulares:** por cada asignatura ofertada, se elige el docente titular.
   La pantalla muestra en tiempo real la **carga acumulada** de cada docente para evitar sobrecargas.

**Validaciones:** grado + grupo + año únicos · el director debe estar activo · una asignatura del curso tiene
exactamente un titular · se advierte (no se bloquea) si un docente supera un umbral configurable de asignaciones.

**Se audita:** creación del curso, cambios de director, altas y bajas de titularidad.

---

## F-07 · Crear y asignar desempeños (logros)

**Rol:** Docente titular (o Coordinador/Superadmin)

1. El docente entra a **Desempeños** → selecciona una de **sus** asignaturas y cursos (la lista solo muestra las suyas).
2. Ve el **banco de desempeños** de esa asignatura y curso, agrupado por periodo.
3. Acciones disponibles:
   - **Crear** un desempeño nuevo: texto del logro, tipo opcional (cognitivo / procedimental / actitudinal), orden.
   - **Reutilizar**: seleccionar desempeños de otro periodo o de un año anterior y asignarlos al periodo actual.
   - **Editar** o **desactivar** (nunca borrar) los propios.
4. Los desempeños del periodo activo son los que aparecerán en el boletín de **todos** los estudiantes de ese curso
   en esa asignatura — ver [DP-07](00-hallazgos-y-decisiones.md#dp-07--los-desempeños-del-boletín-iguales-para-todo-el-curso-o-marcados-por-estudiante).

**Validaciones:** periodo abierto · el docente es titular de esa asignatura en ese curso y año · texto no vacío.

**Se audita:** creación, edición y desactivación de desempeños (con el texto anterior y el nuevo).

---

## F-08 · Registrar notas (digitación rápida)

**Rol:** Docente titular (o Coordinador/Superadmin) · **Es la pantalla más usada del sistema**

### Selección

`Mis asignaturas` → el docente elige **curso + asignatura**; el periodo viene del contexto activo y se puede
cambiar entre los periodos abiertos.

### Pantalla de digitación

```
┌────────────────────────────────────────────────────────────────────────────┐
│  MATEMÁTICAS · 6°A · 2026 · Periodo 2          [Periodo abierto ●]         │
│  Docente titular: MARÍA GONZÁLEZ            32 estudiantes · 28 calificados│
├─────┬──────────────────────────────────┬────────┬──────────┬───────────────┤
│  #  │ Estudiante                       │  Nota  │  Nivel   │  Estado       │
├─────┼──────────────────────────────────┼────────┼──────────┼───────────────┤
│  1  │ ACOSTA RIVERA, JUAN CARLOS       │ [4.2 ] │  Alto    │  ✓ Guardado   │
│  2  │ BERNAL LÓPEZ, ANA MARÍA          │ [3.5 ] │  Básico  │  ✓ Guardado   │
│  3  │ CÁRDENAS MUÑOZ, PEDRO            │ [    ] │    —     │  Pendiente    │
│  4  │ DÍAZ ÑUSTES, LAURA               │ [2.8 ] │  Bajo ⚠  │  ✓ Guardado   │
└─────┴──────────────────────────────────┴────────┴──────────┴───────────────┘
   [Guardar todo]   Progreso: 28/32                       Autoguardado: activo
```

### Reglas de digitación (§29)

| El docente escribe | El sistema interpreta | Motivo |
|---|---|---|
| `35` | `3.5` | Dos dígitos sin punto = décimas |
| `11` | `1.1` | Ídem |
| `45` | `4.5` | Ídem |
| `50` | `5.0` | Ídem |
| `4` | `4.0` | Un dígito = unidad exacta |
| `4.5` | `4.5` | Formato explícito, se respeta |
| `4,5` | `4.5` | La coma decimal se acepta (teclado numérico) |
| `55`, `6`, `-3`, `abc` | **Rechazado en rojo** | Fuera de rango o inválido |

**Comportamiento de la pantalla:**
- `Enter` y `↓` avanzan al siguiente estudiante; `Tab` también. Digitación 100 % con teclado, **sin usar el ratón**.
- La conversión ocurre al salir del campo, con el valor final visible antes de guardar.
- El **nivel de desempeño** se calcula y se muestra al instante, con color.
- **Autoguardado** por estudiante (petición asíncrona) más botón *Guardar todo* como red de seguridad.
- El contador de progreso `28/32` es visible en todo momento.

**Validaciones del servidor (nunca solo del navegador):** rango entre nota mínima y máxima configuradas ·
decimales permitidos · periodo abierto **en el momento de guardar** · año activo · el docente es titular · el
estudiante tiene matrícula activa en ese curso.

**Se audita:** toda creación y modificación de nota, con valor anterior, valor nuevo, estudiante, asignatura,
periodo y usuario (§31, §49).

**Caso borde — el coordinador cierra el periodo mientras el docente digita:** el servidor rechaza el guardado con
un mensaje explícito, **la pantalla conserva lo digitado** y ofrece exportarlo, para que el trabajo no se pierda
mientras se solicita la reapertura ([RG-07](00-hallazgos-y-decisiones.md#rg-07--concurrencia-en-la-digitación-de-notas)).

---

## F-09 · Registrar una recuperación

**Rol:** Docente titular, Coordinador o Superadmin

1. Desde la lista de notas, se filtra por **nivel Bajo** (o se busca al estudiante).
2. Se abre el detalle de la nota: muestra la **nota original**, bloqueada.
3. Se digita la **nota de recuperación** y la fecha; observación opcional.
4. El sistema calcula la **nota definitiva** según la política configurada
   ([DP-04](00-hallazgos-y-decisiones.md#dp-04--regla-de-la-nota-definitiva-después-de-una-recuperación)) y la muestra
   antes de confirmar.
5. Al guardar: la nota original **no se sobrescribe** (§30). Quedan los tres valores y la trazabilidad.

```
  Nota original:      2.5   (no se modifica jamás)
  Recuperación:       3.8   (registrada el 12/06/2026 por MARÍA GONZÁLEZ)
  Nota definitiva:    3.8   (calculada por política: máximo entre ambas)
```

**El boletín y los promedios usan la nota definitiva.** La original queda visible en el detalle y en la auditoría.

**Validaciones:** solo se recupera una nota existente · la recuperación respeta rango y decimales · periodo
abierto o reapertura autorizada · si hay tope configurado, se aplica y se informa al usuario.

**Se audita:** siempre, con las tres notas y el usuario.

---

## F-10 · Cerrar un periodo

**Rol:** Coordinador o Superadmin

1. **Panel de cierre** del periodo: el sistema muestra el estado real antes de permitir cerrar.

```
   CIERRE DEL PERIODO 2 · 2026
   ┌──────────────────────────────────────────────────────────────┐
   │  Notas digitadas          612 / 648      ⚠ 36 pendientes     │
   │  Cursos completos          16 / 18       ⚠ 2 incompletos     │
   │  Desempeños registrados    41 / 41       ✓                   │
   │  Observaciones             18 / 18       ✓                   │
   ├──────────────────────────────────────────────────────────────┤
   │  Pendientes por docente:                                     │
   │   · CARLOS PÉREZ — Sociales 7°B — faltan 21 notas            │
   │   · ANA RUIZ — Inglés 9°A — faltan 15 notas                  │
   └──────────────────────────────────────────────────────────────┘
        [Notificar a docentes]      [Cerrar de todos modos]
```

2. Si hay pendientes, se **advierte** con el detalle nominal. Por defecto el cierre **se permite** con confirmación
   explícita, porque hay casos legítimos (un docente incapacitado). Existe el parámetro
   `bloquear_cierre_con_notas_pendientes` para colegios que prefieran bloquearlo. **[RT]** — no está definido en la especificación.
3. Al confirmar, en una sola transacción: el periodo pasa a `CERRADO`, se **recalcula el consolidado** del periodo
   (promedios, niveles y puestos de todos los cursos), y se registra la auditoría.

**Efecto inmediato:** los docentes pierden la escritura sobre notas, recuperaciones, desempeños y observaciones de
ese periodo (§14, §46). Tareas y comunicados **no** se bloquean
([AMB-05](00-hallazgos-y-decisiones.md#amb-05--el-cierre-de-periodo-bloquea-las-tareas)).

**Se audita:** cierre, con el resumen de completitud y el usuario.

---

## F-11 · Reabrir un periodo

**Rol:** Coordinador o Superadmin (§46)

1. Se solicita la reapertura del periodo cerrado.
2. **Motivo obligatorio** en texto libre — sin motivo no hay reapertura.
3. Opcional [RT]: fecha límite de reapertura, tras la cual el sistema vuelve a cerrarlo automáticamente. Evita el
   escenario real de periodos que quedan abiertos meses "por si acaso".
4. Al confirmar: el periodo vuelve a `ABIERTO`, se marca `fue_reabierto = sí` y se registra en auditoría con
   motivo, usuario y fecha.
5. Los consolidados quedan marcados como **desactualizados** y se recalculan al cerrar de nuevo.

**Se audita:** siempre, y de forma destacada en el panel de auditoría — es una de las operaciones más sensibles del
sistema.

---

## F-12 · Cerrar el año académico

**Rol:** Superadmin únicamente

**Precondiciones verificadas por el sistema:**
- Todos los periodos del año están `CERRADO`.
- El proceso de promoción se ejecutó (o el Superadmin confirma explícitamente que cerrará sin promover).
- No hay matrículas en estado inconsistente.

**Efecto (§47):** el año pasa a `CERRADO`. **Todo el sistema entra en solo lectura para ese año, para todos los
roles, incluido el Superadmin.** Se sigue pudiendo: consultar, generar boletines, generar reportes y consultar el
histórico. No se puede: modificar notas, matrículas, desempeños ni estructura.

**Reversión:** solo Superadmin, con motivo obligatorio y auditoría destacada. Es una operación excepcional.

**Se audita:** cierre del año con el resumen (estudiantes promovidos, no promovidos, retirados, graduados).

---

## F-13 · Promoción de estudiantes al año siguiente

**Rol:** Coordinador o Superadmin · **Segundo flujo de mayor ahorro operativo**

**Precondiciones:** el año origen tiene todos sus periodos cerrados; el año destino existe y tiene cursos creados
(normalmente vía [F-03](#f-03--copiar-la-estructura-académica-del-año-anterior)).

### Pantalla de promoción

```
  PROMOCIÓN 2026 → 2027 · Curso origen: 5°A (32 estudiantes)
  ┌────┬───────────────────────────┬──────────┬──────────┬─────────────┬────────────────┐
  │ ☑  │ Estudiante                │ Prom.año │ Bajos    │ Sugerencia  │ Destino        │
  ├────┼───────────────────────────┼──────────┼──────────┼─────────────┼────────────────┤
  │ ☑  │ ACOSTA RIVERA, JUAN       │   4.12   │    0     │ Promovido   │ [6°A      ▼]   │
  │ ☑  │ BERNAL LÓPEZ, ANA         │   3.85   │    0     │ Promovido   │ [6°A      ▼]   │
  │ ☑  │ CÁRDENAS MUÑOZ, PEDRO     │   2.94   │  ⚠ 3     │ No promov.  │ [5°A 2027 ▼]   │
  │ ☐  │ DÍAZ ÑUSTES, LAURA        │   4.40   │    0     │ Promovido   │ [Retirado ▼]   │
  └────┴───────────────────────────┴──────────┴──────────┴─────────────┴────────────────┘
   Seleccionar: [Todos] [Ninguno] [Solo sugeridos como promovidos]
   Acción masiva sobre seleccionados: [Promover a 6°A ▼]        [Ejecutar promoción]
```

**Cómo se construye la sugerencia:**
- **Curso destino sugerido** = grado siguiente por `orden` + mismo grupo, si ese curso existe en el año destino.
  Esto solo es posible gracias a la separación Grado/Curso — [DP-09](00-hallazgos-y-decisiones.md#dp-09--el-modelo-confunde-grado-con-curso--y-eso-rompe-la-promoción).
- **Estado sugerido** = según la regla configurable, mostrando siempre los insumos (promedio anual, número de
  asignaturas en Bajo) para que la decisión humana esté informada — [DP-06](00-hallazgos-y-decisiones.md#dp-06--criterio-de-promoción--reprobación).
- Si el grado es **terminal** (11°), la sugerencia es **Graduado**.

**Decisiones disponibles por estudiante:** Promovido a un curso concreto · No promovido (repite, con curso destino
en el año siguiente) · Retirado · Trasladado · Graduado.

**Al ejecutar, en una sola transacción:**
1. La matrícula del año origen cambia a su estado final (Promovido / No promovido / Graduado / Retirado).
2. Para los promovidos y repitentes se **crea la matrícula del año destino** con su nuevo código, en estado Activa.
3. Se conservan las asociaciones de acudientes.
4. Se registra la auditoría con el resumen del lote.

**Se audita:** cada cambio de estado individual y un registro de resumen del lote (cuántos, de qué curso a cuál,
quién ejecutó).

**Casos borde:**
- El curso destino no existe → el sistema lo señala y **no permite ejecutar** hasta crearlo o elegir otro.
- Estudiante ya matriculado en el año destino → se omite con aviso, sin duplicar.
- Ejecución parcial → el proceso es repetible: al volver a entrar, solo aparecen los estudiantes sin procesar.

---

## F-14 · Traslado de curso dentro del mismo año

**Rol:** Coordinador o Superadmin (§25)

1. Se ubica al estudiante y se elige **Trasladar**.
2. Se selecciona el curso destino (del mismo año) y se registra el motivo (opcional).
3. El sistema muestra un **análisis de impacto** antes de confirmar:

```
   TRASLADO: 6°A ──► 6°B  ·  JUAN CARLOS ACOSTA
   ┌──────────────────────────────────────────────────────────────┐
   │ ✓ 8 asignaturas coinciden — las notas se conservan            │
   │ ⚠ 6°B dicta FRANCÉS, que 6°A no dicta                        │
   │      → El estudiante quedará sin nota de Periodo 1 en Francés │
   │ ⚠ 6°A dicta ARTES, que 6°B no dicta                          │
   │      → La nota de Periodo 1 en Artes se conserva en histórico │
   │        pero no aparecerá en el boletín de 6°B                 │
   └──────────────────────────────────────────────────────────────┘
```

4. Al confirmar: se actualiza el curso de la matrícula y se registra un **movimiento** con curso origen, curso
   destino, fecha, motivo y usuario. **La matrícula no se duplica ni se anula.**

**Las notas se conservan automáticamente** porque están ancladas a estudiante + año + asignatura + periodo, no al
curso — ver [AMB-01](00-hallazgos-y-decisiones.md#amb-01--qué-pasa-con-las-notas-cuando-un-estudiante-se-traslada-de-curso).

**Efecto en el puesto:** el estudiante entra al ranking de 6°B en el siguiente recálculo del consolidado.

**Se audita:** el movimiento completo.

---

## F-15 · Generar boletines

**Rol:** Superadmin, Coordinador, y Docente en modo consulta

### Boletín individual
Estudiante → Periodo (o *acumulado del año*) → **Generar** → PDF en pantalla con opción de descargar o imprimir.

### Boletines por curso
Curso → Periodo → **Generar todos** → el sistema procesa por lotes con barra de progreso y entrega un **PDF único
paginado** listo para imprimir.

```
   Generando boletines de 6°A (32 estudiantes)
   ████████████████████░░░░░░░░░░  22/32     Tiempo restante: ~14 s
   [Cancelar]
```

**Por qué por lotes:** un proceso sincrónico de 32 boletines supera el tiempo máximo de ejecución de un hosting
compartido y falla a mitad, sin avisar — ver [RG-03](00-hallazgos-y-decisiones.md#rg-03--generación-masiva-de-boletines-tiempo-de-ejecución-y-memoria).

**Precondición:** el consolidado del periodo debe estar calculado. Si está desactualizado (por ejemplo, tras una
reapertura), el sistema lo recalcula antes de generar y lo informa.

**Se audita:** generación masiva (curso, periodo, cantidad, usuario). La generación individual se registra en el
log de actividad, no en la auditoría formal, para no saturarla.

---

## F-16 · Crear una tarea

**Rol:** Docente titular

1. **Nueva tarea** → seleccionar curso + asignatura (solo aparecen las suyas).
2. Título, descripción, **fecha de entrega**, prioridad opcional, adjunto opcional, enlace opcional.
3. La **fecha de asignación es la del sistema y no es editable** (§36).
4. Al publicar, la tarea es visible de inmediato para los estudiantes del curso y sus acudientes.

**El estado se calcula automáticamente**, no se digita:

| Estado | Condición |
|---|---|
| **Próxima** | Faltan más de 3 días para la entrega |
| **Próxima a vencer** | Faltan 3 días o menos |
| **Vencida** | La fecha de entrega ya pasó |

**Validaciones:** fecha de entrega no anterior a hoy · adjunto con extensión permitida y tamaño dentro del límite ·
el docente es titular de esa asignatura en ese curso.

**Se audita:** creación, edición y desactivación.

---

## F-17 · Publicar un comunicado

**Rol:** según alcance (§37)

1. **Nuevo comunicado** → título, contenido, fecha de vencimiento opcional, adjunto opcional.
2. **Destinatarios** — el selector solo ofrece lo que el emisor tiene permitido:

| Emisor | Alcances disponibles |
|---|---|
| Superadmin / Coordinador | Toda la institución · uno o varios grados · uno o varios cursos · un rol completo |
| Director de curso | Su curso |
| Docente titular | Los cursos donde tiene asignación |

3. Al publicar, aparece en el dashboard y en la sección Comunicados de todos los destinatarios.
4. Vencido el comunicado, se archiva automáticamente (deja de destacarse, sigue consultable).

**Se audita:** publicación con el alcance y el número estimado de destinatarios.

---

## Calendario de operación anual

Cómo se encadenan los flujos a lo largo de un año escolar:

```
  NOV-DIC año anterior          ENE                    FEB - NOV                    NOV - DIC
 ┌─────────────────────┐  ┌──────────────┐  ┌──────────────────────────┐  ┌────────────────────┐
 │ F-02 Crear año      │  │ F-05 Matríc. │  │ Por cada periodo:        │  │ F-10 Cerrar últ.   │
 │ F-03 Copiar estruc. │─►│      masiva  │─►│  F-07 Desempeños         │─►│      periodo       │
 │ F-06 Ajustar cursos │  │ F-06 Asignar │  │  F-08 Notas              │  │ F-15 Boletín final │
 │                     │  │      docentes│  │  F-16 Tareas             │  │ F-13 Promoción     │
 │                     │  │              │  │  F-09 Recuperaciones     │  │ F-12 Cerrar año    │
 │                     │  │              │  │  F-10 Cerrar periodo     │  │                    │
 │                     │  │              │  │  F-15 Boletines          │  │                    │
 └─────────────────────┘  └──────────────┘  └──────────────────────────┘  └────────────────────┘
                                                        ▲                            │
                                             F-14 Traslados, F-17 Comunicados        │
                                                                                     ▼
                                                                          Inicio del ciclo siguiente
```
