# Desplegar un colegio nuevo — paso a paso

Guía operativa para dar de alta un colegio en el portal multi-tenant
(`admin_alumnos/`, `admin_docentes/`, `panel_admin/`). No hay UI para crear
un colegio desde cero todavía — el alta se hace por SQL + CLI + `panel_admin`.

Antes de empezar: `composer install` (si no se hizo) y `.env` configurado
(ver `CLAUDE.md`).

---

## 0. Qué necesitas tener a mano

- Nombre legal, RIF, dirección, teléfono, ciudad/estado del colegio.
- La base de datos del colegio ya creada en el mismo servidor MySQL
  (`bdColeg`), con el esquema legacy de alumnos/notas/pagos (clonada de un
  colegio existente o migrada del sistema anterior del colegio).
- Si el colegio venía de un despliegue legacy propio (un `inicia.php` viejo
  con sus `define()`), la ruta a ese archivo.
- Logo (`logo.png`) y marca de agua (`fondoagua.jpg`) del colegio, para los
  PDFs.

---

## 1. Insertar la fila del colegio en `siscev.colegio`

No existe formulario "Nuevo colegio" en `panel_admin` — la fila se inserta
directo por SQL contra `siscev`:

```sql
INSERT INTO colegio
  (nkxs, ekks, ckls, rifColeg, telefonoColeg, ciudadColeg, estadoColeg,
   direccionColeg, dominioColeg, correoColeg, bdColeg, status)
VALUES
  ('NOMBRE DEL COLEGIO', 'Eslogan o nombre corto', 'Ciudad/Sede',
   'J-12345678-9', '0212-1234567', 'Caracas', 'Distrito Capital',
   'Av. Principal, Edif. X', 'colegio.dominio.com', 'admin@colegio.com',
   'nombre_bd_colegio', 1);
```

Anota el `idColegio` autogenerado — lo usarás en todos los pasos siguientes.
Columnas `token_micolegio` y las de `_COLEGIO_MAPA` (`core/config_legacy.php`)
se completan más adelante; no hace falta tocarlas aquí.

## 2. Verificar la conexión a la BD del colegio

```bash
php verificar_colegio.php <id_colegio>
```

En este punto vas a ver varios ✗ (normal, aún no hay módulos/token/config) —
solo confirma que **"Conexión a BD"** salga ✓. Si falla, revisa que `bdColeg`
esté bien escrito y que la BD exista en el mismo servidor (mismas
`DB_HOST`/`DB_USER`/`DB_PASS` del `.env`, no se guardan credenciales por
colegio).

## 3. Migrar constantes institucionales

**Caso A — venía de un `inicia.php` legacy:**

```bash
php migrar_inicia.php <ruta/al/inicia.php> <id_colegio>
```

Esto vuelca cada `define()` de ese archivo a `colegio_config`.

**Caso B — colegio nuevo sin sistema previo:** carga las constantes a mano
en `panel_admin` → editar colegio → **Constantes institucionales** → caja
"Agregar/editar varias", una por línea `CLAVE=valor`. Mínimo típico: bancos
de pago (`BANCO1M`, etc.), año escolar activo, datos de directores para los
PDFs (los que no vinieron ya como columnas de `colegio` en el paso 1).

Usa `cfg('CLAVE')` en código para leerlas — nunca asumas que existen.

## 4. Generar el token fijo de acceso

```bash
php gen-token.php <id_colegio>
```

Genera y persiste `token_micolegio` (no expira, no se regenera después).
La URL de acceso de los alumnos queda:

```
<PORTAL_URL>/admin_alumnos/login.php?c=<token>
```

También puedes generarlo/copiarlo desde `panel_admin` → Colegios → botón
"Enlace" (mismo token, ya persistido).

## 5. Activar el colegio

Por defecto `status=1` si lo insertaste así en el paso 1; si no, actívalo
desde `panel_admin` → Colegios → botón "Activar". Un colegio con `status=0`
no puede resolver tenant (`resolver_tenant()` lo rechaza con 403).

## 6. Habilitar módulos

`panel_admin` → Colegios → **Editar** el colegio → sección **Módulos
habilitados** → marcar los que aplican → Guardar. Sin esto, el alumno entra
pero cada módulo lo manda a `home.php` (`requiere_modulo()`).

## 7. Configurar acceso de morosos por módulo

Misma pantalla, sección **Configuración de módulos**, columna "Acceso
morosos": para cada módulo en `MODULOS_CON_MOROSO` (`core/modulos.php`)
decide si un alumno con deuda pendiente puede entrar o no
(`permite_morosos`, default `1` = sí puede).

## 8. Crear la carpeta de formatos PDF del colegio

Cada colegio con módulos de `MODULOS_CON_PDF` necesita su propia subcarpeta
en `admin_alumnos/colegios/<carpeta>/` (sirve tanto para `admin_alumnos`
como para `doc-carnet` de `admin_docentes`). Usa `colegiojuanxxiii/` como
plantilla:

```bash
cp -r admin_alumnos/colegios/colegiojuanxxiii admin_alumnos/colegios/<carpeta-nueva>
```

Dentro:
- `img/logo.png`, `img/fondoagua.jpg` (y demás imágenes referenciadas) →
  reemplázalas por las del colegio nuevo.
- `formatos/*.php` → ajusta textos institucionales fijos (nombre de
  director, membrete, etc.) que no vengan de `cfg()`/BD.
- `actualizar.php` / `consulta.php` → revisa si el colegio nuevo tiene
  particularidades de datos (niveles, materias) distintas a Juan XXIII.

Luego, en `panel_admin` → editar colegio → **Configuración de módulos** →
columna "Ruta formato PDF", para cada módulo con PDF pon la ruta relativa a
`admin_alumnos/colegios/`, ej.:

```
<carpeta-nueva>/formatos/cons-est.php
```

`boletin` tiene 3 rutas (inicial/primaria/liceo) — completa las 3 que
apliquen. La ruta se valida contra path traversal en
`core/formato_pdf.php:cargar_formato_pdf()`; si no resuelve dentro de
`admin_alumnos/colegios/`, da 404.

## 9. Verificación final

```bash
php verificar_colegio.php <id_colegio>
```

Todos los ítems deben salir ✓. Si algo queda pendiente, el script te dice
cuál.

## 10. QA con navegador

Con el enlace `?c=<token>` del paso 4, entra como si fueras un alumno de
ese colegio y sigue **cada** `.md` de:
- `admin_alumnos/documentacion/modulos/*.md`
- `admin_docentes/documentacion/modulos/*.md` (si el colegio usa portal
  docente — necesitas credenciales de un docente real de ese colegio)

Fuerza también los casos de error descritos en cada `.md` (ver sección "QA
con navegador" de `CLAUDE.md`). Presta atención especial a los módulos con
PDF recién configurados (paso 8) — son los que más fallan por ruta mal
escrita o imagen faltante.

## 11. Opcional — Telegram y correo compartido

- Notificaciones a representantes por Telegram: ver
  `documentacion/telegram-notificaciones.md` y
  `documentacion/telegram-vm-setup.md`.
- Correo saliente (`material.php`, `registrar-pago.php`): si el colegio no
  tiene buzón SMTP propio, cae al buzón compartido
  (`HOSTMAILTODOS`/`MAILUSERTODOS`/`CLAVEMAILTODOS` del `.env`, o
  `/var/www/todos/inicia.php` en producción) — no requiere configuración
  extra por colegio.

---

## Checklist rápido

- [ ] Fila en `siscev.colegio` (paso 1)
- [ ] `verificar_colegio.php` → "Conexión a BD" ✓ (paso 2)
- [ ] Constantes institucionales migradas/cargadas (paso 3)
- [ ] Token fijo generado (paso 4)
- [ ] `status = 1` (paso 5)
- [ ] Módulos habilitados (paso 6)
- [ ] `permite_morosos` revisado por módulo (paso 7)
- [ ] Carpeta `admin_alumnos/colegios/<carpeta>/` con logo/fondoagua propios
      y rutas de PDF configuradas (paso 8)
- [ ] `verificar_colegio.php` → todo ✓ (paso 9)
- [ ] QA con navegador contra los `.md` de cada módulo (paso 10)
