# 02 — Arquitectura funcional *(Entregable B)*

## Mapa de módulos

SIGA se organiza en **16 módulos funcionales** agrupados en cinco capas de dominio. La capa inferior condiciona a
la superior: no se puede matricular sin estructura académica, ni calificar sin matrícula.

```
┌──────────────────────────────────────────────────────────────────────────────┐
│  CAPA 5 — SALIDA Y CONTROL                                                   │
│  ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐                 │
│  │ M13        │ │ M14        │ │ M15        │ │ M16        │                 │
│  │ Boletines  │ │ Reportes   │ │ Auditoría  │ │ Dashboards │                 │
│  └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘                 │
└────────┼──────────────┼──────────────┼──────────────┼───────────────────────┘
         │              │              │              │
┌────────┼──────────────┼──────────────┼──────────────┼───────────────────────┐
│  CAPA 4 — OPERACIÓN ACADÉMICA        │              │                        │
│  ┌─────▼──────┐ ┌────────────┐ ┌─────▼──────┐ ┌─────▼──────┐ ┌────────────┐  │
│  │ M08        │ │ M09        │ │ M10        │ │ M11        │ │ M12        │  │
│  │ Desempeños │ │ Notas y    │ │ Observa-   │ │ Tareas     │ │ Comuni-    │  │
│  │ (logros)   │ │ recuperac. │ │ ciones     │ │            │ │ cados      │  │
│  └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └────────────┘ └────────────┘  │
└────────┼──────────────┼──────────────┼──────────────────────────────────────┘
         │              │              │
┌────────┼──────────────┼──────────────┼──────────────────────────────────────┐
│  CAPA 3 — POBLACIÓN ESCOLAR          │                                       │
│  ┌─────▼──────────────▼──────────────▼─────┐ ┌────────────┐ ┌─────────────┐ │
│  │ M06 · Matrícula                          │ │ M07        │ │ M17         │ │
│  │ (matrícula, traslado, estados, histórico)│ │ Promoción  │ │ Acudientes  │ │
│  └─────┬────────────────────────────────────┘ └─────┬──────┘ └─────────────┘ │
│        │                                            │                        │
│  ┌─────▼──────┐  ┌───────────────┐                  │                        │
│  │ M04        │  │ M05           │                  │                        │
│  │ Estudiantes│  │ Docentes      │                  │                        │
│  └────────────┘  └───────────────┘                  │                        │
└─────────────────────────────────────────────────────┼───────────────────────┘
                                                      │
┌─────────────────────────────────────────────────────┼───────────────────────┐
│  CAPA 2 — ESTRUCTURA ACADÉMICA                       │                       │
│  ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌─────▼──────┐                │
│  │ M03a       │ │ M03b       │ │ M03c       │ │ M03d       │                │
│  │ Grados     │ │ Cursos     │ │ Áreas y    │ │ Asignación │                │
│  │            │ │ (grupos)   │ │ Asignaturas│ │ docente    │                │
│  └────────────┘ └────────────┘ └────────────┘ └────────────┘                │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│  CAPA 1 — FUNDACIÓN                                                          │
│  ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐                │
│  │ M01        │ │ M02        │ │ M00a       │ │ M00b       │                │
│  │ Colegio    │ │ Años y     │ │ Usuarios,  │ │ Config.    │                │
│  │            │ │ Periodos   │ │ roles y    │ │ académica  │                │
│  │            │ │            │ │ permisos   │ │ (escala)   │                │
│  └────────────┘ └────────────┘ └────────────┘ └────────────┘                │
└──────────────────────────────────────────────────────────────────────────────┘
```

---

## Catálogo de módulos

### Capa 1 — Fundación

#### M00a · Usuarios, roles y permisos [RC]
Gestiona credenciales, asignación de roles, restablecimiento de contraseñas, bloqueo de cuentas y sesión.
Separa **Persona** (el ser humano) de **Usuario** (la credencial) de **Rol** (lo que puede hacer), lo que permite
que un docente sea a la vez acudiente sin duplicar identidades — ver [AMB-09](00-hallazgos-y-decisiones.md#amb-09--una-misma-persona-con-varios-roles).

**Depende de:** nada. **Lo consume:** todo el sistema.

#### M00b · Configuración académica [RC]
Escala de desempeño (bandas y nombres), nota mínima, nota máxima, número de decimales, política de recuperación,
regla sugerida de promoción, e interruptores de visibilidad para familias.

#### M01 · Colegio [RC]
Datos institucionales: nombre, NIT, DANE, dirección, municipio, departamento, contacto, rector, jornada,
naturaleza, calendario, resolución de aprobación, secretaría de educación, logo, escudo, textos de encabezado y
firmas del boletín. **Ningún campo es obligatorio salvo el nombre** (§12): el colegio completa la información en
el tiempo que necesite.

**Nota de diseño [RT]:** aunque hoy exista un solo colegio, este módulo se modela como *una fila de una tabla de
instituciones*, no como un archivo de configuración. Es el pilar del multi-colegio futuro.

#### M02 · Años y periodos [RC]
Creación de años académicos, definición del número de periodos, apertura y cierre de periodos, cierre de año,
y designación de **año y periodo predeterminados**. Solo Superadmin (§7 excluye explícitamente al Coordinador).

**Concepto clave — Contexto activo [RT]:** el año y periodo predeterminados definen el **contexto por defecto**
de la sesión. Un selector permanente en la barra superior permite a Superadmin, Coordinador y Docente cambiar de
año o periodo para consultar histórico. **Todas** las pantallas y consultas se filtran por ese contexto, lo que
evita el error clásico de "estoy viendo notas de 2026 creyendo que son de 2027".

---

### Capa 2 — Estructura académica

#### M03a · Grados [RT — ver DP-09]
Catálogo institucional estable: Transición, 1°… 11°, con `orden` numérico, `nivel` (preescolar / primaria /
secundaria / media) e indicador de `grado_terminal`. **No pertenece a un año**: es la columna vertebral que
permite sugerir promociones y ordenar reportes correctamente.

#### M03b · Cursos (grupos) [RC]
Instancia concreta de un grado en un año: *6°A 2026, jornada mañana*. Incluye director de curso, jornada, sede
opcional, cupo opcional y estado. Se crean por año, se copian del año anterior (§18).

#### M03c · Áreas y asignaturas [RC]
Catálogo de áreas (Matemáticas, Ciencias Naturales…) y de asignaturas dentro de cada área. Ambos con activación/
desactivación, **nunca borrado** (§15, §48). Las asignaturas se **ofertan por curso y año**, no globalmente: 6°A
puede tener Física y 3°A no.

#### M03d · Asignación docente [RC]
La relación central del sistema:

> **Docente titular = (docente, asignatura, curso, año)**

Es lo que determina qué puede tocar cada docente (§8). Un docente puede tener muchas de estas relaciones; una
asignatura de un curso tiene exactamente un titular. La dirección de curso es una relación aparte y **no impide**
que el director también sea titular de asignaturas en su curso o en otros (§8).

---

### Capa 3 — Población escolar

#### M04 · Estudiantes [RC]
Datos personales completos con referencia al contexto de matrícula colombiano (§20, §21). Distingue campos
obligatorios, opcionales y condicionales. Soporta estudiantes colombianos y extranjeros. **El estudiante existe
con independencia de la matrícula**: puede estar registrado y no matriculado en el año en curso.

#### M05 · Docentes [RC]
Datos personales y profesionales, estado, y las asignaciones académicas derivadas de M03d.

#### M17 · Acudientes [RC]
Personas responsables del estudiante. Relación **muchos a muchos**: un estudiante puede tener varios acudientes y
un acudiente puede tener varios estudiantes (§9, §22). Cada relación lleva parentesco, e indicadores de
*acudiente principal* y *responsable financiero*. Padre y madre tienen **usuarios independientes**, y pueden
compartir correo o celular (§22).

#### M06 · Matrícula [RC]
El módulo operativamente más importante. Flujo:

```
   Digitar documento
          │
   ┌──────▼──────┐
   │ ¿Existe?    │
   └──┬───────┬──┘
      │SÍ     │NO
      │       └────────────► Wizard de registro + matrícula (5 pasos)
      │
      ├──► Editar información del estudiante
      └──► Matricular en un curso del año activo
```

Genera un **código de matrícula** consecutivo (`MAT-2026-000123`), conserva estados (Activa, Retirado, Trasladado,
Promovido, No promovido, Graduado) y **nunca borra** (§24, §48). Incluye el **traslado de curso** dentro del mismo
año, conservando curso origen, curso destino, fecha, motivo y usuario (§25).

#### M07 · Promoción [RC]
Proceso asistido de fin de año: toma los estudiantes activos del año que cierra, **sugiere el curso destino** en
el año siguiente usando el orden de grados, y permite decidir en masa o individualmente entre promover, no
promover, retirar, trasladar o graduar (§26).

---

### Capa 4 — Operación académica

#### M08 · Desempeños / logros [RC]
Banco de desempeños asociados a **(asignatura, curso, periodo)** — no a estudiantes individuales (§27). El docente
titular los crea, edita y asigna al periodo. Se pueden reutilizar entre periodos y copiar del año anterior.

#### M09 · Notas y recuperaciones [RC]
Digitación rápida optimizada (§29: `35` → `3.5`, `4` → `4.0`), validación en cliente y servidor, una nota por
estudiante/asignatura/periodo, con registro separado de **nota original, nota de recuperación y nota definitiva**
(§30). Toda modificación va a auditoría (§31).

#### M10 · Observaciones [RC]
Observaciones para el boletín asociadas a estudiante + periodo + año (§45), en los dos niveles propuestos en
[AMB-06](00-hallazgos-y-decisiones.md#amb-06--quién-escribe-la-observación-del-boletín).

#### M11 · Tareas [RC]
Tareas por **(asignatura, curso)** con título, descripción, fecha de asignación automática no editable, fecha de
entrega, prioridad, adjunto y enlace opcionales (§36). El sistema clasifica automáticamente en *Próxima*,
*Próxima a vencer* y *Vencida*. Estudiantes y acudientes **solo consultan**; no hay entrega de archivos en la v1.

#### M12 · Comunicados [RC]
Publicación con destinatarios flexibles (§37): institución completa, uno o varios cursos, un grado, o un rol.
El alcance permitido depende del emisor: Coordinador a todo el colegio, director de curso a su curso, docente a
los cursos donde tiene asignación.

---

### Capa 5 — Salida y control

#### M13 · Boletines [RC]
Generación PDF individual y masiva por curso, con encabezado institucional, datos del estudiante, tabla
académica con histórico por periodo, promedios, logros, puesto, observaciones, gráfica de evolución y espacio de
firmas (§42–§45). Ver [10 — Boletines](10-boletines.md).

#### M14 · Reportes [RC]
Reportes administrativos, académicos, de docentes y de tareas, con filtros y exportación (§54, §55).
Ver [11 — Reportes](11-reportes.md).

#### M15 · Auditoría [RC]
Registro de operaciones sensibles con usuario, rol, fecha, hora, acción, módulo, registro afectado, IP, valor
anterior, valor nuevo y resultado (§49). Ver [12 — Auditoría](12-auditoria.md).

#### M16 · Dashboards [RC]
Cuatro tableros diferenciados por perfil (§38–§41). Ver [09 — Dashboards](09-dashboards.md).

---

## Servicios transversales

No son módulos de menú; son componentes internos que usan todos los módulos.

| Servicio | Responsabilidad | Por qué es transversal |
|---|---|---|
| **Contexto académico** | Resuelve año y periodo activos de la sesión; los inyecta en toda consulta | Evita filtros olvidados y datos de otro año |
| **Autorización** | Responde "¿este usuario puede hacer esta acción sobre este recurso?" | Punto único de decisión; ver [07 — Seguridad](07-seguridad.md) |
| **Cálculo académico** | Promedios, niveles de desempeño, puestos, consolidados | Debe dar el mismo resultado en pantalla, boletín y reporte |
| **Auditoría** | Registra el antes y el después de cada operación sensible | Se invoca desde los servicios, no desde los controladores |
| **Archivos** | Subida, validación, almacenamiento fuera de la raíz web y descarga controlada | Un solo punto de control de seguridad de archivos |
| **Notificación interna** | Entrega comunicados y avisos dentro del sistema | Punto de extensión para correo / WhatsApp [FF] |
| **Exportación** | CSV, XLSX e impresión desde cualquier tabla | Comportamiento uniforme en todo el sistema |
| **PDF** | Renderizado de documentos con plantilla institucional | Un solo motor, plantillas intercambiables |

---

## Dependencias de construcción

Este grafo determina el orden de las fases del plan de desarrollo. Una flecha significa *"no se puede construir
sin"*:

```
Usuarios/Roles ──► Colegio ──► Años/Periodos ──► Grados ──► Cursos
                                     │                        │
                                     ▼                        ▼
                              Áreas/Asignaturas ────► Asignación docente
                                                              │
   Docentes ──────────────────────────────────────────────────┤
                                                              ▼
   Estudiantes ──► Acudientes ──► Matrícula ─────────► Desempeños
                                     │                        │
                                     ▼                        ▼
                                 Traslados                  Notas
                                     │                        │
                                     ▼                        ▼
                                 Promoción ◄──── Consolidado / Cálculo
                                                              │
                                                     ┌────────┼────────┐
                                                     ▼        ▼        ▼
                                                 Boletines Reportes Dashboards
```

Tareas, Comunicados y Auditoría son **transversales**: se pueden construir en paralelo una vez existen
Usuarios, Cursos y Asignación docente.

---

## Preparación para la evolución

Los puntos de extensión ya previstos en la arquitectura funcional, sin construirlos:

| Evolución [FF] | Punto de extensión ya previsto |
|---|---|
| **Multi-colegio** | Toda entidad de negocio nace con `institucion_id`; toda consulta pasa por repositorio con filtro automático |
| **Asistencia** | Espacio reservado en el boletín; el curso ya conoce su jornada y sus estudiantes por fecha |
| **Horarios** | La asignación docente ya modela (docente, asignatura, curso, año); el horario es una capa encima |
| **Notificaciones externas** | El servicio de notificación interna define la interfaz; correo/WhatsApp son implementaciones nuevas |
| **Entrega de tareas** | La tarea ya existe como entidad; falta la relación tarea–estudiante–entrega |
| **SIMAT** | La estructura de datos del estudiante toma como referencia los campos de matrícula del contexto colombiano |
| **Notas parciales** | La nota de periodo es una entidad propia; una futura entidad de actividades la alimentaría |
| **Logros por estudiante** | El desempeño ya es una entidad independiente; falta la relación con estudiante y estado |
