# INTERLINK WhatsApp v2.6
## Incidencias verificadas, tickets reales, tecnología de acceso y conocimiento estructurado

Fecha de entrega: 30/07/2026

Esta actualización corrige el problema central del asistente: la IA ya no debe decidir por sí sola si existe un corte, si se creó un reclamo, si irá un técnico, si hay una hora de normalización o si necesita volver a pedir datos que el CRM ya conoce.

## 1. Componentes incorporados

### Panel de incidencias de red

Ruta:

`admin/incidents.php`

Permite registrar una incidencia con:

- código automático;
- título y notas internas;
- estado y severidad;
- inicio confirmado;
- estimación de normalización opcional;
- alcance global, por nodo o por localidad;
- mensaje público aprobado;
- acciones para resolver, reabrir o archivar.

El motor solo afirma que existe un corte cuando encuentra una incidencia activa que coincide con el nodo o la localidad del servicio. El mensaje público no admite horarios escritos manualmente: cualquier estimación debe cargarse en `eta_at`.

### Creación de tickets reales

Cuando el flujo requiere intervención técnica, el motor crea primero un registro real en `tickets` y luego informa el número al cliente. Se registra además una actualización en `ticket_updates` y un vínculo en `wa2_ticket_links`.

El sistema:

- evita tickets duplicados abiertos para el mismo cliente, servicio y motivo;
- usa origen `whatsapp`;
- asigna prioridad según la consulta;
- no promete fecha ni horario;
- reutiliza un ticket abierto si ya existe;
- deriva a humano si no puede registrar el ticket.

La creación automática necesita un usuario activo del CRM. Se configura en `admin/ai_settings.php`.

### Tecnología de acceso por servicio

Se agrega `services.access_technology` con los valores:

- `fiber`: fibra;
- `wireless`: antena o radio;
- `other`: otra tecnología;
- `unknown`: pendiente de clasificar.

Ruta de administración:

`admin/service_technology.php`

La migración solo infiere fibra cuando encuentra evidencia ONU/OLT. Nunca clasifica un servicio como antena por simple ausencia de datos de fibra.

### Base de conocimiento estructurada

Ruta:

`admin/knowledge.php`

Cada entrada ahora puede definir:

- intención exacta;
- categoría administrativa;
- visibilidad pública, cliente validado o interna;
- tecnología aplicable;
- localidad;
- palabras clave;
- acción permitida;
- afirmaciones prohibidas;
- estado de aprobación;
- vigencia desde/hasta;
- prioridad;
- versión e historial.

Solo se entrega a la IA conocimiento que esté activo, aprobado, vigente y sea compatible con la intención, visibilidad, tecnología y localidad. Las entradas `any` ya no se mezclan automáticamente con soporte, pagos o comercial.

### Evaluación humana de respuestas

Desde la bandeja se puede marcar la última respuesta como correcta o incorrecta. Las correcciones quedan en `wa2_ai_feedback` para revisión; no se incorporan automáticamente a producción.

Ruta de revisión:

`admin/ai_feedback.php`

### Simulador seguro

Ruta:

`admin/test.php`

Ejecuta el motor dentro de una transacción que siempre se revierte. Usa los datos reales del cliente, servicio e incidencias para calcular la respuesta, pero no envía WhatsApp, no crea tickets y no deja mensajes de prueba.

## 2. Intenciones operativas nuevas

- `outage_status`
- `support_no_service`
- `support_slow`
- `support_wifi`
- `support_red_light`
- `support_no_power`
- `support_password_change`
- `support_visit_request`
- `service_transfer`
- `complaint`
- `human_request`

Se incluyeron expresiones reales observadas en INTERLINK, entre ellas “¿Tienen problemas con internet?”, “Es del internet total”, “el internet no sirve para nada”, “no aparece la red 2.4G”, “la luz LOS está roja” y “quiero que venga un técnico”.

## 3. Reglas de seguridad conversacional

El validador final descarta una reformulación de IA cuando:

- afirma una incidencia sin `active_incident_id`;
- inventa una hora o una fecha;
- informa un ticket que no fue creado;
- cambia el número real del ticket;
- promete una visita sin `scheduled_at`;
- confirma un pago sin evidencia del CRM;
- promete seguimiento futuro no registrado;
- pide ubicación cuando el domicilio ya está identificado;
- repite tecnología, luces, reinicio, alcance de dispositivos o servicio;
- agrega una pregunta que no estaba en el borrador seguro.

Por seguridad, el refinado IA de respuestas operativas queda desactivado inicialmente. Las respuestas de incidentes, soporte y tickets funcionan por reglas deterministas.

## 4. Orden obligatorio de instalación

1. Hacer backup de la base `interlink_crm` y de `/var/www/html/_inc/whatsapp_v2`.
2. Ejecutar primero `INTERLINK_WA2_V26_MIGRACION_2026-07-30.sql`.
3. Extraer el ZIP del parche desde `/var/www/html/_inc`.
4. Corregir propietario/permisos.
5. Verificar sintaxis PHP.
6. Configurar el usuario creador de tickets.
7. Clasificar tecnologías pendientes.
8. Revisar la base de conocimiento migrada.
9. Crear una incidencia de prueba controlada.
10. Ejecutar `INTERLINK_WA2_V26_VERIFICAR_2026-07-30.sql`.
11. Probar el simulador antes de reactivar cualquier refinado operativo por IA.

## 5. Configuración inicial recomendada

En `admin/ai_settings.php`:

- responder usando panel de incidencias: activado;
- crear tickets reales automáticamente: activado;
- usuario creador de tickets: seleccionar una cuenta operativa válida;
- refinado IA de soporte: desactivado;
- máximo de conocimiento: 3 o 4 entradas.

En `admin/service_technology.php`:

- ejecutar una vez la inferencia segura de fibra;
- revisar manualmente los servicios `unknown`;
- marcar como `wireless` los servicios por LiteBeam, Nano Loco u otra antena.

En `admin/knowledge.php`:

- revisar las entradas históricas migradas;
- separar cada tema en una intención concreta;
- desactivar textos vencidos o ambiguos;
- no aprobar contenido que prometa visitas, horarios, pagos o cobertura exacta sin una fuente operativa.

## 6. Pruebas mínimas posteriores

### Sin incidencia activa

Cliente: `¿Tienen problemas con internet?`

Esperado: indicar que no hay un corte general confirmado y hacer una sola pregunta para distinguir falta total de lentitud.

### Con incidencia activa sin ETA

Esperado: informar únicamente el mensaje público aprobado y aclarar que no hay horario confirmado cuando el cliente lo pregunta.

### Con incidencia activa con ETA

Esperado: mostrar exactamente la fecha y hora almacenada en `eta_at`.

### Ticket real

Cliente validado: `Ya reinicié y sigue sin internet en todos los dispositivos.`

Esperado: crear o reutilizar un ticket real, informar su número y aclarar que todavía no tiene visita agendada.

### Múltiples servicios

Esperado: pedir elegir un servicio una sola vez y recordar la selección.

### Tecnología

Esperado: no volver a preguntar fibra/antena cuando `access_technology` ya está clasificado.

## 7. Rollback

El rollback se divide en dos partes:

- `INTERLINK_WA2_V26_ROLLBACK_SEGURO_2026-07-30.sql`: desactiva automatismos e incidencias sin borrar datos.
- `interlink_whatsapp_v26_rollback_archivos_2026-07-30.zip`: restaura los archivos anteriores y contiene un script para eliminar solo los archivos nuevos de v2.6.

Las tablas, columnas, tickets, incidencias, conocimiento y feedback quedan conservados para auditoría.

## 8. Limitaciones de la validación realizada

Se verificaron sintaxis PHP, JSON, estructura del paquete, ausencia de secretos literales y pruebas puras de clasificación/guardas. No se ejecutaron pruebas contra la base de producción, la cuenta real de Meta, OpenAI ni el Apache del VPS. La instalación debe completarse con backup, SQL de verificación y prueba controlada desde el simulador.
