Feat: Añadir panel de métricas con estadísticas por idioma, plataforma y servidor
- Crear página dedicada /metrics con gráficos usando Chart.js - Implementar función get_translation_stats() en database.py - Añadir endpoint /api/stats en panel/main.py - Mostrar métricas de traducciones por idioma, plataforma y servidor Discord - Agregar tarjeta de acceso rápido a Métricas en el Dashboard - Actualizar action_plan_pro.md con el progreso completado
This commit is contained in:
@@ -2,24 +2,32 @@
|
||||
|
||||
## 🎯 Progreso de Mejoras
|
||||
|
||||
- [ ] **1. Panel de Métricas (Analytics & Estadísticas)**
|
||||
- Agregar gráficos en el Dashboard (FastAPI/Jinja).
|
||||
- Contabilizar traducciones totales, por idioma y por plataforma.
|
||||
- [x] **1. Panel de Métricas (Analytics & Estadísticas)**
|
||||
- ✅ Página dedicada `/metrics` con gráficos usando Chart.js.
|
||||
- ✅ Métricas de traducciones totales, por idioma y por plataforma.
|
||||
- ✅ Métricas por servidor de Discord.
|
||||
- ✅ Función `get_translation_stats()` en `botdiscord/database.py`.
|
||||
- ✅ Endpoint `/api/stats` en `panel/main.py`.
|
||||
- ✅ Tarjeta de acceso rápido a Métricas en el Dashboard.
|
||||
|
||||
- [ ] **2. Rate Limiting (Prevención de Spam y Abusos)**
|
||||
- Limitar botones de Discord/Telegram a X usos por minuto por usuario.
|
||||
- Implementar mensajes efímeros de advertencia por spam.
|
||||
- [x] **2. Rate Limiting (Prevención de Spam y Abusos)**
|
||||
- ✅ Implementado en `botdiscord/ui.py`: máximo 1 clic por usuario/idioma cada 3 segundos.
|
||||
- ✅ Aviso efímero automático si el usuario excede el límite.
|
||||
|
||||
- [ ] **3. Sistema de Logging Real y Monitoreo (Observabilidad)**
|
||||
- Reemplazar `print()` por la librería estandar `logging` con guardado en disco rotatorio (archivos diarios).
|
||||
- Enmascarar errores y alertas.
|
||||
- [x] **3. Sistema de Logging Real y Monitoreo (Observabilidad)**
|
||||
- ✅ Módulo `utils/logger.py` con rotación de archivos diaria (14 días de historial).
|
||||
- ✅ Reemplazados todos los `print()` por `log.info()`, `log.warning()`, `log.error()`.
|
||||
|
||||
- [ ] **4. Reemplazo de Caché en RAM por Redis**
|
||||
- Configurar contenedor oficial de Redis en OMV (`docker-compose-redis.yaml`).
|
||||
- Adaptar `botdiscord/database.py` y `panel/main.py` para usar Redis si está disponible.
|
||||
- [x] **4. Reemplazo de Caché en RAM por Redis**
|
||||
- ✅ `utils/cache.py` creado con fallback a RAM si Redis no está disponible.
|
||||
- ✅ Caché en cascada en `panel/main.py` y `translate.py`: Redis → RAM → DB → LibreTranslate.
|
||||
- ✅ `docker-compose-redis.yaml` creado y Redis instalado en OMV.
|
||||
- ✅ Variables de entorno configuradas en `docker-compose.yml` y `.env.example`.
|
||||
|
||||
- [ ] **5. Sistema de "Health Check" de LibreTranslate**
|
||||
- Comprobar que el endpoint de traducción está vivo antes de lanzar errores, devolviendo mensaje de mantenimiento.
|
||||
- [x] **5. Sistema de "Health Check" de LibreTranslate**
|
||||
- ✅ Verificación de disponibilidad del endpoint `/languages` de LibreTranslate.
|
||||
- ✅ Resultado cacheado 30s para no sobrecargar el servidor.
|
||||
- ✅ Mensaje amigable `⚠️ Servicio de traducción en mantenimiento` cuando está caído.
|
||||
|
||||
---
|
||||
*Este documento guiará la transformación del ecosistema de bots a un entorno de producción masiva.*
|
||||
|
||||
Reference in New Issue
Block a user