# SKEEN Derma Experts — Sistema Integral de Gestión Clínica **Cliente:** SKEEN Derma Experts **Contrato:** $182,500 MXN — 8 semanas (29 junio – 24 agosto 2026) **Repositorio:** https://git.consultoria-as.com/consultoria-as/SKEEN-Proyecto **Servidor actual:** Hetzner VPS (22 GB RAM / 6 vCPU / 77 GB SSD) **Fecha de documentación:** 16 de julio de 2026 --- ## Tabla de Contenidos 1. [Visión General](#visión-general) 2. [Arquitectura del Sistema](#arquitectura-del-sistema) 3. [Componentes del Proyecto](#componentes-del-proyecto) 4. [Estado Actual](#estado-actual) 5. [Inicio Rápido](#inicio-rápido) 6. [URLs y Puertos](#urls-y-puertos) 7. [Documentación Detallada](#documentación-detallada) 8. [Datos del Cliente Pendientes](#datos-del-cliente-pendientes) 9. [Comandos de Operación](#comandos-de-operación) 10. [Seguridad](#seguridad) 11. [Contribución](#contribución) 12. [Licencia](#licencia) --- ## Visión General Este proyecto implementa un sistema integral de gestión clínica para **SKEEN Derma Experts**, una clínica dermatológica ubicada en Playas de Rosarito, BC, México. El sistema sustituye al software legacy (`https://sistema.skeenmx.app/`) y unifica: - **WhatsApp Business** como canal principal de comunicación con pacientes. - **IA conversacional** (Hermes + modelo Qwen3.6 de Nan Builders) para atención automatizada. - **Odoo 17** como ERP/CRM central (pacientes, citas, ventas, pagos, monedero, inventario). - **WACRM** como inbox compartido, pipelines Kanban y automatizaciones no-code. - **Frontend React** como panel de control unificado para recepción, médicos y administración. - **Supabase self-hosted** como backend de datos para WACRM y futuras integraciones. ### Objetivos del Proyecto | Objetivo | Métrica | |----------|---------| | Reducir no-shows | Recordatorios automáticos 24h antes | | Aumentar re-agendamiento | Re-engagement de pacientes inactivos (90 días) | | Ahorrar tiempo de recepción | 10–15 horas/semana en agendamiento manual | | Mejorar experiencia del paciente | Respuesta inmediata 24/7 vía Sofía | | Centralizar información | Un solo sistema para citas, ventas, pagos e inventario | --- ## Arquitectura del Sistema ``` ┌─────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ WhatsApp │──────│ Meta Cloud API │──────│ WACRM │ │ (Meta) │ │ (Oficial) │ │ (Next.js 16) │ └─────────────┘ └─────────────────┘ │ Inbox + CRM │ │ Pipelines │ └────────┬─────────┘ │ ┌────────────────────────┼────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ Hermes │ │ Bridge │ │ Supabase │ │ Gateway │◄───────│ Webhook │ │ (PostgreSQL) │ │ (IA) │ │ (Node.js) │ │ + Auth + RLS │ └──────┬──────┘ └─────────────────┘ └────────┬─────────┘ │ │ ▼ ▼ ┌─────────────┐ ┌──────────────────┐ │ Nan Builders │ │ Odoo 17 │ │ (Qwen3.6) │ │ (ERP/CRM) │ └─────────────┘ │ Citas, Ventas, │ │ Pagos, Monedero │ └────────┬─────────┘ │ ┌────────────────────────────────────────────────────┘ │ ▼ ┌─────────────┐ │ Frontend │ │ React 18 │ │ (Vite + │ │ Tailwind) │ └─────────────┘ ``` ### Flujo de Datos Principal 1. **Paciente escribe por WhatsApp** → Meta Cloud API → WACRM. 2. **WACRM** registra contacto, conversación y mensaje; dispara automatización. 3. **Automatización** envía webhook al **Bridge SKEEN** (`:8090`). 4. **Bridge** consulta a **Nan Builders** (Qwen3.6) con el contexto de Sofía. 5. **Respuesta generada** se envía de vuelta a WACRM → WhatsApp. 6. **Sofía** puede consultar Odoo vía API para: - Catálogo de servicios (`skeen-rag`). - Agendar citas (`skeen-agendar`). - Consultar saldo/monedero (`skeen-monedero`). - Procesar pagos (`skeen-pagos`). 7. **Frontend React** muestra citas, pacientes, ventas, mensajes WACRM y leads en tiempo real. --- ## Componentes del Proyecto ### 1. Frontend React (`frontend/`) **Tecnologías:** React 18, Vite, TypeScript, Tailwind CSS, React Router, Recharts, Axios. **Rol:** Panel de control unificado para recepción, médicos y administración. **Secciones:** - Dashboard (stats, citas del día, ventas). - Agenda / Calendario (crear, editar, cancelar citas). - Pacientes (búsqueda, expediente, historial). - Servicios (catálogo con precios y paquetes). - Ventas / Corte de caja. - Pagos / Adeudos. - Monedero digital (puntos de fidelidad). - Inventario (productos y consumibles). - WACRM Mensajes (conversaciones de WhatsApp). - WACRM Leads (pipelines Kanban). - Reportes y analytics. **Build:** `npm run build` → desplegado en `/var/www/skeen-frontend` vía nginx. ### 2. Frontend Homenest (`frontend-homenest/`) **Tecnologías:** React 18, Vite, TypeScript, Tailwind CSS. **Rol:** Versión alternativa del frontend con diseño "Homenest" (basado en la guía de marca de designmd.ai). No está en uso actualmente; se mantiene como referencia. ### 3. Módulos Odoo Custom (`odoo-addons/`) Odoo 17 Community con módulos personalizados para SKEEN: | Módulo | Propósito | |--------|-----------| | `skeen_citas` | Gestión de citas médicas, disponibilidad, paquetes de sesiones. | | `skeen_pacientes` | Extensión de `res.partner` para pacientes, expedientes médicos. | | `skeen_monedero` | Sistema de puntos/fidelidad (1 punto = $1 MXN por cada $10 gastados). | | `skeen_pagos` | Pagos, adeudos, integración futura Stripe/MercadoPago. | | `skeen_ventas` | Ventas, corte de caja, comisiones, metas. | | `skeen_inventario` | Inventario de productos y consumibles. | | `skeen_whatsapp` | API REST para Hermes/WACRM y Frontend React. | **Base de datos:** PostgreSQL (`skeen_odoo`) **Puerto:** `8069` **Usuario admin:** `admin` / contraseña almacenada en `odoo.conf` ### 4. WACRM (`wacrm/`) **Fork:** https://github.com/ArnasDon/wacrm (MIT) **Rol:** Inbox compartido de WhatsApp, CRM, pipelines, automatizaciones no-code. **Características:** - Shared inbox multi-agente. - Contactos, tags, campos personalizados. - Pipelines Kanban (Lead → Consulta → Tratamiento → Recurrente). - Automatizaciones visuales. - Broadcasts con templates Meta. - API REST pública (`/api/v1/*`). - Webhooks outbound firmados con HMAC-SHA256. **Puerto:** `3000` **Backend:** Supabase (PostgreSQL + Auth + Realtime) ### 5. Hermes + Bridge (`hermes/`) **Hermes:** Agente IA autónomo de Nous Research. **Modelo:** Qwen3.6 via `https://api.nan.builders/v1` **Bridge:** Servidor Node.js (`webhook-bridge.js`) que conecta WACRM con la API de Nan Builders. **Skills disponibles:** - `skeen-rag`: Catálogo de servicios, precios, paquetes. - `skeen-agendar`: Agendamiento de citas en Odoo. - `skeen-pagos`: Consulta de saldo y generación de links de pago. - `skeen-monedero`: Consulta y redención de puntos. - `skeen-recordatorios`: Recordatorios automáticos (heartbeat cada 30 min). **Puertos:** - Hermes Gateway: `8080` (API) - Hermes Serve: `9119` (Dashboard) - Bridge Webhook: `8090` ### 6. Migración (`migracion/`) Scripts para extraer datos del sistema legacy e importarlos a Odoo: - `importar_a_odoo.py`: Importación principal de pacientes, servicios, citas, ventas, pagos. - `importar_servicios_inventario.py`: Importación de catálogo de servicios e inventario desde CSV. - `extraer_skeen.py`: Extracción de datos del sistema legacy (requiere autorización). - `ejecutar_migracion.sh`: Script wrapper de ejecución. ### 7. Scripts (`scripts/`) - `skeen-start-all.sh`: Inicia todo el ecosistema. - `skeen-stop-all.sh`: Detiene todo el ecosistema. - `skeen-start-odoo.sh`: Inicia solo Odoo. - `odoo-test-data.py`: Pruebas de datos en Odoo. - `simular_meta_webhook.py`: Simulador de webhook de Meta para testing. ### 8. Infraestructura (`infra/`) - `odoo.conf`: Configuración de Odoo. - `docker-compose.dev.yml`: Desarrollo local (roadmap-hermes). --- ## Estado Actual ### ✅ Completado | Área | Estado | |------|--------| | Supabase self-hosted | Funcionando (Docker healthy) | | WACRM | Funcionando (build producción) | | Odoo 17 + módulos custom | Funcionando | | Frontend React "SKEEN Brand" | Funcionando (nginx) | | Hermes Gateway + Bridge | Funcionando | | Integración WACRM ↔ Hermes | Funcionando (flujo end-to-end) | | Integración Odoo ↔ Frontend | Funcionando | | Integración WACRM ↔ Odoo | Funcionando (proxy/cache) | | Catálogo de servicios con paquetes | Funcionando | | Agendamiento normal y paquetes | Funcionando | | Script de importación CSV | Funcionando | | Documentación | En progreso | ### ⚠️ Pendiente | Área | Bloqueo | |------|---------| | Número WhatsApp Business real | Cliente debe verificar en Meta | | Meta App ID / Secret / Token | Cliente debe crear app en Meta Developers | | Templates de WhatsApp aprobados | Subir y esperar aprobación de Meta | | Lista de servicios real | Cliente debe enviar CSV | | Stripe / MercadoPago | Cliente debe entregar keys | | Dominio skeen.mx | DNS no apuntado aún | | SSL / HTTPS | Configurar con Let's Encrypt | | Backups automatizados | Configurar cron | | Monitoreo Uptime Kuma | Configurar | --- ## Inicio Rápido ### Requisitos - Ubuntu 22.04+ - Docker + Docker Compose - Node.js 20+ - Python 3.12+ - PostgreSQL 16 - nginx ### Instalación ```bash # Clonar el repositorio git clone https://git.consultoria-as.com/consultoria-as/SKEEN-Proyecto.git cd SKEEN-Proyecto # Instalar dependencias del frontend cd frontend && npm install && cd .. # Configurar variables de entorno cp wacrm/.env.local.example wacrm/.env.local # Editar wacrm/.env.local con credenciales reales # Iniciar todo ./scripts/skeen-start-all.sh ``` ### Verificación ```bash # Estado de servicios ss -tlnp | grep -E "3000|5173|8069|8000|8090|8644|8080|9119" # Health checks curl http://localhost:8069/web/health curl http://localhost:8090/health curl http://localhost:8069/skeen/frontend/v1/health ``` --- ## URLs y Puertos | Servicio | URL Local | Puerto | Descripción | |----------|-----------|--------|-------------| | Frontend React | http://localhost:5173 | 5173 | Dev server Vite | | Frontend React (prod) | http://192.168.10.114 | 80 | Nginx | | Odoo | http://localhost:8069 | 8069 | ERP/CRM | | WACRM | http://localhost:3000 | 3000 | Inbox WhatsApp | | Supabase Kong | http://localhost:8000 | 8000 | API Gateway | | Supabase PostgreSQL | localhost:5433 | 5433 | Base de datos | | Hermes Gateway | http://localhost:8080 | 8080 | API del agente | | Hermes Serve | http://localhost:9119 | 9119 | Dashboard Hermes | | Bridge Webhook | http://localhost:8090 | 8090 | Webhook WACRM→Hermes | --- ## Documentación Detallada | Documento | Contenido | |-----------|-----------| | [docs/arquitectura.md](docs/arquitectura.md) | Arquitectura técnica, diagramas, decisiones de diseño. | | [docs/instalacion.md](docs/instalacion.md) | Guía paso a paso de instalación y configuración. | | [docs/configuracion.md](docs/configuracion.md) | Variables de entorno, credenciales, endpoints. | | [docs/api.md](docs/api.md) | Referencia de endpoints REST de Odoo y WACRM. | | [docs/skills-hermes.md](docs/skills-hermes.md) | Documentación de skills de Hermes y prompts de Sofía. | | [docs/migracion.md](docs/migracion.md) | Guía de migración de datos legacy a Odoo. | | [docs/seguridad.md](docs/seguridad.md) | Políticas de seguridad, manejo de secretos, HMAC. | | [docs/mantenimiento.md](docs/mantenimiento.md) | Monitoreo, backups, troubleshooting. | | [docs/ANALISIS_SKEEN_SISTEMA.md](docs/ANALISIS_SKEEN_SISTEMA.md) | Análisis del sistema legacy actual. | | [docs/ROADMAP_SKEEN_MEJORA.md](docs/ROADMAP_SKEEN_MEJORA.md) | Roadmap de mejoras y fases del proyecto. | | [docs/ESTADO_PROYECTO.md](docs/ESTADO_PROYECTO.md) | Estado detallado del proyecto. | --- ## Datos del Cliente Pendientes Cuando SKEEN entregue estos datos, se conectan en los siguientes lugares: | Dato | Dónde se usa | Archivo / UI | |------|--------------|--------------| | Número WhatsApp Business verificado | Meta Developers + WACRM | WACRM Settings → WhatsApp | | Meta App ID + App Secret | WACRM webhook signature | `wacrm/.env.local` (`META_APP_SECRET`) | | Meta Access Token + WABA ID + Phone Number ID | Envío/recepción WhatsApp | WACRM Settings → WhatsApp | | Templates de WhatsApp aprobados | Automatizaciones y campañas | WACRM + Meta Business Manager | | Lista de servicios y precios (CSV) | Catálogo + Odoo | `migracion/importar_servicios_inventario.py` | | Horarios de atención | Agendamiento | Skill `skeen-agendar` + Odoo `skeen_citas` | | Stripe / MercadoPago keys | Pagos | Odoo `skeen_pagos` + skill `skeen-pagos` | | Dominio skeen.mx | DNS + Nginx | Configuración DNS | | Logo / branding | WACRM + Frontend | Assets y configuración | --- ## Comandos de Operación ### Iniciar / Detener ```bash # Iniciar todo el ecosistema ./scripts/skeen-start-all.sh # Detener todo ./scripts/skeen-stop-all.sh ``` ### Logs ```bash tail -f /tmp/wacrm.log tail -f /tmp/hermes-bridge.log tail -f /tmp/odoo.log tail -f /tmp/frontend.log tail -f /tmp/hermes-gateway.log tail -f /tmp/hermes-serve.log ``` ### Simular mensaje de WhatsApp ```bash python3 scripts/simular_meta_webhook.py ``` ### Acceder a bases de datos ```bash # PostgreSQL Odoo sudo -u postgres psql -d skeen_odoo # PostgreSQL Supabase docker exec supabase-db psql -U postgres -d postgres ``` ### Recompilar WACRM ```bash cd wacrm && npm run build ``` ### Recompilar Frontend ```bash cd frontend && npm run build cp -r dist/* /var/www/skeen-frontend/ ``` --- ## Seguridad - **No commitear secretos:** `.env`, `.env.local`, `*.key`, `*.pem`, tokens de Meta, keys de Stripe. - **Webhooks WACRM:** Firman con HMAC-SHA256 usando `WACRM_WEBHOOK_SECRET`. - **Odoo API:** Autenticación con API key para endpoints JSON-RPC. - **Supabase:** Row-Level Security (RLS) habilitado en tablas sensibles. - **Supabase self-hosted:** Solo escuchar en localhost o red interna. - **HTTPS:** Configurar SSL en producción con Let's Encrypt. Ver [docs/seguridad.md](docs/seguridad.md) para más detalles. --- ## Contribución 1. Crear rama feature: `git checkout -b feature/nombre-feature` 2. Commits atómicos y descriptivos. 3. Abrir Pull Request en Gitea. 4. Code review obligatorio antes de merge a `main`. --- ## Licencia Este proyecto es propiedad de **Consultoría Alcaraz Salazar, S.A.S.** y **SKEEN Derma Experts**. Componentes open-source: - **WACRM:** MIT License - **Odoo:** LGPL v3 - **Supabase:** Apache 2.0 - **Hermes:** Ver licencia en https://github.com/NousResearch/Hermes-Agent - **React / Vite / Tailwind:** MIT --- ## Contacto **Consultoría Alcaraz Salazar, S.A.S.** **Desarrollador:** Iván Alcaraz **Email:** ialcarazsalazar@consultoria-as.com **Gitea:** https://git.consultoria-as.com/consultoria-as/SKEEN-Proyecto