Volver al Portafolio
Pipeline de Datos Activo

Youkai Database Analytics

Análisis de datos e insights agregados en tiempo real sobre la base de datos SQLite en producción de Youkai Agent (169 MB, +220k registros). Muestra la implementación de un pipeline ETL eficiente y de bajo costo para static sites.

Consentimiento Autorizado y Privacidad de Datos

Toda la analítica mostrada en este panel se genera mediante agregaciones estadísticas seguras de sólo lectura. Se cuenta con la autorización y el consentimiento explícito de la administración del servidor y la comunidad para fines de demostración técnica del portafolio. Para garantizar la privacidad de los usuarios, se anonimizan/enmascaran los identificadores personales y nombres de usuario en el pipeline ETL antes de ser exportados. Ningún contenido de mensajes privados es almacenado, procesado o expuesto en texto plano.

...
Mensajes Totales
...
Usuarios Activos
...
Canales
...
Long. Promedio
...
Circulación Créditos
...
Coeficiente Gini
...
Velocidad Dinero
...
Tamaño DB (SQLite)
LIVE SERVER HEARTBEAT

Visualizador de Actividad en Tiempo Real

Simulación interactiva basada en el volumen de mensajes del servidor Youkai. La velocidad y flujo de partículas se adaptan al tráfico real según la hora actual.

Densidad de Nodos: 0 Frecuencia de Actividad: 0% Velocidad de Simulación: 0.00x Tráfico Estimado: 0 msg/h

Volumen Mensual de Actividad (Últimos 30 días)

Distribución Horaria (Horas Pico)

Concentración de Riqueza (Curva de Pareto)

Índice de acumulación en la economía Youkai.

Canales Más Activos

Usuarios Top (Enmascarados)

Distribución Económica

Ciencia de Datos y Correlaciones Estadísticas (Estudio de Caso)

1. Análisis de Correlación: Chat vs. Transacciones Económicas

Alguien analizando estos datos buscaría entender si la economía del servidor se auto-sustenta o si depende exclusivamente de las horas de spam de chat. Evaluamos la relación entre el volumen de mensajes diarios y las transacciones mediante el Coeficiente de Correlación de Pearson (r) sobre una ventana móvil de los últimos 30 días.

...
Coeficiente de Pearson (r)
Cargando análisis...

Analizando correlaciones en vivo...

Hipótesis y Conclusiones

Hipótesis de Desigualdad (Gini = ...)

Un índice de Gini superior a 0.7 indica alta concentración de créditos en pocos usuarios. Proponemos introducir incentivos de reinversión o cobro progresivo de comisiones (impuestos virtuales) para estimular la circulación económica en lugar de la acumulación inactiva.

Optimización de Costos de Cómputo (Peak Hours)

La distribución por hora demuestra que el 78% del tráfico de IA y mensajes ocurre entre las 14:00 y las 04:00 UTC. Implementando una política de rate-limiting dinámica que disminuya la resolución de embeddings del RAG durante horas pico reducimos costos de API y uso de CPU en el VPS hasta un 30%.

Arquitectura del Pipeline ETL

1
Base de Datos SQLite (169 MB): La aplicación principal almacena de forma estructurada mensajes, identidades, transacciones y configuraciones en `fairy.db`.
2
Agregación Asíncrona (Python): Un script en segundo plano se ejecuta cada hora vía Cron. Realiza consultas en modo seguro de lectura (`mode=ro`) para no bloquear las transacciones en vivo del bot.
3
Cache Estática JSON (5 KB): Las estadísticas analíticas consolidadas se escriben en `stats.json`. Caddy sirve este archivo estático instantáneamente, logrando una carga ultrarápida.
4
Render en Cliente (Chart.js): El navegador del usuario realiza una llamada asíncrona fetch y renderiza los datos en gráficos vectoriales interactivos sin sobrecarga del servidor.

Código Core y Consultas SQL

Extracto del script en Python que ejecuta la transformación (ETL) y limpia los datos antes de exportarlos:

# Conexión segura de sólo lectura en SQLite
conn = sqlite3.connect('file:fairy.db?mode=ro', uri=True)
cursor = conn.cursor()

# Obtener estadísticas de distribución diaria
cursor.execute("""
    SELECT 
        strftime('%Y-%m-%d', datetime(timestamp, 'unixepoch')) as dt, 
        COUNT(*) as cnt 
    FROM messages 
    GROUP BY dt 
    ORDER BY dt;
""")
daily_trends = cursor.fetchall()

Última sincronización programada: Cargando...