job-envio-onebeat¶
Jobs que intercambian archivos con Onebeat por SFTP. Este repo es el piloto 1 de la estructura estándar (ver estructura_carpeta_job.md).
Estado de migración¶
| Job | Catálogo | Estado |
|---|---|---|
onebeat_limpieza_sftp |
L12 | ✅ Migrado (piloto) |
onebeat_mtsskus |
L06 | ✅ Migrado (versión base, ver nota _14) |
onebeat_catalogo_atributos |
L08 | ✅ Migrado (versión base) |
onebeat_transactions |
L09 | ✅ Migrado (versión base) |
onebeat_stocklocations |
L10 | ✅ Migrado (versión base) |
onebeat_status |
L07 | ✅ Migrado (Status.py, versión base; ver variantes en AGENTS.md) |
onebeat_given_target |
L11 | ✅ Migrado (lógica propia: SharePoint → CSV → SFTP; ficha 00:00 vs inventario 02:00 pendiente) |
¿Qué hacen los envíos (L06, L07, L08, L09, L10)?¶
Cada madrugada (02:30 a 02:42) preparan los datos de Onebeat en la base de Athenas (ejecutan un procedimiento almacenado), exportan la vista resultante a un CSV (;, UTF-8) y lo suben al SFTP de Onebeat. Después envían un correo de aviso a soporte BI con el resultado (Success, No data o Failed) y dejan una fila en la tabla de control de procesos. Si la vista no tiene datos, no se sube nada y el aviso lo dice.
| Job | Subcomando | Procedimiento / vista | Hora |
|---|---|---|---|
L08 onebeat_catalogo_atributos |
catalogo-atributos |
sp_tbl_OneBeat_Catalogo_Atributos |
02:30 |
L10 onebeat_stocklocations |
stocklocations |
sp_tbl_OneBeat_StockLocations |
02:36 |
L06 onebeat_mtsskus |
mtsskus |
sp_tbl_OneBeat_MTSSKUs |
02:38 |
L09 onebeat_transactions |
transactions |
sp_tbl_OneBeat_Transactions |
02:42 |
L07 onebeat_status |
status |
sp_tbl_OneBeat_STATUS |
02:51 |
Si falla un envío¶
- Llegará un correo “ONEBEAT - Failed - …” y el panel mostrará
EXIT_NONZERO. - Si el fallo fue al subir al SFTP, el CSV queda en
output/y se puede reenviar reejecutando el job (es seguro: el archivo del día se reemplaza). - Detalle en
RUNBOOK.md.
¿Qué hace onebeat_given_target (L11)?¶
Cada madrugada descarga el Excel OneBeat/GivenTarget.xlsx del SharePoint de Dabratec (sitio DABRATECBI, vía Microsoft Graph), lo convierte a CSV (GivenTarget_<fecha>.csv, ;, UTF-8; las columnas Stock Location Name y Referencias como enteros) y lo sube al SFTP de Onebeat. Siempre envía un correo a soporte BI: éxito, “el Excel no tiene registros” (no se sube nada) o cancelación. Deja una fila en la tabla de control (Success / No Data / Failed). Si el Excel no está o SharePoint no responde, el job falla (exit 1), lo audita y avisa. Subcomando: given-target.
¿Qué hace onebeat_limpieza_sftp?¶
Cada día 1 de mes a las 23:00 borra del SFTP de Onebeat (carpeta de archivos enviados) los archivos con más de 30 días, para que la carpeta no crezca sin límite. No toca carpetas. Al terminar deja una fila en la tabla de control de procesos.
¿Qué hacer si falla?¶
- Mirar la alerta del panel (
EXIT_NONZERO) y abrir el log de esa ejecución desde el panel. - Un fallo suele ser de conexión (SFTP caído o clave cambiada). No hay pérdida de datos: no borra nada si no logra conectarse.
- Pasos detallados y cómo reejecutar: ver
RUNBOOK.md.
Para desarrolladores¶
python3.11 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env && chmod 600 .env # completar valores
pytest && ruff check .
python -m envio_onebeat limpieza-sftp --dry-run
# envíos: catalogo-atributos | mtsskus | transactions | stocklocations | status
# SharePoint → SFTP: given-target (requiere GRAPH_* en .env)
python -m envio_onebeat catalogo-atributos --dry-run # lee la vista, NO ejecuta el SP ni sube ni audita
Comparación con los scripts originales (no modifica la carpeta legacy):
python tools/verify_equivalence.py <ruta>/code/activo/Onebeat/PY # L06-L10
python tools/verify_given_target.py <ruta>/code/activo/Onebeat/PY # L11
Datos y logs no viven en este repo (ver estructura_carpeta_job.md, sección 4).
Fuente: repositorio job-envio-onebeat, versión 412eb90 (con cambios locales). Página generada con tools/publicar_docs.py.