Skip to content

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:27017

Verificació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 .env

Editar 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=false

3. Instalar dependencias Python

bash
cd migrations/scripts
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

4. Levantar el sitio de docs (opcional)

bash
cd migrations/docs
npm install        # solo la primera vez
npm run dev
# abre http://localhost:5180

5. Smoke test (sin escribir nada)

bash
cd migrations/scripts
source .venv/bin/activate
python3 migrate.py --dry-run --resource bootstrap

Esto solo lee GET /locations/{id} en GHL y muestra qué insertaría en companies. Cero escrituras.