# Documentación Técnica: BotPreguntaNoRespondidaModel (PHP)

El `BotPreguntaNoRespondidaModel` es el componente encargado de capturar las brechas de conocimiento en el ecosistema de IA. Su función principal es registrar aquellas consultas de los usuarios para las cuales el sistema no encontró información relevante en la base de conocimientos, permitiendo una mejora continua del asistente mediante la intervención humana posterior.

---

## Estructura de la Entidad

Este modelo gestiona la tabla `bot_preguntas_no_respondidas`, la cual sirve como una bandeja de entrada para el entrenamiento y actualización de los agentes.

### Atributos y Campos Permitidos (`$allowedFields`)

* **id_agente**: Identificador del asistente que no pudo procesar la consulta.
* **id_chat**: Relación con la sesión de chat específica donde ocurrió la incidencia.
* **pregunta_usuario**: El texto íntegro del mensaje que no obtuvo una respuesta técnica basada en recursos.
* **url_seguimiento**: Enlace directo generado hacia el panel de administración para que el supervisor pueda ver el contexto completo de la conversación.
* **fecha_registro**: Marca de tiempo en la que se detectó la falta de conocimiento.

---

## Configuración del Modelo

| Propiedad | Valor | Descripción |
| --- | --- | --- |
| `$table` | `bot_preguntas_no_respondidas` | Tabla de incidencias de conocimiento. |
| `$primaryKey` | `id` | Identificador único de la incidencia. |
| `$returnType` | `array` | Formato de retorno de datos estándar del sistema. |

---

## Ejemplo de Implementación

### Registro automático de incidencia

El controlador `Chat` utiliza este modelo cuando el proceso de recuperación (RAG) devuelve un conjunto de resultados vacío:

```php
use App\Models\Bot\BotPreguntaNoRespondidaModel;

$logNoRespondidaModel = new BotPreguntaNoRespondidaModel();

// Datos capturados durante el flujo de send_message
$logNoRespondidaModel->save([
    'id_agente'        => $agenteId,
    'id_chat'          => $chatId,
    'pregunta_usuario' => "Quisiera saber el costo de la matrícula 2026",
    'url_seguimiento'  => base_url("admin/chats/ver/" . $chatId),
    'fecha_registro'   => date('Y-m-d H:i:s')
]);

```

---

## Casos de Uso

### 1. Retroalimentación para el Entrenamiento (Fine-tuning de Contexto)

Actúa como una lista de tareas para el administrador de contenidos. Al revisar periódicamente esta tabla, el equipo humano puede identificar qué temas son recurrentes y no están cubiertos, procediendo a crear nuevos registros en `BotConocimientoModel`.

### 2. Análisis de Frustración del Usuario

Permite medir la efectividad del bot. Un alto volumen de registros en este modelo indica que la base de conocimientos está desactualizada o que el proceso de clasificación de etiquetas necesita ajustes en la librería `GeminiClient`.

### 3. Escalado a Soporte Humano

El sistema utiliza el registro de esta incidencia para activar una respuesta de contingencia en el chat, informando al usuario que su duda ha sido reportada y ofreciendo canales de contacto alternativos, como correos electrónicos de soporte.