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/
This commit is contained in:
103
hermes/skills/hermes-skeen/skeen-agendar/SKILL.md
Normal file
103
hermes/skills/hermes-skeen/skeen-agendar/SKILL.md
Normal file
@@ -0,0 +1,103 @@
|
||||
---
|
||||
name: skeen-agendar
|
||||
description: >
|
||||
Agendamiento de citas para SKEEN Derma Experts.
|
||||
Consulta disponibilidad, crea citas, reagenda y cancela.
|
||||
Usar cuando el usuario quiera agendar, reagendar o cancelar una cita.
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
hermes:
|
||||
requires:
|
||||
bins: [python]
|
||||
envVars:
|
||||
- name: ODOO_URL
|
||||
required: true
|
||||
- name: ODOO_DB
|
||||
required: true
|
||||
- name: ODOO_API_KEY
|
||||
required: true
|
||||
platforms: [whatsapp, webchat, cli]
|
||||
activation: keyword
|
||||
keywords: ["agendar", "cita", "hora", "reagendar", "cancelar", "disponibilidad"]
|
||||
---
|
||||
|
||||
# SKEEN — Agendamiento de Citas
|
||||
|
||||
## Instrucciones de Uso
|
||||
|
||||
### PASO 1: Identificar intencion
|
||||
|
||||
- "Quiero agendar" / "Necesito una cita" → NUEVA CITA
|
||||
- "Quiero cambiar mi cita" / "Reagendar" → REAGENDAR
|
||||
- "Cancelar mi cita" → CANCELAR
|
||||
- "Tengo una cita para manana?" → CONSULTAR
|
||||
|
||||
### PASO 2: Para NUEVA CITA
|
||||
|
||||
1. Pregunta que tipo de servicio desea (si no lo especifico):
|
||||
- Consulta dermatologica general ($800 MXN, 30 min)
|
||||
- Tratamiento facial ($1,200-$3,500 MXN, 45-90 min)
|
||||
- Depilacion laser (desde $500 MXN por zona, 15-60 min)
|
||||
- Peel quimico ($1,500 MXN, 30 min)
|
||||
- O consulta de valoracion gratuita (15 min)
|
||||
|
||||
2. Consulta disponibilidad usando el plugin `odoo_api_call`:
|
||||
Modelo: salon.booking, metodo: get_available_slots
|
||||
Argumentos: [service_id, date_from, date_to]
|
||||
|
||||
3. Presenta las 3 mejores opciones de horario
|
||||
|
||||
4. Cuando el paciente elige, confirma datos:
|
||||
- Nombre completo
|
||||
- Confirmar telefono
|
||||
- Alergias o condiciones especiales (opcional)
|
||||
|
||||
5. Crea la cita usando `odoo_api_call`:
|
||||
Modelo: salon.booking, metodo: create
|
||||
Datos: { name, phone, service_id, date, time, state: 'confirmed' }
|
||||
|
||||
6. Programa recordatorio via cron:
|
||||
```bash
|
||||
hermes cron schedule --name "recordatorio-cita-[ID]" \
|
||||
--at "[fecha_cita] 18:00 - 1 day" \
|
||||
--command "skill skeen-recordatorios --phone [PHONE] --cita [DATE]"
|
||||
```
|
||||
|
||||
7. Envia confirmacion via WACRM usando `wacrm_send`
|
||||
|
||||
### PASO 3: Para REAGENDAR
|
||||
|
||||
1. Busca citas del paciente por telefono via `odoo_api_call`
|
||||
2. Muestra citas activas
|
||||
3. Pide nueva fecha/hora
|
||||
4. Consulta disponibilidad
|
||||
5. Actualiza cita via `odoo_api_call` (model salon.booking, method write)
|
||||
6. Confirma cambio
|
||||
|
||||
### PASO 4: Para CANCELAR
|
||||
|
||||
1. Busca citas del paciente por telefono
|
||||
2. Confirma cual cita cancelar
|
||||
3. Pide motivo (opcional, para estadisticas)
|
||||
4. Cancela via `odoo_api_call` (state: 'cancelled')
|
||||
5. Ofrece reagendar
|
||||
|
||||
## Formato de Confirmacion
|
||||
|
||||
Perfecto! Tu cita esta confirmada:
|
||||
|
||||
Servicio: [Nombre servicio]
|
||||
Fecha: [Dia de semana], [DD] de [mes] de [AAAA]
|
||||
Hora: [HH:MM] AM/PM
|
||||
Duracion: [X] minutos
|
||||
Direccion: Blvd. Popotla 123, Playas de Rosarito
|
||||
|
||||
Te enviaremos un recordatorio un dia antes. Si necesitas cambiar o cancelar, solo escribenos!
|
||||
|
||||
## Reglas Importantes
|
||||
|
||||
- Solo agendar dentro del horario de la clinica
|
||||
- Validar que el paciente no tenga citas duplicadas
|
||||
- Consulta de valoracion gratuita tiene duracion de 15 min
|
||||
- Si no hay disponibilidad, ofrecer lista de espera
|
||||
- Guardar TODAS las citas en memoria para recordatorios
|
||||
55
hermes/skills/hermes-skeen/skeen-monedero/SKILL.md
Normal file
55
hermes/skills/hermes-skeen/skeen-monedero/SKILL.md
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
name: skeen-monedero
|
||||
description: >
|
||||
Monedero digital de fidelidad de SKEEN Derma Experts.
|
||||
Consulta saldo, redime puntos, muestra historial.
|
||||
1 punto = $1 MXN. Se acumula 1 punto por cada $10 gastados.
|
||||
Usar cuando el usuario pregunte por puntos, saldo, o redencion.
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
hermes:
|
||||
requires:
|
||||
bins: []
|
||||
envVars:
|
||||
- name: ODOO_URL
|
||||
required: true
|
||||
platforms: [whatsapp, webchat, cli]
|
||||
activation: keyword
|
||||
keywords: ["puntos", "monedero", "saldo", "redimir", "fidelidad"]
|
||||
---
|
||||
|
||||
# SKEEN — Monedero Digital
|
||||
|
||||
## Consultar saldo
|
||||
|
||||
Usa `odoo_api_call`: modelo skeen.monedero, metodo get_balance, args: [phone_number]
|
||||
|
||||
Respuesta esperada: { points: 450, equivalent_mxn: 450, history: [...] }
|
||||
|
||||
Enviar via WACRM con formato:
|
||||
|
||||
Tu monedero SKEEN:
|
||||
Saldo actual: 450 puntos (= $450 MXN)
|
||||
Historial reciente:
|
||||
- 03/07/2026: +120 pts (Pago Tratamiento Acne — $1,200)
|
||||
- 28/06/2026: +80 pts (Pago Consulta + peel — $800)
|
||||
- 15/06/2026: +250 pts (Pago Depilacion laser — $2,500)
|
||||
|
||||
Puedes redimir tus puntos en tu proxima visita! Cada 10 puntos = $10 MXN de descuento.
|
||||
|
||||
## Redimir puntos
|
||||
|
||||
1. Verificar que tenga suficientes puntos
|
||||
2. Consultar monto a pagar de la cita/servicio
|
||||
3. Calcular descuento (maximo 50% del total)
|
||||
4. Confirmar redencion
|
||||
5. Aplicar via `odoo_api_call`: modelo skeen.monedero, metodo redeem
|
||||
6. Confirmar redencion via WACRM
|
||||
|
||||
## Reglas
|
||||
|
||||
- Maximo redimible: 50% del total de la compra
|
||||
- Puntos vencen a los 12 meses de inactividad
|
||||
- No transferibles entre pacientes
|
||||
- Se acumulan en pagos confirmados unicamente
|
||||
- En devoluciones, se restan los puntos correspondientes
|
||||
79
hermes/skills/hermes-skeen/skeen-pagos/SKILL.md
Normal file
79
hermes/skills/hermes-skeen/skeen-pagos/SKILL.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
name: skeen-pagos
|
||||
description: >
|
||||
Gestion de pagos para SKEEN Derma Experts.
|
||||
Genera links de pago (Stripe/MercadoPago), consulta estados,
|
||||
y gestiona facturacion. Usar cuando el usuario quiera pagar,
|
||||
consultar saldo, o ver sus pagos pendientes.
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
hermes:
|
||||
requires:
|
||||
bins: [python]
|
||||
env: [STRIPE_SECRET_KEY, MP_ACCESS_TOKEN]
|
||||
envVars:
|
||||
- name: STRIPE_SECRET_KEY
|
||||
required: true
|
||||
- name: MP_ACCESS_TOKEN
|
||||
required: true
|
||||
- name: ODOO_URL
|
||||
required: true
|
||||
platforms: [whatsapp, webchat, cli]
|
||||
activation: keyword
|
||||
keywords: ["pagar", "saldo", "deuda", "factura", "pago", "stripe", "mercadopago"]
|
||||
---
|
||||
|
||||
# SKEEN — Gestion de Pagos
|
||||
|
||||
## Instrucciones de Uso
|
||||
|
||||
### PASO 1: Identificar intencion de pago
|
||||
|
||||
- "Quiero pagar" → Generar link de pago
|
||||
- "Cuanto debo?" / "Saldo pendiente" → Consultar deuda
|
||||
- "Ya pague" → Verificar pago
|
||||
- "Necesito factura" → Generar factura (CFDI)
|
||||
|
||||
### PASO 2: Consultar servicios pendientes
|
||||
|
||||
Usa `odoo_api_call` para consultar modelo account.move:
|
||||
Dominio: [['partner_id.phone', '=', PACIENTE_PHONE], ['state', '=', 'posted'], ['payment_state', '!=', 'paid']]
|
||||
Campos: ['name', 'amount_residual', 'invoice_date_due']
|
||||
|
||||
### PASO 3: Generar link de pago
|
||||
|
||||
Para pagos en Mexico (MXN) — usa MercadoPago:
|
||||
Crear preference con items del servicio
|
||||
notification_url: https://skeen.mx/webhooks/mercadopago
|
||||
back_urls: { success: 'https://app.skeen.mx/pagos/exitoso' }
|
||||
|
||||
Para pagos internacionales — usa Stripe Checkout:
|
||||
Crear session con line_items
|
||||
mode: 'payment'
|
||||
success_url: 'https://app.skeen.mx/pagos/exitoso'
|
||||
metadata: { patient_phone: PACIENTE_PHONE }
|
||||
|
||||
### PASO 4: Enviar link de pago
|
||||
|
||||
Usa `wacrm_send` para enviar mensaje con resumen y link.
|
||||
|
||||
Incluir:
|
||||
- Listado de servicios con precios
|
||||
- Total a pagar
|
||||
- Link de pago
|
||||
- Metodos aceptados (tarjeta, OXXO, SPEI)
|
||||
- Puntos de monedero que acumulara
|
||||
|
||||
### PASO 5: Confirmacion de pago
|
||||
|
||||
Cuando el webhook confirme el pago:
|
||||
1. Registra pago en Odoo via `odoo_api_call`
|
||||
2. Calcula puntos de monedero (10% del monto)
|
||||
3. Envia confirmacion + puntos acumulados
|
||||
|
||||
## Reglas
|
||||
|
||||
- Siempre confirmar el monto antes de generar el link
|
||||
- Para pagos >$5,000 MXN, ofrecer opcion de meses sin intereses
|
||||
- Verificar que el telefono coincida con el paciente
|
||||
- Guardar referencia de pago en memoria
|
||||
59
hermes/skills/hermes-skeen/skeen-rag/SKILL.md
Normal file
59
hermes/skills/hermes-skeen/skeen-rag/SKILL.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
name: skeen-rag
|
||||
description: >
|
||||
Catalogo de servicios dermatologicos de SKEEN Derma Experts.
|
||||
Proporciona informacion sobre tratamientos, precios, duracion y contraindicaciones.
|
||||
SOLO usar cuando el usuario pregunte por servicios, tratamientos, precios o el catalogo.
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
hermes:
|
||||
requires:
|
||||
bins: []
|
||||
envVars:
|
||||
- name: SKEEN_SERVICES_JSON
|
||||
required: false
|
||||
description: "Path al archivo JSON con catalogo de servicios"
|
||||
platforms: [whatsapp, webchat, cli]
|
||||
activation: keyword
|
||||
keywords: ["servicios", "tratamientos", "precios", "catalogo", "acne", "peel", "laser", "dermatologia"]
|
||||
---
|
||||
|
||||
# SKEEN Derma Experts — Catalogo de Servicios
|
||||
|
||||
## Instrucciones de Uso
|
||||
|
||||
Cuando un paciente pregunte por tratamientos, servicios, precios o recomendaciones dermatologicas:
|
||||
|
||||
1. Lee el archivo de catalogo: `${env:SKEEN_SERVICES_JSON:-/skills/data/skeen-servicios.json}`
|
||||
2. Filtra los servicios relevantes segun la pregunta
|
||||
3. Presenta la informacion de forma clara y amigable
|
||||
4. SIEMPRE incluye: nombre del tratamiento, precio aproximado, duracion, y una breve descripcion
|
||||
5. NUNCA diagnostiques condiciones medicas — invita al paciente a agendar una consulta
|
||||
6. Si no encuentras el servicio, ofrece agendar una consulta de valoracion
|
||||
|
||||
## Formato de Respuesta
|
||||
|
||||
Hola! En SKEEN contamos con estos tratamientos para [condicion]:
|
||||
|
||||
1. **[Nombre tratamiento]** — $[precio] MXN
|
||||
Duracion: [X] minutos
|
||||
[Descripcion breve]
|
||||
|
||||
2. **[Nombre tratamiento]** — $[precio] MXN
|
||||
...
|
||||
|
||||
Te gustaria agendar una consulta de valoracion? Podemos evaluar tu caso especifico y recomendarte el mejor tratamiento.
|
||||
|
||||
## Limites
|
||||
|
||||
- NO diagnosticar — solo informacion general
|
||||
- NO recomendar medicamentos especificos
|
||||
- SIEMPRE sugerir consulta presencial para evaluacion
|
||||
- Precios son aproximados — pueden variar segun evaluacion
|
||||
|
||||
## Datos de la Clinica
|
||||
|
||||
- Nombre: SKEEN Derma Experts
|
||||
- Direccion: Blvd. Popotla 123, Playas de Rosarito, BC, Mexico
|
||||
- Horario: Lun-Vie 9:00-18:00, Sab 9:00-14:00
|
||||
- Telefono: +52 (664) 123-4567
|
||||
89
hermes/skills/hermes-skeen/skeen-recordatorios/SKILL.md
Normal file
89
hermes/skills/hermes-skeen/skeen-recordatorios/SKILL.md
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
name: skeen-recordatorios
|
||||
description: >
|
||||
Recordatorios de citas, follow-ups y re-engagement para SKEEN.
|
||||
Usar PRINCIPALMENTE via cron (hermes cron).
|
||||
Tambien puede responder a consultas sobre recordatorios.
|
||||
version: 1.0.0
|
||||
metadata:
|
||||
hermes:
|
||||
always: true
|
||||
requires:
|
||||
bins: []
|
||||
envVars:
|
||||
- name: ODOO_URL
|
||||
required: true
|
||||
- name: WACRM_URL
|
||||
required: true
|
||||
- name: WACRM_API_KEY
|
||||
required: true
|
||||
platforms: [whatsapp, webchat, cli]
|
||||
activation: cron
|
||||
cron:
|
||||
- schedule: "0 */6 * * *" # Cada 6 horas: generar recordatorios
|
||||
command: "skill skeen-recordatorios --action generate"
|
||||
- schedule: "0 18 * * *" # 6 PM diario: enviar recordatorios
|
||||
command: "skill skeen-recordatorios --action send"
|
||||
- schedule: "0 9 * * 1" # Lunes 9 AM: re-engagement
|
||||
command: "skill skeen-recordatorios --action reengage"
|
||||
---
|
||||
|
||||
# SKEEN — Recordatorios y Follow-ups
|
||||
|
||||
## Ejecucion via Cron
|
||||
|
||||
Esta skill se ejecuta automaticamente via `hermes cron`.
|
||||
|
||||
### PASO 1: Generar recordatorios (cada 6 horas)
|
||||
|
||||
Recordatorios de citas (24h antes):
|
||||
Consulta Odoo: salon.booking con date=tomorrow, state=confirmed
|
||||
Para cada cita, programa cron:
|
||||
```bash
|
||||
hermes cron schedule --name "recordatorio-[booking_id]" \
|
||||
--at "[fecha_cita] 18:00 - 1 day" \
|
||||
--command "skill skeen-recordatorios --action send --phone [PHONE] --cita [DATE]"
|
||||
```
|
||||
|
||||
Follow-ups post-tratamiento (7 dias despues):
|
||||
Consulta Odoo: salon.booking con date=7_days_ago, state=done
|
||||
Programa cron para cada paciente:
|
||||
```bash
|
||||
hermes cron schedule --name "followup-[booking_id]" \
|
||||
--at "[fecha_cita + 7 days] 10:00" \
|
||||
--command "skill skeen-recordatorios --action followup --phone [PHONE]"
|
||||
```
|
||||
|
||||
Re-engagement (pacientes inactivos 90 dias):
|
||||
Consulta Odoo: res.partner con last_visit <= 90_days_ago
|
||||
Programa cron semanal:
|
||||
```bash
|
||||
hermes cron schedule --name "reengage-[partner_id]" \
|
||||
--at "lunes 9:00" \
|
||||
--command "skill skeen-recordatorios --action reengage --phone [PHONE]"
|
||||
```
|
||||
|
||||
### PASO 2: Enviar recordatorios (6 PM diario)
|
||||
|
||||
Para cada recordatorio programado para hoy:
|
||||
1. Enviar via WACRM usando `wacrm_send` con template aprobado
|
||||
2. Si es exitoso, marcar como enviado en Odoo
|
||||
3. Si falla, reintentar en siguiente ejecucion (max 3 intentos)
|
||||
|
||||
### PASO 3: Limpieza
|
||||
|
||||
Eliminar cron jobs completados con mas de 7 dias:
|
||||
```bash
|
||||
hermes cron list --completed | awk '$4 > 7 {print $1}' | xargs hermes cron delete
|
||||
```
|
||||
|
||||
## Templates de WhatsApp Aprobados
|
||||
|
||||
recordatorio_cita_skeen:
|
||||
"Hola {{1}}! Te recordamos tu cita manana {{2}} a las {{3}} en SKEEN Derma Experts."
|
||||
|
||||
followup_tratamiento_skeen:
|
||||
"Hola {{1}}! Han pasado {{2}} dias desde tu {{3}}. Como te sientes?"
|
||||
|
||||
reengage_skeen:
|
||||
"Hola {{1}}! Te extranamos en SKEEN. Agenda tu proxima visita y recibe 50 puntos."
|
||||
Reference in New Issue
Block a user