# SIAPA V41 Depurado — UEN Alberto Smith

## Contenido del paquete

- `index.html`: aplicación institucional depurada, con dashboard operativo, navegación jerárquica, búsqueda predictiva, asistencia, biometría mediante agente local, proyectos, grupos estables y reportes consolidados.
- `api/`: servicio PHP de autenticación, sincronización por revisiones, historial, respaldos, réplica entre servidores y correo institucional opcional.
- `instalar.php`: asistente de primera configuración para el dominio.
- `activo.json`: plantilla local de respaldo y restauración.
- `manifest.webmanifest` y `sw.js`: instalación PWA y funcionamiento sin conexión.

## Requisitos del servidor web

- Dominio o subdominio con HTTPS.
- PHP 8.1 o superior con sesiones y JSON habilitados.
- Permiso de escritura para `storage/`.
- Permiso de escritura temporal para `api/` durante la instalación, con el fin de crear `config.override.php`.
- La función PHP `mail()` es opcional; solo se necesita para envío directo de correos.

## Instalación en el dominio

1. Descomprima y suba **todo el contenido** conservando la estructura de carpetas.
2. Abra `https://SU-DOMINIO/RUTA/instalar.php`.
3. Defina un usuario administrativo y una contraseña de al menos 12 caracteres.
4. Indique la URL pública completa del sistema.
5. Active el correo solamente cuando el hosting tenga entrega de correo habilitada.
6. Entre a `index.html`, abra **Infraestructura** e inicie sesión en el servidor.
7. Use **Sincronizar ahora** para registrar la primera revisión institucional.

La aplicación utiliza la ruta relativa `./api`; por eso funciona sin editar el código tanto en la raíz de un dominio como dentro de una subcarpeta.

## Operación offline y sincronización

- Cada navegador conserva una copia local en IndexedDB.
- Cuando existe conexión y sesión de servidor, los cambios se sincronizan contra la API del mismo dominio.
- El servidor conserva revisión, checksum e historial.
- Ante dos cambios incompatibles, la API responde con conflicto y evita sobrescribir silenciosamente la información.
- `activo.json` permite respaldo o restauración manual local.

## Servidor local y réplica con el dominio

El paquete puede ejecutarse en la red escolar con PHP:

- Windows: `INICIAR_SERVIDOR_LOCAL.bat`
- Linux/macOS: `./iniciar_servidor_local.sh`

Para replicar un servidor escolar con el dominio, configure en `api/config.override.php` del servidor local:

```php
'peer_sync_enabled' => true,
'peer_base_url' => 'https://SU-DOMINIO/RUTA/api',
'peer_token' => 'EL_MISMO_TOKEN_PRIVADO_DEL_SERVIDOR_WEB',
```

La réplica debe activarse solo en el servidor local. El sistema protege conflictos por revisión y crea respaldos antes de aplicar cambios remotos.

## Seguridad inicial

- La API permanece bloqueada hasta completar `instalar.php`.
- Después de instalar, retire el permiso de escritura de `api/` cuando el hosting lo permita.
- No publique `api/config.override.php` ni comparta el token de réplica.
- Mantenga HTTPS activo y realice respaldos periódicos de `storage/`.

## Captahuella

El navegador no controla directamente cualquier lector USB. La captura biométrica requiere el controlador del fabricante y el agente local compatible con el modelo instalado en la institución.
