# 06 — Reglas de negocio *(Entregable F)*

> Cada regla lleva un identificador estable para poder referenciarla en el desarrollo, en las pruebas y en los
> reportes de defectos. Las reglas marcadas **[RC]** vienen de la especificación; las **[RT]** son propuestas del
> equipo que requieren aprobación.

---

## RN-GEN · Reglas generales del sistema

| ID | Regla | Origen |
|---|---|---|
| RN-GEN-01 | **Ninguna información con valor académico o histórico se elimina físicamente.** Toda "eliminación" es un cambio de estado o de bandera de actividad. | [RC] §48 |
| RN-GEN-02 | Toda operación de escritura valida los permisos **en el servidor**, sobre el recurso concreto. La interfaz nunca es la fuente de autoridad. | [RC] §50 |
| RN-GEN-03 | Toda operación se ejecuta dentro del **contexto activo** (institución + año + periodo) de la sesión. Ninguna consulta de negocio se ejecuta sin ese filtro. | [RT] |
| RN-GEN-04 | Las operaciones que afectan varias entidades son **transaccionales**: se completan por entero o no se aplican. | [RT] |
| RN-GEN-05 | Todos los cálculos de notas y promedios usan **aritmética decimal exacta**, nunca coma flotante. | [RT] |
| RN-GEN-06 | Fechas y horas se registran en zona `America/Bogota`. | [RT] |
| RN-GEN-07 | Los nombres y apellidos se almacenan en mayúsculas, conservando `Ñ`, tildes y diéresis. La normalización usa funciones conscientes de UTF-8. | [RC] §52 |

---

## RN-ANIO · Año académico

| ID | Regla | Origen |
|---|---|---|
| RN-ANIO-01 | Solo el **Superadmin** crea, edita, activa, desactiva o cierra años. El Coordinador no tiene acceso. | [RC] §7 |
| RN-ANIO-02 | El año es **único por institución**. | [RT] |
| RN-ANIO-03 | Estados válidos y transiciones: `EN_CONFIGURACION` → `ACTIVO` → `CERRADO`. No hay otras transiciones. | [RT] — resuelve [AMB-12](00-hallazgos-y-decisiones.md#amb-12--estado-del-año-inactivo-vs-cerrado) |
| RN-ANIO-04 | Un año en `EN_CONFIGURACION` **no es visible** para docentes, estudiantes ni acudientes. | [RT] |
| RN-ANIO-05 | Pueden coexistir varios años `ACTIVO`, pero **solo uno predeterminado** por institución. | [RT] |
| RN-ANIO-06 | Para pasar a `ACTIVO` el año debe tener al menos un periodo y un curso. | [RT] |
| RN-ANIO-07 | Para pasar a `CERRADO`, **todos** sus periodos deben estar cerrados. | [RT] |
| RN-ANIO-08 | Con el año `CERRADO`, todo el sistema entra en **solo lectura** para ese año, para todos los roles sin excepción. Se permite consultar, generar boletines y generar reportes. | [RC] §47 |
| RN-ANIO-09 | La reapertura de un año cerrado es exclusiva del Superadmin, exige motivo y se audita de forma destacada. | [RT] |
| RN-ANIO-10 | El número de periodos solo puede modificarse mientras el año está en `EN_CONFIGURACION` **y** no existe ninguna nota registrada. | [RT] |

---

## RN-PER · Periodos

| ID | Regla | Origen |
|---|---|---|
| RN-PER-01 | El número de periodos es parametrizable (rango propuesto: 1 a 8). Solo Superadmin. | [RC] §14 |
| RN-PER-02 | Estados: `ABIERTO` / `CERRADO`. Todos nacen `CERRADO`. | [RT] |
| RN-PER-03 | Puede haber **varios periodos abiertos a la vez** (caso real: recuperaciones del periodo 1 durante el periodo 2). | [RT] |
| RN-PER-04 | Solo un periodo es **predeterminado** por año. | [RC] §14 |
| RN-PER-05 | Con el periodo `CERRADO`, el **docente** no puede crear ni modificar notas, recuperaciones, desempeños ni observaciones de ese periodo. | [RC] §14, §46 |
| RN-PER-06 | Coordinador y Superadmin **sí** pueden modificar notas de un periodo cerrado, y cada modificación se audita. | [RC] §31, §46 |
| RN-PER-07 | El cierre de periodo **no** bloquea tareas ni comunicados. | [RT] — resuelve [AMB-05](00-hallazgos-y-decisiones.md#amb-05--el-cierre-de-periodo-bloquea-las-tareas) |
| RN-PER-08 | Al cerrar un periodo se **recalcula el consolidado** de todos los cursos del año. | [RT] |
| RN-PER-09 | La **reapertura** exige motivo obligatorio, la ejecuta Coordinador o Superadmin, y queda auditada. | [RC] §46 + [RT] (el motivo) |
| RN-PER-10 | El sistema **advierte** las notas pendientes antes de cerrar, pero permite cerrar con confirmación explícita, salvo que el parámetro `bloquear_cierre_con_notas_pendientes` esté activo. | [RT] |
| RN-PER-11 | El estado del periodo se **revalida en el servidor en el instante del guardado**, no en el momento en que se cargó la pantalla. | [RT] — [RG-07](00-hallazgos-y-decisiones.md#rg-07--concurrencia-en-la-digitación-de-notas) |

---

## RN-EST · Estructura académica

| ID | Regla | Origen |
|---|---|---|
| RN-EST-01 | Áreas y asignaturas se activan y desactivan; **nunca se eliminan**. | [RC] §15, §16 |
| RN-EST-02 | Toda asignatura pertenece a **exactamente un área**. | [RC] §16 |
| RN-EST-03 | Un curso pertenece a **exactamente un año académico**. | [RC] §17 |
| RN-EST-04 | Un curso es la instancia de un **grado** en un año, con grupo y jornada. La combinación (año, grado, grupo, jornada) es única. | [RT] — [DP-09](00-hallazgos-y-decisiones.md#dp-09--el-modelo-confunde-grado-con-curso--y-eso-rompe-la-promoción) |
| RN-EST-05 | Una asignatura se oferta **por curso**: dos cursos del mismo grado pueden tener ofertas distintas. | [RT] |
| RN-EST-06 | Cada asignatura de un curso tiene **un único docente titular activo** a la vez. | [RC] §16 |
| RN-EST-07 | Un docente puede ser titular de **varias asignaturas en varios cursos**. | [RC] §19 |
| RN-EST-08 | Un curso tiene **un director** (opcional). Un docente dirige **como máximo un curso** por año. | [RT] |
| RN-EST-09 | Ser director de curso **no impide** ser docente titular de asignaturas en ese curso o en otros. | [RC] §8 |
| RN-EST-10 | Desactivar un área o asignatura **no afecta** las notas ni los boletines históricos ya generados. | [RT] |
| RN-EST-11 | No se puede desactivar un curso con matrículas activas; el sistema lo advierte y exige resolverlas primero. | [RT] |

---

## RN-COPIA · Copia de estructura académica

| ID | Regla | Origen |
|---|---|---|
| RN-COPIA-01 | Al crear un año, el sistema ofrece copiar la estructura del año anterior. | [RC] §18 |
| RN-COPIA-02 | Se copian **definiciones** (cursos, áreas, asignaturas, oferta por curso y, si se marca, titularidades y desempeños). **Nunca** estudiantes, matrículas ni notas. | [RT] |
| RN-COPIA-03 | Todo elemento se puede **desmarcar y editar** antes de confirmar. La copia jamás es automática ni silenciosa. | [RC] §18 |
| RN-COPIA-04 | Si el docente titular del año origen está inactivo, la asignatura se copia **sin titular** y se avisa. | [RT] |
| RN-COPIA-05 | La copia es **repetible** sin generar duplicados: los elementos ya existentes en el destino se omiten con aviso. | [RT] |
| RN-COPIA-06 | La operación completa es transaccional. | [RT] |

---

## RN-MAT · Matrícula

| ID | Regla | Origen |
|---|---|---|
| RN-MAT-01 | Antes de crear un estudiante, el sistema **verifica por documento** si ya existe. | [RC] §20 |
| RN-MAT-02 | Un estudiante tiene **como máximo una matrícula `ACTIVA`** por año académico. | [RT] |
| RN-MAT-03 | Toda matrícula tiene un **código único** con formato `MAT-{año}-{consecutivo de 6 dígitos}`. | [RC] §23 |
| RN-MAT-04 | El consecutivo se obtiene bajo **bloqueo dentro de la transacción**, nunca por conteo previo. | [RT] — [AMB-13](00-hallazgos-y-decisiones.md#amb-13--el-código-de-matrícula-tiene-una-condición-de-carrera) |
| RN-MAT-05 | Estados válidos: `ACTIVA`, `RETIRADO`, `TRASLADADO`, `PROMOVIDO`, `NO_PROMOVIDO`, `GRADUADO`, `ANULADA`. | [RC] §24 |
| RN-MAT-06 | Una matrícula **nunca se elimina físicamente**. | [RC] §24, §48 |
| RN-MAT-07 | Toda matrícula requiere **al menos un acudiente** asociado. | [RT] |
| RN-MAT-08 | Solo se matricula en cursos del **año activo** y en estado activo. | [RT] |
| RN-MAT-09 | Superar el cupo del curso genera **advertencia**, no bloqueo. | [RT] |
| RN-MAT-10 | Al matricular se exige la **autorización de tratamiento de datos**, con fecha y usuario que la registró. | [RT] — [RG-02](00-hallazgos-y-decisiones.md#rg-02--datos-sensibles-de-menores--ley-1581-de-2012) |
| RN-MAT-11 | Todo cambio de estado registra fecha, motivo y usuario. | [RC] §23 |

## RN-TRA · Traslados

| ID | Regla | Origen |
|---|---|---|
| RN-TRA-01 | Un estudiante puede trasladarse entre cursos **del mismo año**. | [RC] §25 |
| RN-TRA-02 | El traslado **actualiza** el curso de la matrícula y registra un movimiento con curso origen, destino, fecha, motivo y usuario. No duplica ni anula la matrícula. | [RC] §25 |
| RN-TRA-03 | Las notas **se conservan automáticamente**, por estar ancladas a estudiante + año + asignatura + periodo. Si el curso destino oferta asignaturas que el origen no tenía, esas quedan **pendientes** y se reportan. Si el origen tenía asignaturas que el destino no oferta, sus notas se conservan en el histórico pero **no aparecen en el boletín** del curso destino. | [RT] — [AMB-01](00-hallazgos-y-decisiones.md#amb-01--qué-pasa-con-las-notas-cuando-un-estudiante-se-traslada-de-curso) |
| RN-TRA-04 | Antes de confirmar, el sistema muestra el **análisis de impacto** de asignaturas coincidentes y divergentes. | [RT] |
| RN-TRA-05 | El estudiante entra al ranking del curso destino en el siguiente recálculo del consolidado. | [RT] |

## RN-PRO · Promoción

| ID | Regla | Origen |
|---|---|---|
| RN-PRO-01 | La promoción se ejecuta desde el año origen hacia un año destino que **ya debe existir con sus cursos creados**. | [RT] |
| RN-PRO-02 | El **curso destino sugerido** = grado siguiente por `orden` + mismo grupo, si existe en el año destino. | [RT] |
| RN-PRO-03 | Si el grado es **terminal**, la sugerencia es `GRADUADO`. | [RT] |
| RN-PRO-04 | El **estado sugerido** se calcula con la regla configurable y se muestra siempre junto a sus insumos (promedio anual, asignaturas en Bajo). **La decisión final es humana.** | [RT] — [DP-06](00-hallazgos-y-decisiones.md#dp-06--criterio-de-promoción--reprobación) |
| RN-PRO-05 | Al ejecutar: la matrícula origen pasa a su estado final y, para promovidos y repitentes, **se crea la matrícula del año destino** con nuevo código, en estado `ACTIVA`. | [RC] §26 |
| RN-PRO-06 | Las asociaciones de acudientes se **conservan** en la nueva matrícula. | [RT] |
| RN-PRO-07 | El proceso es **repetible**: los estudiantes ya procesados no vuelven a aparecer. | [RT] |
| RN-PRO-08 | Se soporta promoción masiva y decisión individual en la misma pantalla. | [RC] §26 |
| RN-PRO-09 | Cada decisión individual y el lote completo quedan auditados. | [RC] §49 |

---

## RN-NOTA · Notas

| ID | Regla | Origen |
|---|---|---|
| RN-NOTA-01 | Las notas son numéricas entre la **nota mínima y la máxima configuradas** (por defecto 0.0 y 5.0). | [RC] §28, §35 |
| RN-NOTA-02 | Cada estudiante tiene **una nota por asignatura y periodo**. | [RC] §28 |
| RN-NOTA-03 | Se muestran con el número de decimales configurado (por defecto 1) y se **almacenan con precisión mayor** para el cálculo. | [RC] §28, §35 + [RT] |
| RN-NOTA-04 | Reglas de digitación rápida: dos dígitos sin punto = décimas (`35` → `3.5`); un dígito = unidad (`4` → `4.0`); se acepta punto o coma decimal. | [RC] §29 |
| RN-NOTA-05 | Se **rechaza**: letras, símbolos inválidos, valores fuera de rango, negativos y más decimales de los permitidos. | [RC] §29 |
| RN-NOTA-06 | La validación ocurre en el navegador (retroalimentación inmediata) **y** en el servidor (autoridad). | [RC] §29, §50 |
| RN-NOTA-07 | El **docente** solo registra y modifica notas de las asignaturas donde es titular, en periodos abiertos. | [RC] §8, §31 |
| RN-NOTA-08 | **Coordinador y Superadmin** pueden modificar cualquier nota, incluso en periodos cerrados. | [RC] §31 |
| RN-NOTA-09 | Toda creación y modificación de nota se **audita** con valor anterior y nuevo. | [RC] §31, §49 |
| RN-NOTA-10 | Una asignatura **sin calificar no se incluye** en ningún promedio. No perjudica al estudiante. | [RC] §32 |
| RN-NOTA-11 | Solo se registran notas de estudiantes con **matrícula activa** en ese año. | [RT] |

## RN-REC · Recuperaciones

| ID | Regla | Origen |
|---|---|---|
| RN-REC-01 | Se registran nota original, nota de recuperación y **nota definitiva**, más fecha y usuario. | [RC] §30 |
| RN-REC-02 | La **nota original nunca se sobrescribe**. | [RC] §30 |
| RN-REC-03 | La nota definitiva se calcula según la política configurada: `REEMPLAZO`, `MAXIMO` (por defecto) o `MAXIMO_CON_TOPE`. | [RT] — [DP-04](00-hallazgos-y-decisiones.md#dp-04--regla-de-la-nota-definitiva-después-de-una-recuperación) |
| RN-REC-04 | Solo se recupera una nota **ya existente**. | [RT] |
| RN-REC-05 | Promedios, niveles, puestos y boletines usan siempre la **nota definitiva**. | [RT] |
| RN-REC-06 | Se conservan **todos** los intentos de recuperación, no solo el último. | [RT] |
| RN-REC-07 | Toda recuperación se audita. | [RC] §49 |

---

## RN-CALC · Cálculo académico

> Estas son las reglas que deben producir **exactamente el mismo resultado** en pantalla, en el boletín y en los
> reportes. Cualquier discrepancia entre las tres es un defecto grave.

| ID | Regla | Origen |
|---|---|---|
| RN-CALC-01 | **Todas las asignaturas pesan igual.** No hay ponderación por intensidad horaria en la v1. | [RC] §32, §33 |
| RN-CALC-02 | **Promedio acumulado de una asignatura** = media aritmética de sus notas definitivas en los periodos **calificados** hasta ese momento. | [RC] §32 |
| RN-CALC-03 | **Promedio general del periodo** = media aritmética de las notas definitivas de las asignaturas calificadas **en ese periodo**. | [RC] §33 |
| RN-CALC-04 | **Promedio general acumulado** = media aritmética de los **promedios acumulados por asignatura** (no de todas las notas sueltas). | [RT] — [AMB-03](00-hallazgos-y-decisiones.md#amb-03--promedio-general-acumulado-tiene-dos-lecturas-distintas) |
| RN-CALC-05 | Los promedios se calculan y almacenan con **4 decimales**; se muestran con los decimales configurados. | [RT] |
| RN-CALC-06 | El **redondeo para mostrar** es al alza en el medio (2.45 → 2.5 con un decimal). No se aplica al valor almacenado. | [RT] |
| RN-CALC-07 | El **nivel de desempeño** se determina buscando la banda cuyo intervalo `[min, max)` contiene el valor **completo**, no el redondeado. | [RT] — [AMB-02](00-hallazgos-y-decisiones.md#amb-02--la-escala-de-desempeño-tiene-huecos-numéricos) |
| RN-CALC-08 | El **puesto del periodo** ordena a los estudiantes del curso por promedio del periodo, con precisión de 4 decimales, descendente. | [RC] §34 |
| RN-CALC-09 | El **puesto acumulado** hace lo mismo con el promedio acumulado. | [RC] §34 |
| RN-CALC-10 | **Empates:** ranking competitivo — igual promedio, igual puesto; el siguiente puesto salta tantas posiciones como empatados haya (1, 2, 2, 4). | [RT] — [AMB-04](00-hallazgos-y-decisiones.md#amb-04--reglas-de-empate-en-el-puesto) |
| RN-CALC-11 | El puesto se calcula **dentro del curso** y solo incluye estudiantes con matrícula `ACTIVA` y al menos una asignatura calificada. | [RT] |
| RN-CALC-12 | Los consolidados se **recalculan** al cambiar cualquier nota del curso, al cerrar el periodo, o bajo demanda; nunca en cada lectura. | [RT] — [RG-04](00-hallazgos-y-decisiones.md#rg-04--cálculo-de-puestos-y-promedios-en-cada-carga-de-pantalla) |
| RN-CALC-13 | Un estudiante **sin ninguna nota** no aparece en el ranking y su promedio se muestra como "sin calificar", no como 0.0. | [RT] |

### Ejemplo trabajado

Estudiante con 3 asignaturas y 3 periodos calificados de 4:

| Asignatura | P1 | P2 | P3 | P4 | Promedio acumulado |
|---|---:|---:|---:|---:|---:|
| Matemáticas | 3.5 | 4.0 | 4.2 | — | (3.5+4.0+4.2)/3 = **3.9000** |
| Español | 4.0 | 4.5 | — | — | (4.0+4.5)/2 = **4.2500** |
| Ciencias | 3.0 | 3.2 | 3.8 | — | (3.0+3.2+3.8)/3 = **3.3333** |

- **Promedio general del periodo 3** = (4.2 + 3.8) / 2 = **4.0000** — Español no se incluye porque no tiene nota
  en P3 (RN-NOTA-10).
- **Promedio general acumulado** = (3.9000 + 4.2500 + 3.3333) / 3 = **3.8278** (RN-CALC-04).
- **Nivel de desempeño** = 3.8278 cae en `[3.00, 4.00)` → **Básico** (RN-CALC-07).
- Se muestra **3.8**; se ordena el puesto por **3.8278** (RN-CALC-05, RN-CALC-08).

---

## RN-DES · Desempeños

| ID | Regla | Origen |
|---|---|---|
| RN-DES-01 | Los desempeños pertenecen a **(asignatura, curso, periodo)**, no a estudiantes individuales. | [RC] §27 |
| RN-DES-02 | El **docente titular** crea, edita, consulta y asigna los desempeños de sus asignaturas. | [RC] §27 |
| RN-DES-03 | Se pueden **reutilizar** desempeños de otros periodos o años, asignándolos al periodo actual. | [RC] §27 |
| RN-DES-04 | Se desactivan, nunca se eliminan. | [RC] §48 |
| RN-DES-05 | No se crean ni modifican en periodos cerrados (salvo Coordinador/Superadmin). | [RC] §14 |
| RN-DES-06 | Los desempeños del periodo aparecen **idénticos** en el boletín de todos los estudiantes de ese curso y asignatura. | [RC] §27 — 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) |

## RN-OBS · Observaciones del boletín

| ID | Regla | Origen |
|---|---|---|
| RN-OBS-01 | Se asocian a estudiante + año + periodo. | [RC] §45 |
| RN-OBS-02 | La **observación general** la escribe el director de curso; la **observación por asignatura**, el docente titular. Ambas opcionales. | [RT] — [AMB-06](00-hallazgos-y-decisiones.md#amb-06--quién-escribe-la-observación-del-boletín) |
| RN-OBS-03 | No se registran ni modifican en periodos cerrados (salvo Coordinador/Superadmin). | [RC] §14, §46 |
| RN-OBS-04 | El boletín imprime la observación general siempre que exista, y las de asignatura solo si existen. | [RT] |

---

## RN-TAR · Tareas

| ID | Regla | Origen |
|---|---|---|
| RN-TAR-01 | La tarea pertenece a **(asignatura, curso)** y la crea el docente titular. | [RC] §36 |
| RN-TAR-02 | La **fecha de asignación es la del sistema y no es editable**. | [RC] §36 |
| RN-TAR-03 | El estado (`PROXIMA`, `PROXIMA_A_VENCER`, `VENCIDA`) se **calcula** a partir de la fecha de entrega; no se digita. | [RC] §36 |
| RN-TAR-04 | Umbral por defecto de "próxima a vencer": 3 días. Configurable. | [RT] |
| RN-TAR-05 | La fecha de entrega no puede ser anterior a la de asignación. | [RT] |
| RN-TAR-06 | Estudiantes y acudientes **solo consultan**. No hay entrega de archivos en la v1. | [RC] §36 |
| RN-TAR-07 | "Eliminar" una tarea es desactivarla. | [RC] §48 |
| RN-TAR-08 | Los adjuntos respetan la lista blanca de extensiones, el límite de tamaño y la validación de tipo. | [RC] §50 |

## RN-COM · Comunicados

| ID | Regla | Origen |
|---|---|---|
| RN-COM-01 | La fecha de publicación es la del sistema. | [RC] §37 |
| RN-COM-02 | Alcances disponibles según emisor: Coordinador/Superadmin → institución, grados, cursos o roles; director de curso → su curso; docente → sus cursos. | [RC] §37 |
| RN-COM-03 | Un comunicado admite **varios destinatarios simultáneos**. | [RC] §37 |
| RN-COM-04 | Al vencer, se archiva automáticamente: deja de destacarse pero sigue consultable. | [RT] |
| RN-COM-05 | Estudiantes y acudientes solo consultan. | [RC] §37 |
| RN-COM-06 | Se desactivan, nunca se eliminan. | [RC] §48 |

---

## RN-USU · Usuarios y contraseñas

| ID | Regla | Origen |
|---|---|---|
| RN-USU-01 | El nombre de usuario es el **número de documento**. | [RC] §10, §19, §22 |
| RN-USU-02 | El usuario **no puede cambiar su propio nombre de usuario**. El Superadmin puede corregirlo, con motivo y auditoría. | [RC] §10 + [RT] ([AMB-08](00-hallazgos-y-decisiones.md#amb-08--el-documento-es-el-usuario-pero-los-documentos-cambian)) |
| RN-USU-03 | Contraseña inicial: primer nombre capitalizado + `@` + N dígitos aleatorios (N = 4 por defecto). | [RC] §11 |
| RN-USU-04 | Las contraseñas se almacenan con **hash moderno con sal**. Nunca en texto plano, nunca reversibles. | [RC] §11, §50 |
| RN-USU-05 | La contraseña generada se muestra **una sola vez**; después no es recuperable, solo restablecible. | [RT] |
| RN-USU-06 | Estudiantes y acudientes **no cambian su contraseña** (parámetro `permitir_cambio_password_familias`, desactivado por defecto). | [RC] §11 |
| RN-USU-07 | Superadmin y Coordinador restablecen contraseñas, **nunca de un rol de nivel igual o superior al propio**. | [RC] §11 + [RT] ([AMB-10](00-hallazgos-y-decisiones.md#amb-10--el-coordinador-puede-restablecer-contraseñas--de-quién)) |
| RN-USU-08 | Tras **5 intentos fallidos**, la cuenta se bloquea 15 minutos. Contador por usuario y por IP. | [RT] — [DP-08](00-hallazgos-y-decisiones.md#dp-08--la-política-de-contraseñas-tiene-un-riesgo-de-seguridad-real) |
| RN-USU-09 | Una **persona** puede tener un solo usuario y varios roles. | [RT] — [AMB-09](00-hallazgos-y-decisiones.md#amb-09--una-misma-persona-con-varios-roles) |
| RN-USU-10 | Desactivar un docente, estudiante o acudiente desactiva su usuario, pero **conserva** todo su histórico. | [RT] |
| RN-USU-11 | Restablecimientos, bloqueos y cambios de rol se auditan. Nunca se registra el valor de la contraseña. | [RC] §49 |

---

## RN-VAL · Validaciones de datos

| ID | Campo | Regla | Origen |
|---|---|---|---|
| RN-VAL-01 | Nombres y apellidos | Solo letras, espacios, apóstrofo y guion. Se aceptan `ÑÁÉÍÓÚÜ`. Se convierten a mayúsculas. Mínimo 2 caracteres. | [RC] §52 |
| RN-VAL-02 | Celular colombiano | Exactamente 10 dígitos, inicia en 3. Retroalimentación en rojo/verde en tiempo real. | [RC] §52 |
| RN-VAL-03 | Celular internacional | Con la casilla "internacional" marcada, se acepta formato E.164 con indicativo de país. | [RT] — [AMB-07](00-hallazgos-y-decisiones.md#amb-07--validación-de-celular-colombiano-vs-acudientes-extranjeros) |
| RN-VAL-04 | Número de documento | Solo dígitos para RC/TI/CC/NUIP; alfanumérico para pasaporte, PEP y PPT. Único por institución y tipo. | [RT] |
| RN-VAL-05 | Correo electrónico | Formato válido. **Opcional** y **no único** (padre y madre pueden compartirlo, §22). | [RC] §22 |
| RN-VAL-06 | Fecha de nacimiento | No futura. Se advierte (no se bloquea) si la edad resultante es atípica para el grado. | [RT] |
| RN-VAL-07 | Notas | Rango, decimales y formato según RN-NOTA-01 y RN-NOTA-04. | [RC] §29 |
| RN-VAL-08 | Archivos adjuntos | Extensión en lista blanca, tamaño máximo, verificación del tipo real del contenido. | [RC] §50 |
| RN-VAL-09 | Campos de texto libre | Se escapan al mostrarse. Longitud máxima definida por campo. | [RC] §50 |
| RN-VAL-10 | Obligatoriedad | Los campos institucionales del colegio y la mayoría de los del estudiante son **opcionales** (§12, §21). Solo se exige lo imprescindible para operar. | [RC] §12, §21 |

---

## Matriz de bloqueo por estado

Resumen operativo: qué se puede hacer según el estado del año y del periodo.

| Operación | Año activo · Periodo abierto | Año activo · Periodo cerrado | Año cerrado |
|---|---|---|---|
| Digitar / editar notas | Docente ✓ · Coord ✓ | Docente ✗ · Coord ✓ | Todos ✗ |
| Registrar recuperación | Docente ✓ · Coord ✓ | Docente ✗ · Coord ✓ | Todos ✗ |
| Crear / editar desempeños | Docente ✓ · Coord ✓ | Docente ✗ · Coord ✓ | Todos ✗ |
| Registrar observaciones | Docente ✓ · Coord ✓ | Docente ✗ · Coord ✓ | Todos ✗ |
| Crear / editar tareas | Docente ✓ | Docente ✓ | Docente ✗ |
| Publicar comunicados | ✓ | ✓ | ✗ |
| Matricular | ✓ | ✓ | ✗ |
| Trasladar de curso | ✓ | ✓ | ✗ |
| Generar boletines | ✓ | ✓ | ✓ |
| Generar reportes | ✓ | ✓ | ✓ |
| Consultar histórico | ✓ | ✓ | ✓ |
| Ejecutar promoción | ✗ (requiere periodos cerrados) | ✓ | ✗ |
