ALERTA PERÚ - API CIUDADANA 0.01

ANTES DE INSTALAR:
1. Importar en phpMyAdmin:
   ALERTA_PERU_MIGRACION_BLOQUE_04_CIUDADANOS.sql

INSTALACIÓN:
2. Extraer ALERTA_PERU_API_CIUDADANA_0_01.zip dentro de:
   /public_html/alertaperu/api/

El ZIP crea:
   /api/ciudadano/

NO reemplaza los endpoints públicos ya existentes.

PRUEBA RÁPIDA:
Abrir:
https://alertaperu.businessperusacs.com/api/ciudadano/estado.php

Debe responder:
ok: true
servicio: API Ciudadana ALERTA PERÚ
version: 0.01

AUTENTICACIÓN:
Después de registro/login, enviar el token mediante:
X-ALERTA-TOKEN: <token>

También se acepta:
Authorization: Bearer <token>

ENDPOINTS:
GET  ciudadano/estado.php
GET  ciudadano/configuracion.php
POST ciudadano/registro.php
POST ciudadano/login.php
POST ciudadano/logout.php
GET  ciudadano/perfil.php
POST ciudadano/dispositivo.php
POST ciudadano/envio-iniciar.php
POST ciudadano/evidencia-subir.php
GET  ciudadano/envio-estado.php
POST ciudadano/envio-finalizar.php
GET  ciudadano/mis-alertas.php
GET  ciudadano/alerta.php
GET  ciudadano/chat-mensajes.php
POST ciudadano/chat-enviar.php

EVIDENCIAS:
- El servidor lee la configuración de la base.
- No hardcodea 2 fotos / 10-20 segundos.
- Fotografías: JPG, PNG o WEBP.
- Video: MP4/MOV.
- La duración del video se obtiene del archivo MP4/MOV en el servidor.
- No se confía únicamente en la duración informada por Flutter.
- Se detectan archivos duplicados mediante SHA-256.
- Los archivos quedan en almacenamiento privado fuera de public_html.

FLUJO:
1. Registro/login.
2. envio-iniciar.php
3. evidencia-subir.php para fotos/video.
4. envio-estado.php
5. envio-finalizar.php
6. La API crea ap_alertas, copia las evidencias validadas y aplica las reglas.
7. mis-alertas.php / alerta.php
8. chat-mensajes.php / chat-enviar.php

CONTROL DE ABUSO:
Antes de iniciar o finalizar una alerta, la API comprueba:
- suspensión vigente;
- bloqueo vigente.

Las advertencias no impiden reportar.
Las suspensiones vencidas dejan de aplicarse automáticamente.

IDENTIDAD Y ANONIMATO:
La identidad del ciudadano se guarda separada de las alertas.
Las alertas usan una referencia interna.
Los portales de instituciones/organizaciones no reciben documento,
teléfono, correo, nombres ni apellidos del ciudadano.
