AIAnalytics - Parte 5: Configuracion avanzada, Cron automatico y personalizacion de la IA

Configuracion avanzada, RGPD y arquitectura

Panel de configuracion

Accede a la configuracion pulsando el icono de engranaje en la cabecera del dashboard. Se abre un modal con las secciones de configuracion.

Configuracion General

Parametros basicos del analisis:

Umbral de morosidad (%)

  • Por defecto: 15%
  • Que hace: Cuando el porcentaje de facturacion vencida supera este umbral, se genera una alerta de morosidad.
  • Ejemplo: Si tienes 100.000 EUR facturados y 18.000 EUR vencidos (18%), y el umbral es 15%, se generara una alerta.

Dias de inactividad del cliente

  • Por defecto: 90 dias
  • Que hace: Un cliente que no ha comprado en mas dias que este valor se considera "inactivo" en el modulo de Clientes.
  • Recomendacion: Ajusta segun tu ciclo de venta. Si vendes productos de compra recurrente mensual, baja a 45-60 dias. Si es venta puntual, sube a 180.

Email de alertas criticas

  • Por defecto: Vacio (desactivado)
  • Que hace: Si se configura, las alertas de severidad critica pueden notificarse por email.

Retencion de informes (dias)

  • Por defecto: 180 dias
  • Que hace: Los informes con estado "resuelto" mas antiguos que este numero de dias se eliminan automaticamente por el Cron.
  • Nota: Solo se eliminan informes ya resueltos. Los pendientes se conservan siempre.

Configuracion IA Local (Ollama)

Activar IA

  • Desactivado (solo reglas): El plugin funciona con analisis estadistico puro
  • Activado: Se conecta al backend configurado (Ollama, Groq o auto)

URL de Ollama

  • Por defecto: http://127.0.0.1:11434
  • Que hace: Direccion del servidor Ollama. Si ejecutas Ollama en otro servidor de tu red local, cambia la IP.
  • Ejemplo red local: http://192.168.1.100:11434

Modelo Ollama

Selecciona el modelo de IA a utilizar: Qwen 2.5 3B (recomendado), Qwen 2.5 7B, Llama 3.2 3B, Llama 3.1 8B, Mistral 7B, Gemma 2 9B, Phi-3 3.8B.

Botones de instalacion rapida (Linux)

  • Instalar Ollama: Ejecuta el script de instalacion oficial en el servidor
  • Descargar Modelo: Descarga el modelo seleccionado
  • Probar Conexion: Verifica que Ollama esta corriendo y muestra los modelos disponibles

Configuracion Groq (IA en la nube)

API Key de Groq

  • Por defecto: Vacio
  • Que hace: Clave de API para conectar con Groq. Obtenla gratis en console.groq.com
  • Formato: Empieza por gsk_...

Modelo Groq

  • Por defecto: llama-3.3-70b-versatile
  • Alternativas: llama-3.1-8b-instant, gemma2-9b-it
  • Fallback automatico: Si el modelo principal agota su cuota diaria, el plugin prueba automaticamente los modelos de fallback

Backend IA

  • Por defecto: auto
  • Opciones: auto (Ollama primero, Groq fallback), ollama (solo local), groq (solo nube), off (sin IA)

Probar Groq

Boton que verifica la conexion con la API de Groq y muestra el modelo configurado.

Personalidad IA

Prompt de sistema personalizado

  • Por defecto: Vacio (usa la personalidad predeterminada)
  • Que hace: Reemplaza completamente la personalidad del consultor IA

La personalidad predeterminada es un "Director de Inteligencia Empresarial" con 7 roles expertos (CEO, CFO, Director Comercial, COO, RRHH, Controller, Auditor).

Cuando personalizar

Personaliza el prompt si quieres que la IA:

  • Se especialice en tu sector (ej: "Eres un asesor financiero del sector retail")
  • Use terminologia especifica de tu industria
  • Se enfoque en ciertos aspectos del negocio
  • Tenga un tono diferente (mas formal, mas directo, etc.)

Ejemplo de prompt personalizado

Eres un asesor financiero especializado en el sector alimentario.
Tu prioridad es el control de margenes y la rotacion de stock perecedero.
Siempre menciona si un producto tiene riesgo de caducidad basandote en
la falta de movimiento. Responde en espanol, se directo y usa cifras.

Cumplimiento RGPD y AI Act

Marco legal

AIAnalytics cumple con:

  • RGPD (Reglamento General de Proteccion de Datos): Art. 6, 13, 17, 25, 28
  • AI Act (Ley de IA de la UE): Art. 6, 12, 14, 26, 50

Clasificacion de riesgo

El plugin se clasifica como riesgo minimo segun el AI Act porque:

  • Es un sistema de analisis interno de datos empresariales
  • No toma decisiones automatizadas vinculantes sobre personas fisicas
  • Todas las alertas requieren revision y accion manual del usuario (supervision humana)

Base juridica del tratamiento

  • Analisis interno: RGPD Art. 6(1)(f) — Interes legitimo del responsable del tratamiento
  • Datos de empleados: RGPD Art. 6(1)(b) — Ejecucion de contrato laboral
  • Chat consultor: RGPD Art. 6(1)(f) — Interes legitimo

Privacidad por diseno (Art. 25)

Cuando se usa Groq (API externa):

  • Los analizadores generan narrativas agregadas sin PII (nombres, emails, identificadores personales)
  • Los datos de clientes se envian por posicion, no por nombre
  • Las metricas son agregadas (totales, porcentajes, conteos)
  • La IA recibe solo lo necesario para analizar, no la base de datos completa

Cuando se usa Ollama:

  • Todos los datos se procesan en el propio servidor, sin transferencia externa

Zero Data Retention (Art. 28)

Groq aplica politica de Zero Data Retention a nivel de cuenta. Los datos enviados para analisis no se almacenan en los servidores de Groq tras generar la respuesta.

Consentimiento y transparencia (Art. 13)

El plugin incluye un sistema de consentimiento informado:

  1. Aviso de privacidad: Texto completo con finalidades, bases juridicas, destinatarios, derechos y clasificacion AI Act
  2. Aceptar: Registra el nick del usuario, la fecha y la version del aviso
  3. Revocar: Fuerza el backend a solo Ollama (local), bloqueando el envio a Groq
  4. Versionado: Si cambia la politica (version 2.0, 3.0...), se requiere nueva aceptacion

Derechos del interesado

El aviso de transparencia informa sobre los derechos RGPD:

  • Acceso (Art. 15), Rectificacion (Art. 16), Supresion (Art. 17)
  • Portabilidad (Art. 20), Oposicion (Art. 21)
  • Autoridad de control: AEPD (www.aepd.es)

Panel de cumplimiento

Desde configuracion se accede al estado de cumplimiento que verifica 6 puntos:

Verificacion Norma
Aviso de privacidad aceptado RGPD Art. 13
Privacidad por diseno (narrativas sin PII) RGPD Art. 25
Zero Data Retention en Groq RGPD Art. 28
Log de auditoria activo AI Act Art. 12 y 26
Supervision humana de alertas AI Act Art. 14
Clasificacion de riesgo minimo AI Act Art. 6

Se muestra un score de cumplimiento en porcentaje y nivel (conforme/parcial/no conforme).

Log de auditoria (AI Act Art. 12)

Cada uso de IA queda registrado en la tabla ai_audit_log:

  • Evento: tipo de operacion (analisis, chat, ask)
  • Backend: ollama o groq
  • Resultado: ok o error
  • Metadatos: tokens aproximados, tiempo en ms, anonimizacion aplicada, ZDR, base juridica, finalidad
  • Fecha: timestamp del evento

La auditoria se activa por defecto (auditoria_activa = 1) y tiene retencion minima de 180 dias (AI Act Art. 26). El sistema crea la tabla automaticamente la primera vez que se necesita.

Desde el panel se pueden consultar:

  • Los ultimos 50 registros de auditoria
  • Estadisticas: total de usos en 30 dias, errores, usos anonimizados, desglose por backend

Parametros de privacidad

Clave Por defecto Descripcion
anonimizacion_groq 1 Privacidad por diseno para Groq (RGPD Art. 25)
groq_zdr 1 Zero Data Retention en Groq (RGPD Art. 28)
auditoria_activa 1 Log de auditoria de uso IA (AI Act Art. 12)

Analisis automatico con Cron

Que es el Cron de AIAnalytics

El plugin incluye un trabajo programado que se ejecuta automaticamente cada 24 horas. Realiza:

  1. Analisis completo de los 9 modulos (igual que pulsar "Analisis Completo")
  2. Limpieza de informes antiguos resueltos segun la retencion configurada

Activar el Cron

El Cron viene activado por defecto (cron_activo = 1). Para desactivarlo, cambia el parametro en la configuracion.

Hora de ejecucion

  • Por defecto: 04:00 (madrugada, cuando hay menos actividad)
  • Parametro: cron_hora
  • El Cron de FacturaScripts debe estar configurado para que se ejecute periodicamente

Requisito: Cron de FacturaScripts

Para que el analisis automatico funcione, el cron del sistema operativo debe ejecutar el cron de FacturaScripts. Ejemplo para Linux:

*/10 * * * * php /var/www/facturascripts/vendor/bin/cron.php

Esto ejecuta el cron cada 10 minutos. AIAnalytics solo realizara el analisis una vez cada 24 horas gracias a isTimeForJob('ai-analysis', '24 hours').

Limpieza automatica

El Cron tambien ejecuta la limpieza que:

  • Busca informes con estado resuelto
  • Cuya fecha de creacion sea anterior a los dias de retencion configurados
  • Los elimina automaticamente

Tabla completa de parametros de configuracion

Clave Valor por defecto Descripcion
ollama_url http://127.0.0.1:11434 URL del servidor Ollama local
ollama_model qwen2.5:3b Modelo IA local a utilizar
usar_ia 0 Legacy: 1=Usar IA, 0=Solo reglas
backend_ia auto Selector de backend: auto, ollama, groq, off
groq_api_key (vacio) API Key de Groq
groq_model llama-3.3-70b-versatile Modelo de Groq a utilizar
cron_activo 1 Analisis automatico diario
cron_hora 04:00 Hora del analisis automatico
dias_retencion 180 Dias que se guardan los informes resueltos
email_alertas (vacio) Email para alertas criticas
umbral_morosidad_pct 15 Porcentaje de morosidad para alerta
umbral_inactividad_dias 90 Dias sin comprar = cliente inactivo
system_prompt (vacio) Prompt personalizado (vacio = predeterminado)
anonimizacion_groq 1 Privacidad por diseno para Groq
groq_zdr 1 Zero Data Retention en Groq
auditoria_activa 1 Log de auditoria de uso de IA

Arquitectura tecnica

Estructura de archivos del plugin

AIAnalytics/
  Init.php                    — Inicializacion, seed de 13 parametros + 3 RGPD
  Cron.php                    — Analisis diario automatico (9 modulos)
  facturascripts.ini          — Metadatos del plugin
  Controller/
    AIAnalytics.php           — Dashboard + 25+ acciones AJAX
    ListAIReport.php          — Listado de informes con filtros
  Lib/
    AIClient.php              — Factory: selector de backend (auto/ollama/groq/off)
    AnalysisEngine.php        — Motor: orquesta 9 modulos + chat + ask + healthScore
    OllamaClient.php          — Cliente HTTP para Ollama API (local)
    GroqClient.php            — Cliente HTTP para Groq API (nube) con fallback
    Config.php                — Sistema de configuracion con cache
    ExpertPrompts.php         — Prompts expertos por departamento (7 roles)
    DataCollector.php         — Consultas SQL (MySQL + PostgreSQL)
    ReportExporter.php        — Exportacion PDF + envio email
    Analyzers/
      Base.php                — Clase abstracta + enriquecimiento IA + narrativa
      Facturacion.php         — Analisis de facturacion
      Finanzas.php            — Analisis financiero
      Clientes.php            — Analisis de cartera
      Stock.php               — Analisis de inventario
      Procesos.php            — Analisis de embudo comercial
      Anomalias.php           — Deteccion de irregularidades
      Horarios.php            — Patrones y plazos
      RRHH.php                — Equipo: empleados, fichajes, imputaciones, proyectos
      Prevision.php           — Regresion lineal y proyeccion a 3 meses
    Privacy/
      AuditLogger.php         — Log de auditoria (AI Act Art. 12)
      ConsentManager.php      — Consentimiento y transparencia (RGPD Art. 13)
  Model/
    AIConfig.php              — Tabla ai_config (clave-valor)
    AIReport.php              — Tabla ai_reports (informes)
    AIChat.php                — Tabla ai_chat (historial chat)
    AIMetric.php              — Tabla ai_metrics (metricas)
  View/
    AIAnalytics.html.twig     — Vista completa (dashboard + chat + config)
  XMLView/
    ListAIReport.xml          — Definicion de la vista listado
  Table/
    ai_config.xml             — Definicion tabla configuracion
    ai_reports.xml            — Definicion tabla informes
    ai_chat.xml               — Definicion tabla chat
    ai_metrics.xml            — Definicion tabla metricas
  Translation/
    es_ES.json                — Traducciones al espanol

Tablas de base de datos

Tabla Uso
ai_config Configuracion clave-valor del plugin (16+ parametros)
ai_reports Informes de analisis con severidad, estado y detalle JSON
ai_chat Historial de conversaciones del chat
ai_metrics Metricas historicas
ai_audit_log Log de auditoria de uso de IA (creada automaticamente)

Flujo de comunicacion con Ollama

  1. OllamaClient conecta via HTTP a http://127.0.0.1:11434/api/chat
  2. Timeout de conexion: 5 segundos
  3. Timeout de generacion: 180 segundos (3 minutos)
  4. La respuesta se parsea como JSON
  5. Si falla la conexion, AIClient cae automaticamente al siguiente backend disponible

Flujo de comunicacion con Groq

  1. GroqClient conecta via HTTPS a https://api.groq.com/openai/v1/chat/completions
  2. Verificacion SSL activa (certificados verificados)
  3. Timeout de conexion: 8 segundos, timeout de respuesta: 60 segundos
  4. Si hay error 429 TPM (tokens por minuto): espera el tiempo indicado y reintenta
  5. Si hay error 429 TPD (tokens por dia): prueba con el siguiente modelo de fallback
  6. Cadena de fallback: llama-3.3-70b-versatilellama-3.1-8b-instantgemma2-9b-it
  7. Cada llamada se registra en el log de auditoria con tokens, tiempo y resultado

Flujo del AIClient (selector de backend)

  1. Lee el parametro backend_ia de configuracion
  2. Si es off: retorna null (sin IA)
  3. Si es auto u ollama: intenta conectar con Ollama. Si esta online, lo usa.
  4. Si es solo ollama y esta offline: retorna null
  5. Si es auto o groq: verifica que groq_api_key esta configurada. Si si, usa Groq.
  6. Cache por request: solo resuelve una vez, las llamadas siguientes usan la instancia cacheada
  7. reset() limpia la cache (se llama tras guardar configuracion)

Seguridad y privacidad

  • Datos 100% locales con Ollama: Toda la informacion se procesa en tu servidor
  • Narrativas sin PII con Groq: Los datos enviados a Groq son agregados, sin nombres ni identificadores
  • Zero Data Retention: Groq no almacena tus datos tras generar la respuesta
  • Log de auditoria: Cada uso de IA queda registrado con metadatos de privacidad
  • Sin telemetria: El plugin no comunica con ningun servidor externo salvo Groq (si esta configurado)
  • Acceso protegido: Solo usuarios autenticados de FacturaScripts acceden al plugin
  • AJAX con token: Todas las peticiones AJAX incluyen el token multireqtoken de FacturaScripts
  • Supervision humana: Todas las alertas requieren revision manual antes de actuar

Resolucion de problemas

Ollama no se detecta

  1. Verifica que el servicio esta corriendo: systemctl status ollama
  2. Prueba manualmente: curl http://127.0.0.1:11434/api/tags
  3. Revisa que la URL en configuracion sea correcta
  4. Si usas Docker, verifica que el puerto 11434 esta expuesto

Groq no conecta

  1. Verifica que tienes API key configurada (empieza por gsk_...)
  2. Prueba con el boton "Probar Groq" en configuracion
  3. Si da error 429, puede ser limite de cuota — el fallback automatico deberia activarse
  4. Verifica conexion a internet del servidor

El analisis tarda mucho

  • Con Ollama, un analisis completo puede tardar 1-3 minutos dependiendo del modelo y hardware
  • Con Groq, el analisis es rapido (segundos por modulo)
  • Sin IA, el analisis es casi instantaneo (solo SQL)
  • Modelos mas pequenos (3B) son mas rapidos que los grandes (7B, 9B)

No se generan alertas

  • Ejecuta primero un "Analisis Completo" desde el dashboard
  • Verifica que tienes datos en FacturaScripts (facturas, clientes, productos)
  • Revisa los umbrales de configuracion (puede que sean demasiado permisivos)

El chat no responde

  • Si ningun backend esta online, el chat muestra datos en formato texto
  • Verifica el estado con el badge de la cabecera
  • Prueba la conexion desde Configuracion (Ollama y/o Groq)
  • Si Groq da errores 429 repetidos, puede haberse agotado la cuota diaria

RRHH no muestra datos

  • El modulo RRHH necesita que esten instalados los plugins de RRHH de FacturaScripts
  • Usa la accion ajax-diag-rrhh para diagnosticar que tablas existen en tu base de datos
  • El modulo detecta automaticamente las tablas disponibles y adapta el analisis
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2026 FacturaScripts
0.0665s

Soporte