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:
298
docs/migracion.md
Normal file
298
docs/migracion.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# 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
|
||||
|
||||
```csv
|
||||
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 completo
|
||||
- `phone` (required): Teléfono (formato internacional sin +)
|
||||
- `email`: Email
|
||||
- `birthdate`: Fecha de nacimiento (YYYY-MM-DD)
|
||||
- `gender`: `male`, `female`, `other`
|
||||
- `blood_type`: Tipo de sangre
|
||||
- `allergies`: Alergias
|
||||
- `address`: Dirección
|
||||
- `notes`: Notas adicionales
|
||||
|
||||
### 3.2 CSV de Servicios
|
||||
|
||||
```csv
|
||||
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 servicio
|
||||
- `code` (required): Código único
|
||||
- `category`: `consulta`, `tratamiento`, `procedimiento`, `paquete`
|
||||
- `price` (required): Precio por sesión
|
||||
- `duration_min`: Duración en minutos
|
||||
- `package_price`: Precio del paquete (0 si no aplica)
|
||||
- `package_sessions`: Sesiones del paquete (0 si no aplica)
|
||||
- `package_notes`: Notas del paquete
|
||||
- `description`: Descripción
|
||||
- `service_group`: Grupo/categoría
|
||||
- `color`: Color hexadecimal
|
||||
- `is_favorite`: `true`/`false`
|
||||
|
||||
### 3.3 CSV de Inventario
|
||||
|
||||
```csv
|
||||
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 item
|
||||
- `kind`: `producto` o `consumible`
|
||||
- `sku`: Código SKU
|
||||
- `category`: Categoría
|
||||
- `unit`: Unidad de medida
|
||||
- `qty`: Existencia actual
|
||||
- `qty_optimal`: Nivel óptimo
|
||||
- `qty_min`: Stock mínimo
|
||||
- `cost`: Costo unitario
|
||||
- `expiry_date`: Caducidad (YYYY-MM-DD)
|
||||
- `notes`: Notas
|
||||
|
||||
### 3.4 CSV de Citas
|
||||
|
||||
```csv
|
||||
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
|
||||
|
||||
```csv
|
||||
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
|
||||
|
||||
1. **Obtener autorización:** Documento firmado por SKEEN autorizando la extracción.
|
||||
2. **Exportar datos:** Del sistema legacy (CSV, SQL dump, o API).
|
||||
3. **Limpiar datos:** Verificar formatos, eliminar duplicados.
|
||||
4. **Backup:** Respaldar base de datos actual de Odoo.
|
||||
|
||||
### 4.2 Ejecución
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
1. **Conteo de registros:** Comparar totales origen vs destino.
|
||||
2. **Muestra aleatoria:** Verificar 10-20 registros manualmente.
|
||||
3. **Pruebas funcionales:** Agendar cita, consultar saldo, redimir puntos.
|
||||
4. **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:**
|
||||
```bash
|
||||
python3 importar_a_odoo.py
|
||||
```
|
||||
|
||||
### 5.2 `importar_servicios_inventario.py`
|
||||
|
||||
Script especializado para servicios e inventario.
|
||||
|
||||
**Uso:**
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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:
|
||||
- **Email:** ialcarazsalazar@consultoria-as.com
|
||||
- **Gitea:** https://git.consultoria-as.com/consultoria-as/SKEEN-Proyecto
|
||||
Reference in New Issue
Block a user