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 method990) yDINI_GIFTCARD(payment method991). - 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¶
La clave nunca se hardcodea. También se puede pasar por variables de entorno:
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
nombreexacto —Beneficiono tiene campocodigo, 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:
- Los tres beneficios (por
nombre). - Las tres sucursales (por
codigoExterno). - 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.
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¶
- Probar el contrato de resolución contra los datos sembrados, en Simulador del gateway.