Brightmarket Sync Guide

Estructura del proyecto

Archivos de tu proyecto cliente y qué debés implementar en cada uno.

Tu proyecto cliente sigue esta estructura. Cada página de esta sección explica qué implementar en un archivo concreto de tu repositorio.

brightmarket-<tu-org>-sync/
├── .env.example
├── login_aws.env.example
├── requirements.txt
├── scripts/
│   ├── auth-pip.sh
│   ├── auth-pip-win.ps1
│   ├── auth-pip-win.cmd
│   ├── print-codeartifact-token.sh
│   └── print-codeartifact-token-win.ps1
├── .github/workflows/build.yml   # opcional
└── src/
    ├── main.py
    ├── sync_registry.py
    ├── db.py
    ├── adapter.py
    ├── constants.py
    └── transforms/          # opcional: lógica específica del cliente
        └── ...

Capas

CapaArchivoRol
SDK (pip)—Login HTTP, sync y escritura en la API
Adaptersrc/adapter.pyLee tu fuente de datos (get_*)
Constantssrc/constants.pyField maps (*_FIELD_MAP) y value maps (*_MAPPING)
Transformssrc/transforms/Enrichment propio del cliente (nombres, IDs, parsing) antes del sync
Registrysrc/sync_registry.pyConecta adapter + constants al runner del SDK
CLIsrc/main.pyWrapper que delega en el SDK

No necesitás src/sync/*.py. El SDK (brightmarket_data_sync.sync) agrupa filas, arma payloads y llama writers.

Buena práctica: src/transforms/

Mantené la raíz de src/ solo para el cableado del SDK (adapter, constants, sync_registry, main, db). Si necesitás reglas de negocio propias del cliente (por ejemplo enriquecer el name/externalId de una promoción con fechas), ponelas en src/transforms/ y llámálas desde el adapter antes de devolver las filas. No pongas writers ni orquestación de sync ahí. Si el POS reutiliza ids de promoción, ver Promociones reutilizables.

Páginas de referencia

Contrato de filas y sync del SDK: Referencia del SDK.

On this page