Files
SKEEN-Proyecto/docs/estructura.md
Consultoría Alcaraz Salazar a718592291 Initial commit: SKEEN Derma Experts - Sistema Integral de Gestión Clínica
- Frontend React (SKEEN Brand) con Vite, TypeScript, Tailwind
- Frontend Homenest (versión alternativa)
- Módulos Odoo 17 custom (citas, pacientes, monedero, pagos, ventas, inventario, whatsapp)
- WACRM fork (Next.js 16 + Supabase)
- Hermes + Bridge + Skills (Qwen3.6 via Nan Builders)
- Scripts de migración y operación
- Documentación extensiva en docs/
2026-07-20 07:44:23 +00:00

13 KiB

Estructura del Repositorio — SKEEN Derma Experts

Versión: 2.0
Fecha: 16 de julio de 2026


1. Estructura General

SKEEN-Proyecto/
├── README.md                          # Documentación principal
├── .gitignore                         # Archivos excluidos de Git
├── docs/                              # Documentación extensiva
│   ├── arquitectura.md                # Arquitectura técnica
│   ├── instalacion.md                 # Guía de instalación
│   ├── configuracion.md               # Variables y credenciales
│   ├── api.md                         # Referencia de endpoints
│   ├── skills-hermes.md               # Skills de IA
│   ├── migracion.md                   # Guía de migración
│   ├── seguridad.md                   # Políticas de seguridad
│   ├── mantenimiento.md               # Operación y troubleshooting
│   ├── estructura.md                  # Este archivo
│   ├── ANALISIS_SKEEN_SISTEMA.md      # Análisis sistema legacy
│   ├── ESTADO_PROYECTO.md             # Estado detallado
│   └── ROADMAP_SKEEN_MEJORA.md        # Roadmap de mejoras
├── frontend/                          # Frontend React (SKEEN Brand)
│   ├── src/
│   │   ├── components/                # Componentes reutilizables
│   │   ├── pages/                     # Páginas/rutas
│   │   ├── services/                  # Cliente API (odoo.ts)
│   │   ├── designs/                   # Diseños de UI
│   │   │   └── brand/                 # Diseño oficial SKEEN Brand
│   │   ├── hooks/                     # Custom hooks
│   │   ├── utils/                     # Utilidades
│   │   ├── App.tsx                    # Componente raíz
│   │   └── main.tsx                   # Punto de entrada
│   ├── public/                        # Assets estáticos
│   ├── index.html                     # HTML base
│   ├── package.json                   # Dependencias npm
│   ├── vite.config.ts                 # Configuración Vite
│   ├── tailwind.config.js             # Configuración Tailwind
│   └── tsconfig.json                  # Configuración TypeScript
├── frontend-homenest/                 # Frontend alternativo (Homenest)
│   └── (misma estructura que frontend/)
├── odoo-addons/                       # Módulos Odoo custom
│   ├── skeen_citas/                   # Citas médicas
│   │   ├── models/
│   │   │   └── cita.py                # Modelo skeen.cita, skeen.servicio
│   │   ├── views/
│   │   ├── security/
│   │   │   └── ir.model.access.csv
│   │   ├── data/
│   │   │   └── sequences.xml
│   │   └── __manifest__.py
│   ├── skeen_pacientes/               # Pacientes y expedientes
│   │   ├── models/
│   │   │   ├── res_partner.py         # Extensión res.partner
│   │   │   └── hr_employee.py         # Extensión hr.employee
│   │   └── __manifest__.py
│   ├── skeen_monedero/                # Sistema de puntos/fidelidad
│   │   ├── models/
│   │   │   ├── monedero.py            # Modelo skeen.monedero
│   │   │   └── res_partner.py         # Campos en res.partner
│   │   └── __manifest__.py
│   ├── skeen_pagos/                   # Pagos y adeudos
│   │   ├── models/
│   │   │   └── pago.py                # Modelo skeen.pago
│   │   └── __manifest__.py
│   ├── skeen_ventas/                  # Ventas y corte de caja
│   │   ├── models/
│   │   │   ├── venta.py               # Modelo skeen.venta
│   │   │   └── tipo_cambio.py         # Tipo de cambio
│   │   ├── views/
│   │   └── __manifest__.py
│   ├── skeen_inventario/              # Inventario
│   │   ├── models/
│   │   │   └── inventario.py          # Modelo skeen.inventario.item
│   │   └── __manifest__.py
│   └── skeen_whatsapp/                # API REST para integraciones
│       ├── controllers/
│       │   ├── frontend.py            # Endpoints para Frontend React
│       │   ├── main.py                # Endpoints para Hermes/WACRM
│       │   └── wacrm_proxy.py         # Proxy WACRM ↔ Odoo
│       ├── models/
│       │   ├── frontend_user.py       # Usuarios del frontend
│       │   └── wacrm_sync.py          # Modelos cache WACRM
│       ├── data/
│       │   └── frontend_users.xml     # Usuario seed admin
│       └── __manifest__.py
├── wacrm/                             # WACRM (fork)
│   ├── src/                           # Código fuente Next.js
│   ├── public/                        # Assets
│   ├── docs/                          # Documentación WACRM
│   ├── .env.local.example             # Template de variables
│   └── package.json
├── hermes/                            # Hermes + Bridge + Skills
│   ├── hermes/                        # Configuración Hermes
│   │   ├── skills/                    # Skills de Hermes
│   │   │   ├── skeen-rag/             # Catálogo servicios
│   │   │   ├── skeen-agendar/         # Agendamiento
│   │   │   ├── skeen-pagos/           # Pagos
│   │   │   ├── skeen-monedero/        # Monedero
│   │   │   └── skeen-recordatorios/   # Recordatorios
│   │   ├── workspace/                 # Workspace Hermes
│   │   ├── webhook-bridge.js          # Bridge WACRM → Hermes
│   │   └── config.yaml                # Configuración
│   ├── skills/                        # Skills adicionales
│   │   └── hermes-skeen/
│   ├── docs/
│   ├── infra/
│   └── docker-compose.dev.yml
├── migracion/                         # Scripts de migración
│   ├── importar_a_odoo.py             # Migración principal
│   ├── importar_servicios_inventario.py # Servicios + inventario
│   ├── extraer_skeen.py               # Extracción legacy
│   ├── borrar_datos_demo.py           # Limpieza demo
│   ├── datos/                         # CSVs de datos (no commitear)
│   └── README.md                      # Documentación migración
├── scripts/                           # Scripts de operación
│   ├── skeen-start-all.sh             # Iniciar todo
│   ├── skeen-stop-all.sh              # Detener todo
│   ├── skeen-start-odoo.sh            # Iniciar solo Odoo
│   ├── odoo-test-data.py              # Pruebas datos Odoo
│   └── simular_meta_webhook.py        # Simulador webhook Meta
└── infra/                             # Infraestructura
    ├── odoo.conf                      # Configuración Odoo
    └── docker-compose.dev.yml         # Desarrollo local

2. Archivos Clave por Componente

2.1 Frontend React

Archivo Propósito
frontend/src/App.tsx Rutas principales, redirige a /designs/brand
frontend/src/designs/brand/Dashboard.tsx Dashboard principal
frontend/src/services/odoo.ts Cliente API para Odoo
frontend/src/pages/Agenda.tsx Calendario de citas
frontend/src/pages/Pacientes.tsx Gestión de pacientes
frontend/src/pages/Servicios.tsx Catálogo de servicios
frontend/src/pages/WacrmMessages.tsx Mensajes de WACRM
frontend/src/pages/WacrmLeads.tsx Leads/pipelines de WACRM
frontend/vite.config.ts Proxy /api/odoo → Odoo

2.2 Odoo

Archivo Propósito
odoo-addons/skeen_citas/models/cita.py Modelos citas y servicios
odoo-addons/skeen_whatsapp/controllers/frontend.py API Frontend React
odoo-addons/skeen_whatsapp/controllers/main.py API Hermes/WACRM
odoo-addons/skeen_whatsapp/controllers/wacrm_proxy.py Proxy WACRM ↔ Odoo
odoo-addons/skeen_whatsapp/models/wacrm_sync.py Modelos cache WACRM
odoo-addons/skeen_monedero/models/monedero.py Sistema de puntos
infra/odoo.conf Configuración Odoo

2.3 WACRM

Archivo Propósito
wacrm/.env.local Variables de entorno (no commitear)
wacrm/.env.local.example Template de variables
wacrm/src/app/api/ API routes de WACRM

2.4 Hermes

Archivo Propósito
hermes/hermes/webhook-bridge.js Bridge WACRM → Hermes
hermes/hermes/skills/skeen-*/SKILL.md Definición de skills
/root/.hermes/skills/skeen-services.json Catálogo de servicios (generado)

2.5 Migración

Archivo Propósito
migracion/importar_a_odoo.py Migración principal
migracion/importar_servicios_inventario.py Servicios e inventario
migracion/extraer_skeen.py Extracción legacy

3. Flujo de Archivos

3.1 Agendar Cita (Frontend → Odoo)

frontend/src/pages/Agenda.tsx
  → frontend/src/services/odoo.ts (createAppointment)
  → POST /skeen/frontend/v1/appointments
  → odoo-addons/skeen_whatsapp/controllers/frontend.py (create_appointment)
  → odoo-addons/skeen_citas/models/cita.py (create)
  → PostgreSQL skeen_odoo

3.2 Mensaje WhatsApp (Meta → WACRM → Hermes → Odoo)

Meta Cloud API
  → POST /api/whatsapp/webhook (WACRM)
  → wacrm/src/app/api/whatsapp/webhook/route.ts
  → Supabase (guarda mensaje)
  → Automatización send_webhook
  → POST http://localhost:8090/webhook/wacrm (Bridge)
  → hermes/hermes/webhook-bridge.js
  → Nan Builders API (Qwen3.6)
  → Respuesta
  → POST /api/v1/messages (WACRM)
  → Meta Cloud API
  → Paciente

3.3 Consulta de Servicios (Hermes → Odoo)

Usuario: "¿Cuánto cuesta la depilación láser?"
  → WACRM → Bridge → Hermes
  → Skill skeen-rag activado
  → Lee /root/.hermes/skills/skeen-services.json
  → Responde con precios y paquetes
  → Si quiere agendar → Skill skeen-agendar
  → POST /skeen/api/v1/available_slots (Odoo)
  → POST /skeen/api/v1/create_appointment (Odoo)

4. Archivos No Incluidos en Git

Los siguientes archivos/directorios están en .gitignore y no se suben al repositorio:

Archivo/Directorio Razón
.env, .env.local Secretos
node_modules/ Dependencias
dist/, build/ Builds
__pycache__/, *.pyc Cache Python
backups/ Backups
datos/ Datos sensibles de migración
*.key, *.pem Certificados
hermes-venv/, odoo-venv/ Entornos virtuales
.next/ Cache Next.js
*.log Logs

5. Ramas de Git

Rama Propósito
main Producción estable
develop Desarrollo integrado
feature/* Nuevas funcionalidades
fix/* Correcciones de bugs
hotfix/* Correcciones urgentes para producción

6. Convenciones de Código

6.1 Python (Odoo)

  • PEP 8
  • Docstrings en español
  • Nombres de modelos: skeen.nombre_modelo
  • Nombres de campos: snake_case

6.2 TypeScript (Frontend)

  • ESLint + Prettier
  • Nombres de componentes: PascalCase
  • Nombres de archivos: kebab-case o PascalCase según tipo
  • Interfaces: PascalCase con prefijo I o sin prefijo según contexto

6.3 JavaScript (Bridge)

  • Node.js estándar
  • async/await
  • Nombres de variables: camelCase

7. Dependencias Principales

7.1 Frontend

{
  "react": "^18.2.0",
  "react-dom": "^18.2.0",
  "react-router-dom": "^6.20.0",
  "axios": "^1.6.0",
  "recharts": "^2.10.0",
  "tailwindcss": "^3.3.0",
  "typescript": "^5.3.0",
  "vite": "^5.0.0"
}

7.2 Bridge

{
  "node-fetch": "^3.3.0",
  "crypto": "^1.0.0"
}

7.3 Odoo

odoo==17.0
psycopg2-binary
python-jose

8. Puertos Utilizados

Puerto Servicio Protocolo
22 SSH TCP
80 HTTP (nginx) TCP
443 HTTPS (nginx) TCP
3000 WACRM HTTP
3001 Uptime Kuma HTTP
5173 Frontend dev HTTP
5432 PostgreSQL (host) TCP
5433 PostgreSQL (Supabase) TCP
8000 Supabase Kong HTTP
8069 Odoo HTTP
8072 Odoo longpolling HTTP
8080 Hermes Gateway HTTP
8090 Bridge SKEEN HTTP
9119 Hermes Serve HTTP

9. Volúmenes Docker

Volumen Propósito
supabase-db-data Datos PostgreSQL Supabase
supabase-storage Archivos Supabase
supabase-kong Configuración Kong

10. Notas de Despliegue

  1. Frontend: Build estático desplegado en nginx.
  2. WACRM: Build Next.js corriendo con npm start.
  3. Odoo: Proceso Python corriendo con odoo-bin.
  4. Supabase: Contenedores Docker.
  5. Hermes: Procesos Python (gateway run, serve).
  6. Bridge: Proceso Node.js.

Todos los servicios deben iniciarse automáticamente en producción usando systemd.