Files
openccb/TOKEN_LIMITS_COMPLETE_SUMMARY.md
T

7.4 KiB

Token Limits - Implementación 100% Completa

ESTADO: COMPLETADO (100%) - 2026-03-23

Versión: OpenCCB 0.2.4
Commits: 5 commits en el día


📊 Implementación Completa

Phase 1: Database + API

  • Migración de base de datos
  • Funciones SQL (check_token_limit, get_user_usage_stats)
  • API Endpoints para gestión de límites
  • Módulo common::token_limits

Phase 2: UI Dashboard + User Management

  • Token Usage Dashboard mejorado
  • User Management con columna de límites
  • Admin Dashboard con card de AI Token Usage
  • Edición de límites en tiempo real
  • Alertas visuales de uso

Phase 3: Sistema de Alertas Automáticas

  • Trigger SQL en ai_usage_logs
  • Notificaciones al 80%, 90%, 100%
  • Tabla token_limit_alerts para historial
  • Función send_token_limit_notification()

Phase 4: Enforce Automático en Handlers

  • generate_quiz (2000 tokens)
  • generate_course (5000 tokens)
  • generate_hotspots (2000 tokens)
  • generate_role_play (2500 tokens)
  • summarize_lesson (1500 tokens)
  • chat_with_tutor (1000 tokens) - LMS
  • evaluate_audio_response (1500 tokens) - LMS

🎯 Dónde Encontrar Cada Feature

1. Admin Dashboard

URL: http://localhost:3000/admin

Qué verás:

  • Card "AI Token Usage" (4ta card)
  • Total tokens (formato compacto)
  • Total requests • Costo USD
  • Link a Token Usage Dashboard

2. Token Usage Dashboard

URL: http://localhost:3000/admin/token-usage

Features:

  • Tabla editable de usuarios
  • Columna "Límite Mensual" con editor ✏️
  • Columna "% Usado" con barra de progreso
  • Alertas amarillas (>80%) y rojas (>100%)
  • Ordenar por % usado

3. User Management

URL: http://localhost:3000/admin/users

Features:

  • Columna "Token Limit"
  • Badge de % usado con color
  • Mini barra de progreso

4. Notificaciones de Alerta

Dónde: Icono de campana en el header

Mensajes:

  • 80%: "📊 80% de Tokens IA Utilizados"
  • 90%: " 90% de Tokens IA Utilizados"
  • 100%: "⚠️ Límite de Tokens IA Excedido"

🚀 Cómo Configurar

Configuración Inicial (SQL)

-- Ver configuración actual
SELECT email, role, monthly_token_limit, token_limit_reset_day
FROM users ORDER BY role, email;

-- Configurar por rol
UPDATE users SET monthly_token_limit = 50000 WHERE role = 'student';
UPDATE users SET monthly_token_limit = 200000 WHERE role = 'instructor';
UPDATE users SET monthly_token_limit = 0 WHERE role = 'admin';

Editar Límite Individual (UI)

  1. Navegar a /admin/token-usage
  2. Buscar usuario en la tabla
  3. Clic en ✏️ junto al límite
  4. Ingresar nuevo valor (0 = ilimitado)
  5. Clic en ✓ para guardar

🔔 Sistema de Alertas

Cómo Funciona

  1. Trigger en ai_usage_logs INSERT
  2. Calcula uso mensual del usuario
  3. Compara con su límite mensual
  4. Envía notificación si alcanza 80%, 90%, o 100%
  5. Registra alerta para no repetir en el mismo mes

Niveles

% Mensaje Acción
80% 📊 Warning Monitorear uso
90% Critical Reducir uso de IA
100% ⚠️ Error Contacto admin

🚫 Enforce Automático

Qué Pasa Cuando Se Excede el Límite

  1. Usuario intenta usar función de IA
  2. Sistema verifica: check_ai_token_limit()
  3. Si excede límite → HTTP 429 Too Many Requests
  4. Mensaje: "Monthly AI token limit exceeded"
  5. Usuario debe contactar admin

Funciones Protegidas

CMS (5):

  • generate_quiz → 2000 tokens
  • generate_course → 5000 tokens
  • generate_hotspots → 2000 tokens
  • generate_role_play → 2500 tokens
  • summarize_lesson → 1500 tokens

LMS (2):

  • chat_with_tutor → 1000 tokens
  • evaluate_audio_response → 1500 tokens

📊 Monitoreo

Queries Útiles

-- Top usuarios por uso
SELECT 
    u.email,
    u.role,
    u.monthly_token_limit,
    SUM(au.tokens_used) as used_tokens,
    ROUND((SUM(au.tokens_used)::NUMERIC / 
        CASE WHEN u.monthly_token_limit = 0 THEN 1 
             ELSE u.monthly_token_limit END * 100), 2) as percentage
FROM users u
LEFT JOIN ai_usage_logs au ON u.id = au.user_id
    AND au.created_at >= DATE_TRUNC('month', NOW())
GROUP BY u.id
ORDER BY percentage DESC;

-- Uso por día
SELECT 
    DATE(created_at) as date,
    COUNT(*) as requests,
    SUM(tokens_used) as total_tokens
FROM ai_usage_logs
WHERE created_at >= NOW() - INTERVAL '30 days'
GROUP BY DATE(created_at)
ORDER BY date DESC;

-- Alertas enviadas
SELECT 
    u.email,
    n.title,
    n.created_at
FROM notifications n
JOIN users u ON n.user_id = u.id
WHERE n.notification_type = 'token_limit_alert'
ORDER BY n.created_at DESC;

📁 Archivos Modificados

Backend (8 archivos)

  • shared/common/src/token_limits.rs
  • shared/common/src/lib.rs
  • services/cms-service/src/handlers_admin.rs
  • services/cms-service/src/handlers.rs
  • services/cms-service/src/main.rs
  • services/lms-service/src/handlers.rs
  • services/cms-service/migrations/20260323000000_monthly_token_limits.sql
  • services/cms-service/migrations/20260323000001_token_limit_alerts.sql

Frontend (3 archivos)

  • web/studio/src/app/admin/token-usage/page.tsx
  • web/studio/src/app/admin/users/page.tsx
  • web/studio/src/app/admin/page.tsx

Documentación (5 archivos)

  • TOKEN_LIMITS_GUIDE.md
  • TOKEN_LIMITS_STATUS.md
  • TOKEN_LIMITS_UI_COMPLETE.md
  • TOKEN_LIMITS_FINAL.md
  • TOKEN_LIMITS_COMPLETE_SUMMARY.md (este archivo)

🧪 Testing Checklist

  • Navegar a /admin
  • Ver card "AI Token Usage"
  • Hacer clic en "View Details"
  • Navegar a /admin/token-usage
  • Ver tabla con usuarios y límites
  • Ordenar por "% Usado"
  • Editar límite de un usuario (✏️)
  • Ver alerta amarilla (>80%)
  • Ver alerta roja (>100%)
  • Navegar a /admin/users
  • Ver columna "Token Limit"
  • Configurar límites por rol (SQL)
  • Probar función de IA (quiz/course)
  • Verificar enforce automático (429 error)
  • Ver notificaciones de alerta

🎓 Ejemplo de Uso Completo

1. Configuración Inicial

-- Configurar límites
UPDATE users SET monthly_token_limit = 50000 WHERE role = 'student';
UPDATE users SET monthly_token_limit = 200000 WHERE role = 'instructor';
UPDATE users SET monthly_token_limit = 0 WHERE role = 'admin';

2. Monitoreo Semanal

  1. Ir a /admin/token-usage
  2. Ordenar por "% Usado"
  3. Identificar usuarios con >80%
  4. Ajustar límites si es necesario

3. Alertas Automáticas

El sistema automáticamente:

  • Detecta cuando usuario alcanza 80%, 90%, 100%
  • Envía notificación en plataforma
  • Registra alerta (una vez por umbral/mes)

4. Enforce Automático

Cuando usuario excede límite:

  • Intenta generar quiz → Error 429
  • Intenta chatear con tutor → Error 429
  • Mensaje: "Monthly AI token limit exceeded"
  • Debe contactar admin para aumento

📞 Soporte

Documentación Completa: TOKEN_LIMITS_GUIDE.md
UI Guide: TOKEN_LIMITS_UI_COMPLETE.md
Implementation: TOKEN_LIMITS_FINAL.md
Issues: Reportar en GitHub


🏆 Logros del Día

5 Commits realizados
4 Phases completadas
7 Handlers protegidos
3 Alertas automáticas
100% Feature Complete


Implementado por: Equipo de Desarrollo OpenCCB
Fecha: 2026-03-23
Versión: 0.2.4
Estado: Production Ready