Saltar a contenido

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
python -m envio_onebeat given-target --dry-run   # descarga y genera el CSV; NO sube, avisa ni audita
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):

python -m envio_onebeat limpieza-sftp --dry-run
python -m envio_onebeat limpieza-sftp

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 ERROR en 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.