Guía de implementación
Paso a paso para implementar adapter, sync y ejecución en tu proyecto cliente.
Tu proyecto sincroniza datos desde tu fuente hacia Brightmarket usando el SDK brightmarket-data-sync. El SDK escribe en la API y ejecuta el sync; vos implementás lectura en el adapter y mapeos en constants.
Checklist
1. Obtener el proyecto
Seguí Obtener tu proyecto: entrega de Brightmarket o descarga del zip.
2. Instalar dependencias
Inicio rápido: login_aws.env → auth-pip.sh → pip install → .env.
3. Probar conectividad
python -m src.main -test4. Adaptar conexión a tu fuente (src/db.py)
El SDK no incluye drivers de BD. Si tu fuente no es SQL Server, adaptá src/db.py a pyodbc, psycopg2, archivos, etc.
Tu clase debe exponer consultas que devuelvan filas (idealmente list[dict]).
5. Implementar el adapter (src/adapter.py)
Implementá cada método en BrightmarketAdapter. Devolvé filas crudas de tu fuente (list[dict] u objetos con tus nombres de columna).
| Método | Qué devolvés |
|---|---|
get_clients_created / get_clients_modified | Filas de clientes |
get_skus | Filas de artículos/SKUs (o payloads listos con externalId + skus) |
get_tickets | Una fila por línea de ticket |
get_payment_methods | Medios de pago distintos |
get_promotions | Filas crudas o dicts promotion_data listos |
get_rewards | Rewards (opcional) |
get_points_movements | Movimientos de puntos (opcional) |
get_stock_adjustments | Filas de stock (opcional; branch_office_id opcional) |
Fechas en formato YYYYMMDD. El SDK no asume nombres de columna: los definís en src/constants.py con *_FIELD_MAP (ver Field maps).
Implementá un método a la vez y probá con el flag CLI correspondiente.
6. Constantes (src/constants.py)
Dos tipos de mapeo:
- Field maps —
CLIENT_FIELD_MAP,SKU_FIELD_MAP, etc.: tu columna fuente → clave lógica del SDK. Requerido para cada flag de sync que uses. - Value maps —
SEXO_MAPPING,POINTS_MOVEMENT_TYPE_MAPPING, etc.: códigos de tu sistema → valores Brightmarket.
Guía completa: Field maps y constants.py.
from brightmarket_data_sync.sync import build_default_commands, mappers_from_constants
import constants
mappers = mappers_from_constants(constants)7. Registry (src/sync_registry.py)
Usá build_default_commands() del SDK para registrar flags -clients, -skus, etc. No necesitás módulos src/sync/.
Para casos avanzados (validaciones antes de escribir), usá helpers del SDK como validate_sku_external_ids o get_branch_office_channel_id. No construyas endpoints con BrightAPI.get/post en el cliente; si falta un helper, agregalo al SDK.
8. CLI (src/main.py)
Flags habituales en tu proyecto:
| Flag | Acción |
|---|---|
-test | Probar BD + login API |
-clients | Clientes nuevos y modificados |
-skus | Artículos / SKUs |
-tickets | Tickets de venta (un POST por ticket) |
-tickets -file | Tickets vía JSONL + import (recomendado en históricos) |
-tickets -file -generate-only | Solo generar JSONL en temp/ |
-payment_methods | Medios de pago |
-promotions | Promociones |
-rewards | Rewards (opcional) |
-points_movements | Movimientos de puntos (opcional) |
-stock_adjustments | Stock set-stock (opcional; id de sucursal opcional) |
-from / -to | Rango YYYYMMDD |
9. Ejecutar syncs
python -m src.main -clients -from 20260101 -to 20260131Orden sugerido: -payment_methods → -clients → -skus → -promotions → -rewards (opcional) → -points_movements (opcional) → -tickets.
Para carga inicial vs incremental diaria, entidades opcionales, rangos históricos y un ejemplo de cronograma, ver Programación y cargas.
Ampliar el proyecto
| Necesidad | Qué agregar |
|---|---|
| Más entidades | Método en adapter + *_FIELD_MAP en constants (+ comando custom si hace falta) |
| Varias bases | Varios conectores en el adapter |
| Docker / CI | Ver CI / PyInstaller |
| Ejecutable | PyInstaller con hiddenimports=['brightmarket_data_sync', 'brightmarket_data_sync.writers'] |
Referencia
- Estructura del proyecto — archivos de tu repo
- Referencia del SDK — contrato y writers
- API REST — endpoints subyacentes
Si necesitás un ejemplo de implementación real, pedilo a tu contacto de Brightmarket.