main.py y sync_registry.py
Wrapper CLI compatible y registro de comandos para el runner del SDK.
src/main.py es el entrypoint compatible del proyecto cliente. La forma de uso sigue siendo python -m src.main ..., pero el parsing, logging, validación de fechas y dispatch viven en el runner del SDK.
Los comandos del cliente se declaran en src/sync_registry.py. Ahí se registran los handlers que llaman a src/sync/*.
Responsabilidades
| Tarea | Implementación |
|---|---|
Cargar .env | Runner CLI del SDK |
| Logging | Runner CLI del SDK |
| Conexión a fuente | Database (o tu propio cliente) |
| Adapter | ClientAdapter(db) |
| API Brightmarket | BrightAPI(BrightmarketConfig.from_env()) |
| Registro de comandos | src/sync_registry.py |
| Sync por entidad | src/sync/* |
Uso
python -m src.main -test
python -m src.main -clients
python -m src.main -tickets -from 20260101 -to 20260131El SDK también instala un entrypoint directo para casos avanzados:
brightmarket-sync --registry src.sync_registry -tickets -from 20260101 -to 20260131Para operación diaria, CI, Docker y PyInstaller, mantené python -m src.main ....
Flags CLI
| Flag | Acción |
|---|---|
-test | Verificar conectividad (BD + login API) sin sincronizar |
-clients | Sincronizar clientes creados y modificados |
-skus | Sincronizar artículos/SKUs |
-tickets | Sincronizar tickets (un POST por ticket) |
-tickets -file | Generar JSONL y subir a import |
-tickets -file -generate-only | Solo generar JSONL en temp/ |
-payment_methods | Sincronizar métodos de pago |
-promotions | Sincronizar promociones |
-rewards | Sincronizar rewards (opcional) |
-points_movements | Sincronizar movimientos de puntos (opcional) |
-stock_adjustments [branch_id] | Sincronizar stock (opcional; sin sucursal = todas) |
-from YYYYMMDD -to YYYYMMDD | Rango de fechas para entidades filtradas |
Para carga inicial, programación diaria y fechas dinámicas en cron, ver Programación y cargas.
Qué no hacer
- No agregar llamadas HTTP directas a Brightmarket
- No duplicar login: usá
BrightAPIdel SDK - No mezclar transformación de payloads en
src/main.py— eso va ensrc/sync/*