Brightmarket Sync Guide

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.envauth-pip.shpip install.env.

3. Probar conectividad

python -m src.main -test

4. 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étodoQué devolvés
get_clients_created / get_clients_modifiedFilas de clientes
get_skusFilas de artículos/SKUs (o payloads listos con externalId + skus)
get_ticketsUna fila por línea de ticket
get_payment_methodsMedios de pago distintos
get_promotionsFilas crudas o dicts promotion_data listos
get_rewardsRewards (opcional)
get_points_movementsMovimientos de puntos (opcional)
get_stock_adjustmentsFilas 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:

  1. Field mapsCLIENT_FIELD_MAP, SKU_FIELD_MAP, etc.: tu columna fuente → clave lógica del SDK. Requerido para cada flag de sync que uses.
  2. Value mapsSEXO_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:

FlagAcción
-testProbar BD + login API
-clientsClientes nuevos y modificados
-skusArtículos / SKUs
-ticketsTickets de venta (un POST por ticket)
-tickets -fileTickets vía JSONL + import (recomendado en históricos)
-tickets -file -generate-onlySolo generar JSONL en temp/
-payment_methodsMedios de pago
-promotionsPromociones
-rewardsRewards (opcional)
-points_movementsMovimientos de puntos (opcional)
-stock_adjustmentsStock set-stock (opcional; id de sucursal opcional)
-from / -toRango YYYYMMDD

9. Ejecutar syncs

python -m src.main -clients -from 20260101 -to 20260131

Orden 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

NecesidadQué agregar
Más entidadesMétodo en adapter + *_FIELD_MAP en constants (+ comando custom si hace falta)
Varias basesVarios conectores en el adapter
Docker / CIVer CI / PyInstaller
EjecutablePyInstaller con hiddenimports=['brightmarket_data_sync', 'brightmarket_data_sync.writers']

Referencia

Si necesitás un ejemplo de implementación real, pedilo a tu contacto de Brightmarket.

On this page