Appearance
Setup local
Requisitos
- Docker + Docker Compose
- Python 3.10+
- Node 18+ (solo si vas a editar/levantar este sitio de docs)
Estructura del proyecto
migrations/
├── mongo/ # Mongo target + scripts ad-hoc
│ ├── docker-compose.migration.yml
│ └── README.md
├── docs/ # VitePress (este sitio)
│ ├── package.json
│ ├── .vitepress/config.mts
│ └── src/ # Contenido .md (incluido este)
├── scripts/ # Migrador Python
│ ├── migrate.py
│ ├── requirements.txt
│ ├── .env.example
│ └── .env # tu config (gitignore)
├── state/ # Cursores (auto)
└── logs/ # Logs y DLQ (auto)Cada sub-proyecto es autocontenido. La raíz migrations/ se mantiene limpia.
1. Levantar Mongo destino aislado
bash
cd migrations/mongo
docker compose -f docker-compose.migration.yml up -d
docker compose -f docker-compose.migration.yml ps
# Debes ver crm-migration-mongo-1 en estado "running" mapeando 27019:27017Verificación:
bash
mongosh "mongodb://admin:migration_pwd_change_me@localhost:27019/imcrmdev?authSource=admin" \
--eval 'db.runCommand({ping: 1})'
# {ok: 1}2. Configurar variables de entorno
bash
cd migrations/scripts
cp .env.example .envEditar scripts/.env:
bash
GHL_PIT=pit-9fd29df8-52f7-420b-a6e4-d0d32da9e4c0
GHL_LOCATION_ID=SW4v78LtTjzKHd3cnJ48
GHL_BASE_URL=https://services.leadconnectorhq.com
GHL_VERSION=2021-07-28
TARGET_MONGO_URI=mongodb://admin:migration_pwd_change_me@localhost:27019/imcrmdev?authSource=admin&directConnection=true
TARGET_DB=imcrmdev
COMPANY_NAME="Trebol Insurance"
RATE_LIMIT_RPS=8
MAX_RETRIES=5
WORKERS_PER_CONTACT=5
RESET_STATE=false3. Instalar dependencias Python
bash
cd migrations/scripts
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt4. Levantar el sitio de docs (opcional)
bash
cd migrations/docs
npm install # solo la primera vez
npm run dev
# abre http://localhost:51805. Smoke test (sin escribir nada)
bash
cd migrations/scripts
source .venv/bin/activate
python3 migrate.py --dry-run --resource bootstrapEsto solo lee GET /locations/{id} en GHL y muestra qué insertaría en companies. Cero escrituras.