# 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**
