RUNBOOK — job-envio-onebeat¶
Secciones: A) Envíos L06/L07/L08/L09/L10, B) Limpieza SFTP L12 y C) GivenTarget L11.
A) Envíos: onebeat_mtsskus (L06), status (L07), catalogo_atributos (L08), transactions (L09), stocklocations (L10)¶
| Dato | Valor |
|---|---|
| Programación | L08 02:30 · L10 02:36 · L06 02:38 · L09 02:42 · L07 02:51, todos los días |
| Comando | .venv/bin/python -m envio_onebeat <mtsskus\|catalogo-atributos\|transactions\|stocklocations\|status> |
| Efecto | Ejecuta un SP en Athenas, sube un CSV al SFTP de Onebeat, avisa por correo y audita |
| Salidas | /var/lib/dabra/<job>/output/ (si falla la subida) y archive/ (tras subir) |
| Logs | /var/log/dabra/<job>/<fecha_hora>.log |
| Código | Significado | Acción |
|---|---|---|
| 0 | Success, o “No data” (no se sube nada; el aviso lo indica) | — |
| 1 | Falló el SP, la lectura, la subida SFTP o el registro de auditoría | Ver log y correo “Failed”; reejecutar |
| 2 | Configuración faltante | Revisar .env |
python -m envio_onebeat transactions --dry-run # lee la vista, NO ejecuta SP ni sube ni audita
python -m envio_onebeat transactions # real
Reproceso: reejecutar es seguro el mismo día (el CSV del día se reemplaza y se vuelve a subir con el mismo nombre). Cada ejecución real vuelve a ejecutar el SP, a avisar y a insertar una fila de auditoría.
Si falló la subida: el CSV generado queda en output/. Reejecutar el job genera y sube de nuevo.
Rollback: no existe; lo ya subido al SFTP lo consume Onebeat. Ver con Onebeat si hay que anular un archivo.
Problemas conocidos: si falla el correo de aviso, el job NO falla (solo WARNING en el log). Si falla el registro de auditoría, el job termina en 1 aunque el archivo se haya subido.
C) GivenTarget: onebeat_given_target (L11)¶
| Dato | Valor |
|---|---|
| Programación | 0 2 * * * (inventario Linux; la ficha 08 dice 00:00: pendiente confirmar) |
| Comando | .venv/bin/python -m envio_onebeat given-target |
| Efecto | Lee OneBeat/GivenTarget.xlsx de SharePoint, sube GivenTarget_<fecha>.csv al SFTP de Onebeat, avisa siempre por correo y audita (Success / No Data / Failed) |
| Auditoría | id ID08 - PY_LINUX_GivenTarget |
| Logs | /var/log/dabra/onebeat_given_target/<fecha_hora>.log |
| Síntoma en el log / correo | Causa probable | Acción |
|---|---|---|
Error obteniendo token |
GRAPH_CLIENT_SECRET vencido/rotado o tenant/client incorrecto |
Actualizar el secreto en .env |
El token no trae roles Sites.* |
La app perdió el permiso o el admin consent | Revisar permisos de aplicación en Azure |
-> 404 |
Cambió el sitio o la ruta del Excel | Revisar SHAREPOINT_* y que el archivo exista |
| Correo “el Excel de SharePoint no tiene registros” | El Excel está vacío (estado No Data, exit 0) |
Avisar a quien mantiene el Excel |
| Correo “CANCELO EL PROCESO DE ENVIO” | Falló la subida SFTP; el CSV queda en output/ |
Reejecutar el job |
Reprocesar es seguro el mismo día (el CSV del día se reemplaza). El Excel debe estar actualizado antes de la hora programada: el job toma lo que haya en ese momento.
B) Limpieza SFTP: onebeat_limpieza_sftp (L12)¶
| Dato | Valor |
|---|---|
| Programación | 0 23 1 * * (mensual) |
| Duración esperada | < 1 min (propuesto; medir en las primeras ejecuciones) |
| Timeout | 15 min (propuesto) |
| Comando | .venv/bin/python -m envio_onebeat limpieza-sftp |
| Efecto | Borra archivos del SFTP con > ONEBEAT_RETENCION_DIAS días |
| Logs | /var/log/dabra/onebeat_limpieza_sftp/<fecha_hora>.log |
| Auditoría | ATHENAS.ods.tbl_control_procesos, id ID08 - PY_LINUX_limpieza_sftp |
Códigos de salida¶
| Código | Significado | Acción |
|---|---|---|
| 0 | OK | — |
| 1 | Falló la conexión SFTP o algún borrado | Ver log; reejecutar |
| 2 | Falta configuración o es inválida | Revisar .env / variables |
Ejecución manual¶
Siempre probar primero en seco (no borra ni audita):
Reproceso e idempotencia¶
Reejecutar es seguro: una segunda pasada no encuentra nada vencido. No hay que limpiar estado.
Rollback¶
No hay. Lo borrado del SFTP no se recupera desde este job. Los archivos enviados existen en el origen de cada job de envío; si se necesitara reenviar uno, reejecutar el job de envío correspondiente (L06–L11).
Problemas conocidos¶
- Si la auditoría falla se registra
ERRORen el log, pero el job termina con 0 si el borrado fue correcto (el panel alertaráAUDIT_MISSING).
Fuente: repositorio job-envio-onebeat, versión 412eb90 (con cambios locales). Página generada con tools/publicar_docs.py.