232 lines
15 KiB
Markdown
Executable File
232 lines
15 KiB
Markdown
Executable File
# Plan de Desarrollo y Estado del Proyecto
|
||
|
||
Este archivo es la guía oficial para el desarrollo del sistema de administración de bots. Lo actualizaremos con cada avance.
|
||
|
||
**Regla General:** Antes de crear cualquier archivo o módulo, el primer paso siempre será **verificar si ya existe** para analizar su estado y decidir si se debe completar, refactorizar o crear desde cero.
|
||
|
||
---
|
||
|
||
## 🟦 FASE 1 — Preparación del Proyecto
|
||
|
||
- [x] **Paso 1: Crear estructura base del proyecto**
|
||
- [x] **Paso 2: Crear archivo .env e inicializar variables**
|
||
- [x] **Paso 3: Crear conexión a base de datos (COMPARTIDA)**
|
||
|
||
## 🟩 FASE 2 — Base de Datos
|
||
|
||
- [x] **Paso 4: Crear tablas básicas del sistema**
|
||
- [x] **Paso 5: Crear tablas para cada plataforma**
|
||
|
||
## 🟨 FASE 3 — Autenticación
|
||
|
||
- [x] **Paso 6: Crear login.php**
|
||
- [x] **Paso 7: Crear panel principal después del login**
|
||
|
||
## 🟧 FASE 4 — Construcción de Plataformas
|
||
|
||
### 🔵 FASE 4.1 – PLATAFORMA DISCORD
|
||
|
||
- [x] **Paso 8: Crear la estructura interna de `/discord`** (Verificada)
|
||
- [x] **Paso 9: Crear el archivo `dashboard_discord.php`** (Verificado y funcional)
|
||
- [x] **Paso 10: Módulo de GALERÍA (COMPARTIDO)** (Verificado y funcional)
|
||
|
||
- [x] **Paso 11: Módulo de PLANTILLAS DISCORD**
|
||
- [x] **Verificar:** Revisar `list.php`, `create.php`, `edit.php`, `preview.php` y APIs asociadas.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Asegurar que la función de **crear** plantillas sea robusta (actualmente funcional pero mejorable).
|
||
- [x] Asegurar que la función de **listar** plantillas sea robusta (actualmente funcional pero mejorable).
|
||
- [x] Implementar la API para **eliminar** plantillas y conectar con el frontend.
|
||
- [x] Implementar la funcionalidad para **editar** plantillas.
|
||
- [x] Asegurar que la **previsualización** funcione correctamente.
|
||
- [x] Integrar el botón para insertar imágenes de la **galería** en el editor.
|
||
|
||
- [x] **Paso 12: Módulo de CREAR MENSAJE DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/messages/` (`create.php`) y API `/discord/api/messages/send.php`.
|
||
- [ ] **Implementar/Corregir:**
|
||
- [x] Interfaz para seleccionar destinatario (individual) e ingresar contenido.
|
||
- [x] Carga de plantillas en el editor.
|
||
- [x] Editor local con soporte de imágenes (Summernote + Galería).
|
||
- [x] Previsualización del mensaje.
|
||
- [x] API para enviar mensajes inmediatos a Discord.
|
||
- [x] Guardado del mensaje enviado en `mensajes_discord`.
|
||
- [x] **Mejorar:** Permitir selección de **múltiples destinatarios**.
|
||
- [x] **Implementar:** Funcionalidad de envío **programado**.
|
||
- [x] **Implementar:** Funcionalidad de envío **recurrente**.
|
||
|
||
- [x] **Paso 13: Módulo de ENVIADOS DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/messages/` (`sent.php`).
|
||
- [ ] **Implementar/Corregir:**
|
||
- [x] Página para listar mensajes enviados (con paginación).
|
||
- [x] **Mejorar:** Mostrar mensajes en todos los estados (enviado, pendiente, fallido, deshabilitado).
|
||
- [x] **Implementar:** Botón "Eliminar" (que cambie estado a 'deshabilitado' y elimine en Discord si es posible).
|
||
|
||
- [x] **Paso 14: Módulo de DESTINATARIOS DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/recipients/` (`list.php`) y APIs (`create.php`, `delete.php`).
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Interfaz para listar destinatarios (usuarios y canales).
|
||
- [x] Funcionalidad para **crear** nuevo destinatario (vía modal y API).
|
||
- [x] Funcionalidad para **eliminar** destinatario (vía API).
|
||
- [x] **Mejorar:** Mostrar y gestionar destinatarios de tipo "grupo".
|
||
- [x] **Implementar:** Funcionalidad para **editar** destinatarios.
|
||
- [x] **Implementar:** Funcionalidad para **expulsar** (requiere interacción con la API de Discord).
|
||
- [ ] **Integrar:** Sincronización con el webhook (se abordará en el Paso 20).
|
||
|
||
- [x] **Paso 15: Módulo de COMANDOS DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/commands/` (`list.php`).
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Página para listar comandos (reutiliza plantillas con comando asociado).
|
||
- [x] **Implementar:** Funcionalidad para **eliminar** un comando (implica eliminar la plantilla asociada).
|
||
- [x] **Considerar:** Si es necesario gestionar los Slash Commands de Discord vía API (más allá de la DB local). Por ahora, el plan indica "borrado completo" que apunta a la plantilla asociada.
|
||
|
||
- [x] **Paso 16: Módulo de IDIOMAS (COMPARTIDO)**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/shared/languages/` (`manager.php`).
|
||
- [x] **Implementar:** Crear la interfaz para gestionar idiomas y la integración con LibreTranslate.
|
||
- [x] Listado de idiomas.
|
||
- [x] Activar / Desactivar idiomas.
|
||
- [x] Sincronizar idiomas con LibreTranslate.
|
||
- [x] Actualizar bandera de idioma.
|
||
- [x] Prueba de traducción con LibreTranslate.
|
||
|
||
- [x] **Paso 17: Módulo de MENSAJE DE BIENVENIDA DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/welcome/` (`config.php`).
|
||
- [ ] **Implementar/Corregir:**
|
||
- [x] Configuración de activación/desactivación del mensaje.
|
||
- [x] Configuración para registrar usuario en BD.
|
||
- [x] Selección de canal destino.
|
||
- [x] Editor (Summernote) para el texto de bienvenida.
|
||
- [x] Botón para probar el mensaje (`send_test.php` API).
|
||
- [x] **Reintegrar:** Selección e inserción de **imagen opcional** (la UI HTML fue eliminada/comentada, pero la DB y JS de galería lo soportan).
|
||
- [x] **Implementar:** Selección de **idiomas** específicos para el mensaje de bienvenida (guardar en `idiomas_habilitados`).
|
||
|
||
- [x] **Paso 18: Módulo de LOGS DISCORD**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/views/logs/` (`list.php`).
|
||
- [x] **Implementar:** Crear la interfaz para visualizar los logs de Discord.
|
||
- [x] Listado de logs con paginación.
|
||
- [x] Filtrado por nivel, origen y búsqueda en descripción.
|
||
- [x] Visualización de detalles JSON en modal.
|
||
|
||
- [x] **Paso 19: Crear `test_discord_connection.php`**
|
||
- [x] **Verificar:** Revisar si el archivo ya existe (`discord/test_connection.php`).
|
||
- [x] **Implementar:** Crear un script simple para probar la conexión con la API de Discord.
|
||
- [x] Verificación de token.
|
||
- [x] Conexión con Discord API (@me).
|
||
- [x] Acceso al servidor Discord (Guild ID).
|
||
- [x] Listado de canales.
|
||
|
||
- [x] **Paso 20: Crear webhook de Discord**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/discord/webhook/` (`index.php`).
|
||
- [ ] **Implementar/Corregir:**
|
||
- [x] Verificación de firma de seguridad Discord (Ed25519) - Fallo seguro si extensión `sodium` no instalada.
|
||
- [x] Manejo de interacción `PING` (tipo 1).
|
||
- [x] Manejo básico de componentes de mensaje (tipo 3) para selección de idioma (`lang_select_`).
|
||
- [x] **Implementar:** Manejo de **comandos de aplicación (Slash Commands - tipo 2)**:
|
||
- [x] Detección y procesamiento de comandos como `/comandos`, `/agente`.
|
||
- [x] **Implementar:** Manejo de **mensajes entrantes** (directos o de canal, si aplica).
|
||
- [x] **Implementar:** **Registrar destinatarios** (ej. usuarios que interactúan por primera vez).
|
||
- [x] **Mejorar:** **Detectar idioma y traducir** (integración completa con LibreTranslate).
|
||
- [x] **Implementar:** Envío de **respuestas con imágenes y división de mensajes largos**.
|
||
- [x] **Integrar:** Sincronización con el webhook (tarea pendiente del Paso 14, ahora parte de este paso).
|
||
|
||
### 🟣 FASE 4.2 – PLATAFORMA TELEGRAM
|
||
|
||
- [x] **Paso 21: Crear estructura interna de `/telegram`**
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/`.
|
||
- [x] La estructura de directorios (`api/`, `controllers/`, `models/`, `public/`, `routes/`, `views/`, `webhook/`) ya existe.
|
||
- [x] **Paso 22: Crear `dashboard_telegram.php`** (Idéntico a Discord, Paso 9)
|
||
- [x] **Verificar:** Analizar `telegram/dashboard_telegram.php`.
|
||
- [x] **Implementar/Corregir:** Asegurar que sea funcional como panel principal de Telegram.
|
||
- [x] **Paso 23: Galería ya existe (no se duplica)** (Idéntico a Discord, Paso 10)
|
||
- [x] **Verificar:** El módulo de Galería (`/gallery`) es compartido y ya está implementado (Paso 10).
|
||
- [x] **Paso 24: Módulo de PLANTILLAS TELEGRAM** (Idéntico a Discord, Paso 11)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/templates/` y APIs asociadas.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Crear la interfaz (`list.php`, `create.php`, `edit.php`, `preview.php`) para plantillas Telegram.
|
||
- [x] Implementar APIs (`/telegram/api/templates/`).
|
||
- [x] Asegurar funciones de crear, listar, editar, eliminar y previsualizar.
|
||
- [x] Integrar botón para insertar imágenes de la galería en el editor.
|
||
- [x] **Paso 25: Módulo de CREAR MENSAJE TELEGRAM** (Idéntico a Discord, Paso 12)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/messages/` (`create.php`) y API `/telegram/api/messages/send.php`.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Interfaz para seleccionar destinatario(s) e ingresar contenido.
|
||
- [x] Carga de plantillas en el editor.
|
||
- [x] Editor local con soporte de imágenes (Summernote + Galería).
|
||
- [x] Previsualización del mensaje.
|
||
- [x] API para enviar mensajes inmediatos a Telegram.
|
||
- [x] Guardado del mensaje enviado en `mensajes_telegram`.
|
||
- [x] **Mejorar:** Permitir selección de **múltiples destinatarios**.
|
||
- [x] **Implementar:** Funcionalidad de envío **programado**.
|
||
- [x] **Implementar:** Funcionalidad de envío **recurrente**.
|
||
- [x] **Paso 26: Módulo de ENVIADOS TELEGRAM** (Idéntico a Discord, Paso 13)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/messages/` (`sent.php`).
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Página para listar mensajes enviados (con paginación).
|
||
- [x] **Mejorar:** Mostrar mensajes en todos los estados (enviado, pendiente, fallido, deshabilitado).
|
||
- [x] **Implementar:** Botón "Eliminar" (que cambie estado a 'deshabilitado' y elimine en Telegram si es posible).
|
||
- [x] **Paso 27: Módulo de DESTINATARIOS TELEGRAM** (Idéntico a Discord, Paso 14)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/recipients/` y APIs.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Interfaz para listar, crear, editar, eliminar destinatarios.
|
||
- [x] Implementar APIs (`/telegram/api/recipients/`).
|
||
- [x] **Mejorar:** Gestión de tipos de destinatario de Telegram (usuarios, canales, grupos).
|
||
- [x] **Implementar:** Funcionalidad para **expulsar** (requiere interacción con la API de Telegram).
|
||
- [ ] **Integrar:** Sincronización con el webhook (se abordará en el Paso 33).
|
||
- [x] **Paso 28: Módulo de COMANDOS TELEGRAM** (Idéntico a Discord, Paso 15)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/commands/`.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Página para listar comandos (reutiliza plantillas con comando asociado).
|
||
- [x] Funcionalidad para **eliminar** un comando.
|
||
- [x] **Paso 29: Idiomas (ya existe, se usa igual)** (Idéntico a Discord, Paso 16)
|
||
- [x] **Verificar:** El módulo de Idiomas (`/shared/languages`) es compartido y ya está implementado (Paso 16).
|
||
- [x] **Paso 30: Módulo de MENSAJE DE BIENVENIDA TELEGRAM** (Idéntico a Discord, Paso 17)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/welcome/`.
|
||
- [x] **Implementar/Corregir:**
|
||
- [x] Crear la interfaz (`config.php`) para configurar el mensaje de bienvenida.
|
||
- [x] API `/telegram/api/welcome/send_test.php` para probar mensaje.
|
||
- [x] Selección e inserción de imagen opcional.
|
||
- [x] Selección de idiomas específicos.
|
||
- [x] Botón "Únete al grupo".
|
||
- [x] **Paso 31: Módulo de LOGS TELEGRAM** (Idéntico a Discord, Paso 18)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/views/logs/` (`list.php`).
|
||
- [x] **Implementar:** Crear la interfaz para visualizar los logs de Telegram.
|
||
- [x] Listado de logs con paginación.
|
||
- [x] Filtrado por nivel, origen y búsqueda en descripción.
|
||
- [x] Visualización de detalles JSON en modal.
|
||
- [x] **Paso 32: Crear `test_telegram_connection.php`** (Idéntico a Discord, Paso 19)
|
||
- [x] **Verificar:** Analizar `telegram/test_connection.php`.
|
||
- [x] **Implementar:** Crear un script simple para probar la conexión con la API de Telegram.
|
||
- [x] Verificación de token.
|
||
- [x] Conexión con Telegram API (`getMe`, `getUpdates`).
|
||
- [x] Gestión de Webhook (set, delete, getInfo).
|
||
- [x] **Paso 33: Crear webhook de Telegram** (Idéntico a Discord, Paso 20)
|
||
- [x] **Verificar:** Analizar archivos existentes en `/telegram/webhook/`.
|
||
- [x] **Implementar:** Desarrollar la lógica del webhook para manejar mensajes, comandos y registros.
|
||
- [x] Verificación de `secret_token` del webhook.
|
||
- [x] Registro de destinatarios que interactúan.
|
||
- [x] Manejo de `MESSAGE_CREATE` (mensajes entrantes).
|
||
- [x] Manejo de comandos de texto (`/start`, `/help`, comandos de `plantillas_telegram`, `#grupo`).
|
||
- [x] Manejo de `CALLBACK_QUERY` (botones inline) para selección de idioma.
|
||
- [x] Detección de idioma y traducción de respuestas del bot.
|
||
- [x] **Implementar:** Envío de **respuestas con imágenes y división de mensajes largos**.
|
||
- [x] **Integrar:** Sincronización con el webhook.
|
||
|
||
### 🟥 FASE 5 — Módulos Compartidos Finales
|
||
|
||
- [x] **Paso 34: Implementar permisos por rol**
|
||
- [x] **Verificar:** Analizar tablas `roles` y `permisos` en `shared/database/schema.sql`.
|
||
- [x] **Definir Permisos Específicos:** Crear una lista de permisos necesarios para cada acción (crear, editar, eliminar, etc.) en módulos clave.
|
||
- [x] **Crear Helper de Permisos:** Implementar una función centralizada `hasPermission($permissionName, $platform = 'global')` en `shared/utils/helpers.php`.
|
||
- [x] **Integrar Permisos en APIs:** Añadir verificaciones de permisos al inicio de cada endpoint de API crítico.
|
||
- [x] **Integrar Permisos en Vistas:** Ocultar/mostrar elementos de UI (botones, enlaces) según los permisos del usuario.
|
||
- [x] **Paso 35: Implementar traducción completa del sistema**
|
||
- [x] **Crear Archivos de Traducción:** Crear archivos JSON (`es.json`, `en.json`, `pt.json`) en `shared/translations/`.
|
||
- [x] **Crear Helper de Traducción:** Implementar una función `__($key)` en `shared/translations/manager.php`.
|
||
- [x] **Refactorizar Vistas:** Reemplazar todas las cadenas de texto hardcoded con la función `__()`.
|
||
- [x] **Paso 36: Definir notificaciones internas**
|
||
- [x] **Crear sistema de notificaciones:** Implementar un sistema de notificaciones "toast" no intrusivas.
|
||
- [x] **Integrar notificaciones:** Reemplazar `alert()` con el nuevo sistema en toda la aplicación.
|
||
- [ ] **Paso 37: Pruebas de todo el sistema**
|
||
|
||
### 🟩 FASE 6 — Documentación
|
||
|
||
- [ ] **Paso 38: Documentar el proyecto**
|