Tareas Cron - Perfex AI
MD
9 secciones
Resumen
Documentación interna del módulo Perfex AI [hash:d8d2d03b40e5169b9ff82b8c92a38123]
# Tareas Cron - Perfex AI
**Archivo:** `core/ai_hooks.php` | **Hook:** `after_cron_run`
---
---
## Cómo Funciona el Cron en Perfex
Perfex CRM tiene un cron centralizado que se ejecuta cada 5 minutos (configurado en crontab del servidor). Todos los módulos registran sus tareas vía el hook `after_cron_run`. El módulo Perfex AI registra 4 tareas cron.
### 1. Limpieza de Rate Limits
| Campo | Valor |
|-------|-------|
| **Función** | `perfex_ai_cleanup_rate_limits()` |
| **Frecuencia** | Cada ejecución del cron (~5 min) |
| **Qué hace** | Elimina entradas de `tblperfex_ai_rate_limits` con más de 1 hora |
| **Setting** | Ninguno (1 hora fijo) |
|-------|-------|
| **Función** | `perfex_ai_cleanup_rate_limits()` |
| **Frecuencia** | Cada ejecución del cron (~5 min) |
| **Qué hace** | Elimina entradas de `tblperfex_ai_rate_limits` con más de 1 hora |
| **Setting** | Ninguno (1 hora fijo) |
### 2. Limpieza de Visitantes Inactivos
| Campo | Valor |
|-------|-------|
| **Función** | `perfex_ai_visitor_cleanup_cron()` |
| **Frecuencia** | Cada ejecución del cron |
| **Qué hace** | Desactiva visitantes sin actividad durante X días |
| **Setting** | `visitor_cleanup_days` (default: 90) |
| **Log** | `[Perfex AI] Auto-cleanup: X visitantes desactivados` |
|-------|-------|
| **Función** | `perfex_ai_visitor_cleanup_cron()` |
| **Frecuencia** | Cada ejecución del cron |
| **Qué hace** | Desactiva visitantes sin actividad durante X días |
| **Setting** | `visitor_cleanup_days` (default: 90) |
| **Log** | `[Perfex AI] Auto-cleanup: X visitantes desactivados` |
### 3. Health Check (IA + Telegram)
| Campo | Valor |
|-------|-------|
| **Función** | `perfex_ai_health_check_cron()` |
| **Frecuencia** | Cada 30 minutos (controlado por `health_last_check`) |
| **Qué hace** | Verifica estado de API IA y webhook Telegram |
| **Settings** | `health_last_check`, `health_previous_status` |
**Flujo:**
1. Verifica si han pasado 30 minutos desde el último check
2. **API IA**: GET al endpoint del modelo → verifica HTTP 200-399
3. **Telegram**: GET `getWebhookInfo` → verifica que hay URL y sin `last_error_message`
4. Compara con estado anterior → si cambió, genera alerta
5. **Alerta caída**: Notificación Perfex al admin (staff_id=1) + log_activity
6. **Alerta recuperación**: Notificación de recuperación + log_activity
|-------|-------|
| **Función** | `perfex_ai_health_check_cron()` |
| **Frecuencia** | Cada 30 minutos (controlado por `health_last_check`) |
| **Qué hace** | Verifica estado de API IA y webhook Telegram |
| **Settings** | `health_last_check`, `health_previous_status` |
**Flujo:**
1. Verifica si han pasado 30 minutos desde el último check
2. **API IA**: GET al endpoint del modelo → verifica HTTP 200-399
3. **Telegram**: GET `getWebhookInfo` → verifica que hay URL y sin `last_error_message`
4. Compara con estado anterior → si cambió, genera alerta
5. **Alerta caída**: Notificación Perfex al admin (staff_id=1) + log_activity
6. **Alerta recuperación**: Notificación de recuperación + log_activity
### 4. Expiración de Conversaciones
| Campo | Valor |
|-------|-------|
| **Función** | `perfex_ai_conversation_expiry_cron()` |
| **Frecuencia** | Diaria (controlado por `expiry_last_run`) |
| **Qué hace** | Exporta conversaciones archivadas antiguas a KB y las elimina |
| **Setting** | `conversation_retention_days` (default: 180) |
| **Log** | `[Perfex AI] Expiry: X conversaciones exportadas a KB, Y eliminadas` |
**Flujo:**
1. Verifica si ya se ejecutó hoy → si sí, retorna
2. Lee `conversation_retention_days` (default 180)
3. Busca conversaciones archivadas con `updated_at` anterior al corte
4. Para cada conversación expirada:
- Si tiene ≥5 mensajes → exportar a Markdown → guardar .md → registrar en KB → indexar chunks
- Eliminar conversación (mensajes cascade via FK)
5. Log de actividad con totales
|-------|-------|
| **Función** | `perfex_ai_conversation_expiry_cron()` |
| **Frecuencia** | Diaria (controlado por `expiry_last_run`) |
| **Qué hace** | Exporta conversaciones archivadas antiguas a KB y las elimina |
| **Setting** | `conversation_retention_days` (default: 180) |
| **Log** | `[Perfex AI] Expiry: X conversaciones exportadas a KB, Y eliminadas` |
**Flujo:**
1. Verifica si ya se ejecutó hoy → si sí, retorna
2. Lee `conversation_retention_days` (default 180)
3. Busca conversaciones archivadas con `updated_at` anterior al corte
4. Para cada conversación expirada:
- Si tiene ≥5 mensajes → exportar a Markdown → guardar .md → registrar en KB → indexar chunks
- Eliminar conversación (mensajes cascade via FK)
5. Log de actividad con totales
# Ejecutar cron completo de Perfex (incluye todas las tareas)
/opt/plesk/php/8.2/bin/php /var/www/vhosts/cristaleriaaltea.com/clientes.cristaleriaaltea.com/index.php cron
```
```
# Log de Perfex
tail -500 /var/www/vhosts/cristaleriaaltea.com/clientes.cristaleriaaltea.com/application/logs/log-$(date +%Y-%m-%d).php | grep -i "perfex ai"
## Documentos Relacionados
- [Arquitectura](modulo_arquitectura.md) - Estructura general
- [Conversaciones](modulo_conversaciones.md) - Ciclo de vida y expiración
- [Configuración](modulo_configuracion.md) - Settings de cron
- [Telegram Bot](modulo_telegram_bot.md) - Health check del bot
- [Conversaciones](modulo_conversaciones.md) - Ciclo de vida y expiración
- [Configuración](modulo_configuracion.md) - Settings de cron
- [Telegram Bot](modulo_telegram_bot.md) - Health check del bot