# 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

```json
{
  "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

```json
{
  "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.
