Saltar a contenido

Sembrar datos

tools/seed/seed.py es un script Python 3 (solo librería estándar, sin dependencias) que carga datos de ejemplo en un BeneficiosCenter en ejecución, usando la API de administración (/api/admin/**) con autenticación HTTP Basic (usuario ADMIN).

Qué carga

  • Tipos de cliente: DINI_NEGOCIOS (payment method 990) y DINI_GIFTCARD (payment method 991).
  • Sucursales: SUC-001, SUC-014, SUC-022.
  • Beneficios de ejemplo, según el brief comercial:
  • Jueves Dini Negocios 10% — 10 %, ticket mínimo $20.000, solo jueves, prioridad 10.
  • Gift Card 5% Septiembre — 5 %, vigente todo septiembre 2026, prioridad 50.
  • Aniversario DINO 15% — 15 % en SUC-001/SUC-014/SUC-022, con tope de descuento.

Las fechas de vigencia, la prioridad y el tope del punto 3 son valores de ejemplo para dejar un caso funcionando de punta a punta; ajustá las fechas reales de campaña desde la consola (/gestor/) una vez cargado.

Uso

python seed.py --base-url http://localhost:8080 --user admin --password <clave-admin>

La clave nunca se hardcodea. También se puede pasar por variables de entorno:

export BC_ADMIN_USER=admin
export BC_ADMIN_PASSWORD=<clave-admin>
python seed.py

Parámetros

Flag Default Descripción
--base-url http://localhost:8080 URL base de BeneficiosCenter
--user $BC_ADMIN_USER Usuario ADMIN. Obligatorio (por flag o env var)
--password $BC_ADMIN_PASSWORD Contraseña del usuario ADMIN. Obligatoria (por flag o env var)
--reset En vez de sembrar, borra únicamente lo que este script creó

Idempotencia

Antes de crear cada registro, el script lo busca por su clave natural:

  • Tipo de cliente: por codigo (DINI_NEGOCIOS / DINI_GIFTCARD).
  • Sucursal: por codigoExterno (SUC-001 / SUC-014 / SUC-022).
  • Beneficio: por nombre exacto — Beneficio no tiene campo codigo, así que no hay un código natural para usar; el nombre es la clave estable que el script usa tanto para detectar duplicados como para el --reset.

Si el registro ya existe, el script lo deja como está (no lo actualiza) e imprime =. Correr seed.py dos veces seguidas nunca duplica nada — esto es lo que confirma el paso 4 del checklist de humo.

--reset

Borra, en este orden (por dependencias de clave foránea), solo los registros cuya clave natural coincide con las del seed:

  1. Los tres beneficios (por nombre).
  2. Las tres sucursales (por codigoExterno).
  3. Los dos tipos de cliente (por codigo).

Nunca toca la auditoría (no hay endpoint de borrado para eso) ni ningún otro registro cargado manualmente desde la consola, aunque comparta tipo de cliente o sucursal con el seed.

python seed.py --reset --user admin --password <clave-admin>

Código de salida

0 si terminó sin errores (incluye el caso "ya estaba todo cargado"). 1 si faltan credenciales, si no pudo conectarse a --base-url, o si la API devolvió un error inesperado (se imprime el detalle en stderr).

Dónde sigue