- 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/
8.2 KiB
Guía de Migración — SKEEN Derma Experts
Versión: 2.0
Fecha: 16 de julio de 2026
1. Introducción
Esta guía describe el proceso de migración de datos desde el sistema legacy de SKEEN (https://sistema.skeenmx.app/) hacia el nuevo sistema basado en Odoo 17.
Importante: La migración requiere autorización documentada del cliente. No se ha realizado extracción masiva de datos sin permiso explícito.
2. Datos a Migrar
| Entidad | Descripción | Prioridad |
|---|---|---|
| Pacientes | Datos personales, contacto, historial médico | Alta |
| Citas | Histórico de citas, fechas, servicios | Alta |
| Servicios | Catálogo de tratamientos, precios, paquetes | Alta |
| Ventas | Histórico de ventas, pagos, adeudos | Media |
| Monedero | Puntos de fidelidad acumulados | Media |
| Inventario | Productos y consumibles | Media |
| Médicos | Personal de la clínica | Baja |
3. Formatos de Datos
3.1 CSV de Pacientes
name,phone,email,birthdate,gender,blood_type,allergies,address,notes
Juan Pérez,526641234567,juan@example.com,1990-01-15,male,O+,Penicilina,"Calle 123, Rosarito","Paciente frecuente"
Campos:
name(required): Nombre completophone(required): Teléfono (formato internacional sin +)email: Emailbirthdate: Fecha de nacimiento (YYYY-MM-DD)gender:male,female,otherblood_type: Tipo de sangreallergies: Alergiasaddress: Direcciónnotes: Notas adicionales
3.2 CSV de Servicios
name,code,category,price,duration_min,package_price,package_sessions,package_notes,description,service_group,color,is_favorite
Consulta Dermatologica,CONS-DERM,consulta,800,30,0,0,,Evaluación completa,Consultas,#1abc9c,true
Depilación Laser Full Body,LASER-FUL,tratamiento,2500,90,7000,3,Ahorro de $500,Depilación full body,Corporal,#e74c3c,false
Campos:
name(required): Nombre del serviciocode(required): Código únicocategory:consulta,tratamiento,procedimiento,paqueteprice(required): Precio por sesiónduration_min: Duración en minutospackage_price: Precio del paquete (0 si no aplica)package_sessions: Sesiones del paquete (0 si no aplica)package_notes: Notas del paquetedescription: Descripciónservice_group: Grupo/categoríacolor: Color hexadecimalis_favorite:true/false
3.3 CSV de Inventario
name,kind,sku,category,unit,qty,qty_optimal,qty_min,cost,expiry_date,notes
Suero Vitamina C,producto,PRD-001,Skincare,pieza,24,30,5,320,2027-06-15,Suero antioxidante
Guantes Estériles,consumible,CON-003,Instrumental,caja,8,15,3,95,,Caja de 100 unidades
Campos:
name(required): Nombre del itemkind:productooconsumiblesku: Código SKUcategory: Categoríaunit: Unidad de medidaqty: Existencia actualqty_optimal: Nivel óptimoqty_min: Stock mínimocost: Costo unitarioexpiry_date: Caducidad (YYYY-MM-DD)notes: Notas
3.4 CSV de Citas
patient_name,patient_phone,service_code,date,time,state,notes
Juan Pérez,526641234567,CONS-DERM,2026-07-17,10:00,confirmed,Primera visita
3.5 CSV de Ventas
patient_phone,date,service_code,qty,price,payment_method,notes
526641234567,2026-07-17,CONS-DERM,1,800,cash,Pago en efectivo
4. Proceso de Migración
4.1 Preparación
- Obtener autorización: Documento firmado por SKEEN autorizando la extracción.
- Exportar datos: Del sistema legacy (CSV, SQL dump, o API).
- Limpiar datos: Verificar formatos, eliminar duplicados.
- Backup: Respaldar base de datos actual de Odoo.
4.2 Ejecución
# 1. Colocar CSVs en el directorio de migración
cd /root/migracion
mkdir -p datos
cp /ruta/a/csvs/* datos/
# 2. Ejecutar migración principal (pacientes, servicios, citas, ventas)
python3 importar_a_odoo.py
# 3. Importar servicios e inventario específicos
python3 importar_servicios_inventario.py \
--servicios datos/servicios.csv \
--inventario datos/inventario.csv \
--purge-citas \
--purge-sql \
--generar-hermes
# 4. Verificar datos importados
python3 -c "
import xmlrpc.client
url='http://localhost:8069'
common=xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
uid=common.authenticate('skeen_odoo','admin','skeen_admin_2026',{})
models=xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')
for m in ['res.partner','skeen.servicio','skeen.cita','skeen.inventario.item']:
n=models.execute_kw('skeen_odoo',uid,'skeen_admin_2026',m,'search_count',[[]])
print(m,n)
"
4.3 Validación
- Conteo de registros: Comparar totales origen vs destino.
- Muestra aleatoria: Verificar 10-20 registros manualmente.
- Pruebas funcionales: Agendar cita, consultar saldo, redimir puntos.
- Reporte de errores: Documentar registros que fallaron.
5. Scripts de Migración
5.1 importar_a_odoo.py
Script principal de migración. Importa:
- Pacientes (res.partner)
- Servicios (skeen.servicio)
- Citas (skeen.cita)
- Ventas (skeen.venta)
- Pagos (skeen.pago)
- Monederos (skeen.monedero)
Uso:
python3 importar_a_odoo.py
5.2 importar_servicios_inventario.py
Script especializado para servicios e inventario.
Uso:
python3 importar_servicios_inventario.py \
--servicios servicios.csv \
--inventario inventario.csv \
[--purge-citas] \
[--purge-sql] \
[--generar-hermes]
Opciones:
--purge-citas: Eliminar citas existentes antes de importar--purge-sql: Usar TRUNCATE SQL para limpieza rápida--generar-hermes: Generar catálogo JSON para skills de Hermes
5.3 extraer_skeen.py
Script de extracción del sistema legacy. Requiere credenciales y autorización.
Nota: Este script está disponible pero no se ha ejecutado por restricciones de autorización.
6. Limpieza de Datos Demo
Antes de migrar datos reales, se recomienda limpiar datos demo:
cd /root/migracion
# Opción 1: Script de borrado
python3 borrar_datos_demo.py
# Opción 2: SQL directo (más rápido)
python3 importar_servicios_inventario.py --purge-citas --purge-sql --servicios /dev/null --inventario /dev/null
7. Sincronización Post-Migración
Después de la migración, es necesario sincronizar con WACRM:
# Desde el frontend o vía API
curl -X POST http://localhost:8069/skeen/frontend/v1/wacrm/sync \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"sync_contacts":true,"sync_conversations":true,"sync_messages":true,"sync_deals":true}'
8. Regeneración del Catálogo Hermes
Después de importar servicios, regenerar el catálogo para Hermes:
cd /root/migracion
python3 importar_servicios_inventario.py --solo-hermes
Esto actualiza:
/root/.hermes/skills/skeen-services.json/root/skeen-roadmap-hermes/hermes/skills/skeen-services.json
9. Problemas Comunes
9.1 Registros duplicados
Problema: Al re-ejecutar la migración, se crean duplicados.
Solución: Usar --purge-citas --purge-sql antes de importar.
9.2 Timeout en importación masiva
Problema: Miles de registros tardan demasiado.
Solución: Usar --purge-sql para limpieza rápida, y considerar dividir en lotes.
9.3 Campos faltantes en CSV
Problema: Algunos CSVs no tienen todos los campos.
Solución: Los scripts tienen valores por defecto. Revisar los warnings en la salida.
9.4 Teléfonos con formato incorrecto
Problema: Números de teléfono con formato local.
Solución: Normalizar a formato internacional sin + (ej. 526641234567).
10. Checklist de Migración
- Autorización documentada del cliente
- Exportación de datos del sistema legacy
- Backup de base de datos Odoo actual
- Limpieza de datos demo
- Ejecución de scripts de migración
- Validación de conteos
- Validación de muestra aleatoria
- Pruebas funcionales
- Sincronización WACRM
- Regeneración catálogo Hermes
- Reporte de errores y resolución
- Aprobación final del cliente
11. Contacto
Para dudas sobre migración: