{
  "projectPath": "C:\\xampp\\htdocs\\chatbot",
  "slug": "c-xampp-htdocs-chatbot",
  "updatedAt": "2026-06-24T13:04:01.959Z",
  "phases": {
    "knowledge": {
      "status": "done",
      "completedAt": "2026-06-24T13:04:01.958Z",
      "name": "Conocimiento",
      "summary": "Explorando el proyecto de forma estructurada para consolidar el conocimiento solicitado.\nGuardando el conocimiento consolidado en memoria Serena para uso futuro del agente.\n# Conocimiento consolidado — Chatbot XZonas Valencia\n\n> **Proyecto:** `C:\\xampp\\htdocs\\chatbot`  \n> **Memoria Serena:** `project_knowledge_consolidated`  \n> **Uso:** copiar a knowledge local o activar con `read_memory(\"project_knowledge_consolidated\")`\n\n---\n\n## 1. Resumen ejecutivo\n\nMonorepo PHP 8+ para **XZonas Valencia** con dos capas: **legacy** (`chatbot/`) en producción y **unificada** (`chatbot-unified/`) como evoluci",
      "fullText": "Explorando el proyecto de forma estructurada para consolidar el conocimiento solicitado.\nGuardando el conocimiento consolidado en memoria Serena para uso futuro del agente.\n# Conocimiento consolidado — Chatbot XZonas Valencia\n\n> **Proyecto:** `C:\\xampp\\htdocs\\chatbot`  \n> **Memoria Serena:** `project_knowledge_consolidated`  \n> **Uso:** copiar a knowledge local o activar con `read_memory(\"project_knowledge_consolidated\")`\n\n---\n\n## 1. Resumen ejecutivo\n\nMonorepo PHP 8+ para **XZonas Valencia** con dos capas: **legacy** (`chatbot/`) en producción y **unificada** (`chatbot-unified/`) como evolución con módulos, créditos y widgets.\n\nEl núcleo legacy orquesta envíos multicanal (WhatsApp Meta, SMS, Email) vía `ChatbotManager` y campañas masivas con opt-in obligatorio en `BulkMessagingSystem`.\n\nLa capa unificada añade `SuperChatbotManager`, router conversacional, sistema de créditos, marketing automatizado, paneles de compliance y cron jobs programables.\n\nStack: **PHP + MySQL** (`xzonasva_xzvlc_19uck`), **Monolog**, **Guzzle**, Redis opcional, **WhatsApp Business API** (Graph `v17.0`).\n\nDespliegue en `https://xzonasvalencia.com/admin/chatbot/` con autenticación unificada del panel admin (`auth_loader.php`).\n\n---\n\n## 2. Glosario\n\n| Término | Definición |\n|---------|------------|\n| **ChatbotManager** | Clase legacy central: envío, métricas, cola, webhooks, rate limit y health check. |\n| **SuperChatbotManager** | Evolución unificada: conversaciones, módulos, créditos, router y chat anunciante. |\n| **ChatbotFactory** | Singleton/factory para instanciar `ChatbotManager` sin auth automática (`SKIP_AUTO_AUTH`). |\n| **BulkMessagingSystem** | Motor de envío masivo WhatsApp: CSV, campañas, logs, consentimiento y rate limiting. |\n| **WhatsApp Meta API** | API oficial de Meta (Graph API) para mensajes, templates y webhooks. |\n| **Template / Plantilla** | Mensaje preaprobado por Meta; obligatorio para contacto proactivo fuera de ventana 24h. |\n| **Opt-in / Consentimiento** | Permiso explícito del usuario para marketing WhatsApp; tablas `bulk_consents` / `whatsapp_consents`. |\n| **WABA** | WhatsApp Business Account vinculada a Meta Business Manager. |\n| **Dry-run** | Modo simulación (`WHATSAPP_DRY_RUN=true`) sin envíos reales; útil en staging. |\n| **Webhook** | Endpoint `webhook.php`: GET verifica token Meta; POST recibe mensajes y delivery receipts. |\n| **Rate limit** | Throttling de envíos (p.ej. 10 msg/min en bulk) para respetar límites Meta. |\n| **MarketingModule** | Módulo unified: campañas, templates, consentimientos y cola de envíos. |\n| **ChatCreditsManager** | Gestión de créditos de anunciantes/usuarios para acciones del chatbot. |\n| **auth_loader.php** | Autenticación unificada del panel admin (`dash_auth_is_authenticated`). |\n| **Anunciante (Advertiser)** | Usuario comercial del portal; target del chatbot automático de onboarding. |\n| **Handoff** | Derivación de conversación bot → humano cuando el flujo no puede resolverse. |\n| **XZonas** | Portal de anuncios clasificados de Valencia; contexto de negocio del chatbot. |\n\n---\n\n## 3. FAQ dev\n\n### ¿Cuál es la diferencia entre `chatbot/` y `chatbot-unified/`?\n`chatbot/` es el sistema **legacy operativo** (panel admin, bulk messaging, webhook, APIs REST). `chatbot-unified/` es la **evolución arquitectónica** con módulos, créditos, widgets frontend, pagos (Stripe/PayPal) y cron de marketing. Ambos coexisten; producción actual apunta principalmente al legacy.\n\n### ¿Dónde configuro WhatsApp?\nVariables de entorno (`WHATSAPP_TOKEN`, `WHATSAPP_PHONE_NUMBER_ID`, `WHATSAPP_VERIFY_TOKEN`) y/o `chatbot/chatbot_config.php`. Webhook: `webhook.php`. Docs: `DEPLOY_CHECKLIST.md`, `WHATSAPP_FULL_ROADMAP.md`.\n\n### ¿Cómo arranco en local (XAMPP)?\n1. `cd chatbot && composer install`  \n2. Configurar `.env` o variables PowerShell (ver `README_STAGING.md`)  \n3. `php -S localhost:8000` + ngrok para webhook Meta  \n4. Probar: `php tests/test_whatsapp_live.php` (máx. 3 números de prueba)\n\n### ¿Cómo funciona la autenticación del panel?\nSesión PHP unificada vía `includes/dashboard/auth_loader.php`. Los archivos protegidos llaman `dash_auth_is_authenticated()` y redirigen si falla. Scripts CLI usan `SKIP_AUTO_AUTH` o `ChatbotFactory`.\n\n### ¿Qué tablas crea el bulk messaging automáticamente?\n`bulk_contacts`, `bulk_campaigns`, `bulk_send_log`, `bulk_consents`. El schema se crea al instanciar `BulkMessagingSystem`. Contactos sin opt-in se marcan `skipped_no_consent`.\n\n### ¿Qué cron jobs debo programar?\n- **Legacy:** `chatbot/bulk_cron.php` (campañas masivas)  \n- **Unified:** `chatbot-unified/cron/send_marketing_messages.php` (cada 1–5 min), `queue_worker.php`, `personalize_messages.php`, `auto_renew_anuncios.php`  \nScripts `.bat`/`.sh` en `chatbot-unified/cron/` para Task Scheduler o crontab.\n\n### ¿Dónde están los logs?\n`chatbot/logs/chatbot.log` (rotación Monolog). Configuración en `includes/logger.php` y `MONOLOG_CONFIGURATION.md`. Alertas CRITICAL vía Slack (`CHATBOT_SLACK_WEBHOOK`).\n\n### ¿Cómo migro la base de datos unified?\nEjecutar `chatbot-unified/setup/database_setup.sql` o scripts en `database/migrations/` (`quick_migrate.php`, `final_migrate.php`). Verificar con `verificar_migracion.php` (legacy) o `setup/verificar_servidor.php` (unified).\n\n---\n\n## 4. Checklist onboarding\n\n### Entorno\n- [ ] PHP 8+ en PATH (`C:\\xampp\\php`)\n- [ ] Composer instalado\n- [ ] MySQL accesible (local o remoto `217.76.139.18`)\n- [ ] Clonar/abrir workspace `C:\\xampp\\htdocs\\chatbot`\n- [ ] `composer install` en `chatbot/`\n\n### Configuración\n- [ ] Copiar plantilla: `chatbot-unified/setup/CREDENTIALS_TEMPLATE.php` → `CREDENTIALS_LIVE.php` (no commitear)\n- [ ] Definir variables WhatsApp en entorno o `.env` raíz\n- [ ] Revisar `chatbot/chatbot_config.php` y `includes/database_config.php`\n- [ ] Activar `WHATSAPP_DRY_RUN=true` en desarrollo\n\n### Base de datos\n- [ ] Importar `database_setup.sql` (unified) si se trabaja en módulos nuevos\n- [ ] Verificar tablas bulk existentes si se usa legacy\n- [ ] Ejecutar `verificar_migracion.php`\n\n### Autenticación y acceso\n- [ ] Entender flujo `auth_loader.php`\n- [ ] Acceder a `index.php` con credenciales admin del panel\n- [ ] Revisar `MANUAL_ACCESO.md`\n\n### WhatsApp / Meta\n- [ ] Leer `DEPLOY_CHECKLIST.md` y `WHATSAPP_FULL_ROADMAP.md`\n- [ ] Configurar webhook con ngrok en staging (`README_STAGING.md`)\n- [ ] Validar GET challenge en `webhook.php`\n- [ ] Ejecutar `tests/test_whatsapp_dryrun.php` → `test_whatsapp_live.php`\n\n### Operación\n- [ ] Revisar `production-status.php`\n- [ ] Configurar cron (`bulk_cron.php` y/o unified crons)\n- [ ] Configurar alertas Slack para CRITICAL\n- [ ] Leer `README_BULK_MESSAGING.md` si se trabaja en campañas\n\n### Convenciones del repo\n- [ ] Usar Serena MCP para exploración simbólica\n- [ ] No escanear `vendor/`, `node_modules/`, `Core/`, `Dinamic/` sin petición explícita\n- [ ] Leer docs en `chatbot-unified/docs/` antes de features nuevas\n\n---\n\n## 5. Prompts guardados\n\n### Bugfix\n```\nEn chatbot/ (legacy), el webhook WhatsApp devuelve 403 en verificación GET.\nRevisa webhook.php, WHATSAPP_VERIFY_TOKEN y chatbot_config.php.\nCompara hub.verify_token con hash_equals. Propón fix mínimo y prueba con curl de README_STAGING.md.\n```\n\n```\nBulkMessagingSystem marca todos los contactos como skipped_no_consent.\nInvestiga bulk_consents, importación CSV (columna opt_in) y hasConsent().\nFix sin romper campañas existentes.\n```\n\n```\nChatbotManager falla al conectar Redis en XAMPP local.\nRevisa initCache() y fallback cuando Redis no está disponible.\nSolución que funcione sin Redis en dev.\n```\n\n### Feature\n```\nAñadir soporte de plantillas WhatsApp aprobada en BulkMessagingSystem.\nUsar WhatsAppMetaProvider existente. Campos: template_name, language, parameters.\nPanel en bulk_messaging_panel.php. Opt-in obligatorio.\n```\n\n```\nImplementar estado handoff_to_human en SuperChatbotManager según CHATBOT_AUTOMATICO_PLAN.md.\nTabla chatbot_leads, notificación al panel conversations.php. Cambio mínimo en AdvertiserModule.\n```\n\n```\nCrear endpoint API en chatbot/api/ para listar campañas bulk con paginación.\nSeguir patrón de api/stats.php y api/metrics.php. Auth vía chatbot_auth.php.\n```\n\n### Refactor\n```\nExtraer lógica de rate limiting duplicada entre ChatbotManager::checkRateLimit y BulkMessagingSystem::executeCampaign.\nHelper compartido en includes/ sin cambiar comportamiento en producción.\n```\n\n```\nUnificar logging: migrar includes/logger_clean.php a Monolog según MONOLOG_CONFIGURATION.md.\nMantener compatibilidad con función chatbot_log(). Sin PII en logs.\n```\n\n```\nLimpiar bloques duplicados de require auth.php en index.php.\nUn solo punto de carga auth. Verificar que dash_auth sigue funcionando.\n```\n\n### Deploy\n```\nChecklist deploy WhatsApp a producción según DEPLOY_CHECKLIST.md.\nVerificar: composer install, env vars, webhook Meta, dry-run off, Monolog+Slack, permisos DB.\nLista de comandos PowerShell para Windows/XAMPP.\n```\n\n```\nConfigurar Task Scheduler Windows para chatbot-unified/cron/send_marketing_messages.php cada 5 min.\nUsar setup/setup_task_scheduler.ps1 como base. Documentar en comentario del script.\n```\n\n```\nValidar producción post-deploy con validate-production.php y production-status.php.\nReportar estado de providers WhatsApp/SMS/Email y conectividad DB.\n```\n\n### QA\n```\nEjecutar suite de tests en chatbot/tests/: test_webhook.php, test_whatsapp_dryrun.php, test_csv_parsing.php.\nReportar fallos con archivo y línea. No modificar vendor/.\n```\n\n```\nProbar flujo completo bulk: importar ejemplo_contactos.csv, crear campaña draft, ejecutar con WHATSAPP_DRY_RUN=true.\nVerificar bulk_send_log y estadísticas en bulk_messaging_panel.php.\n```\n\n```\nAuditar compliance WhatsApp: opt-in en bulk_consents y whatsapp_consents, templates aprobadas, evidencia proof.\nRevisar panel/whatsapp_consents.php y compliance_center.php. Informe de gaps.\n```\n\n---\n\n## Referencias rápidas\n\n| Recurso | Ruta |\n|---------|------|\n| Manual acceso | `chatbot/MANUAL_ACCESO.md` |\n| Deploy | `chatbot/DEPLOY_CHECKLIST.md` |\n| Staging/ngrok | `chatbot/README_STAGING.md` |\n| Bulk messaging | `chatbot/README_BULK_MESSAGING.md` |\n| Roadmap WhatsApp | `chatbot-unified/docs/WHATSAPP_FULL_ROADMAP.md` |\n| Plan chatbot auto | `chatbot-unified/docs/CHATBOT_AUTOMATICO_PLAN.md` |\n| Quick start | `chatbot-unified/setup/quick_start.ps1` |\n| DB schema unified | `chatbot-unified/setup/database_setup.sql` |\n\n---\n\n**Nota de seguridad:** credenciales reales están en `.env`, `chatbot_config.php` y `CREDENTIALS_LIVE.php`. No commitear ni incluir en prompts. Usar variables de entorno en producción.\n\nEl conocimiento quedó persistido en Serena como **`project_knowledge_consolidated`** para futuras sesiones del agente."
    }
  },
  "prompts": [],
  "notes": []
}
