Files

5.4 KiB

Guia de Configuracion

config.json

Archivo de configuracion principal con credenciales y rutas. No commitear este archivo al repositorio.

Estructura completa

{
    "hana": {
        "server": "IP_DEL_SERVIDOR",
        "port": 30015,
        "user": "USUARIO_HANA",
        "password": "CONTRASENA_HANA"
    },
    "outlook": {
        "client_id": "CLIENT_ID_AZURE_AD",
        "client_secret": "CLIENT_SECRET_AZURE_AD",
        "tenant_id": "TENANT_ID_AZURE_AD",
        "download_folder": "./adjuntos",
        "verify_ssl": false,
        "ca_bundle": null
    },
    "smb": {
        "server": "IP_SERVIDOR_SMB",
        "username": "USUARIO_SMB",
        "password": "CONTRASENA_SMB",
        "share": "NOMBRE_DEL_SHARE",
        "mount_points": {
            "windows": "S:",
            "linux": "/mnt/FileSAP",
            "mac": "/Users/usuario/FileSAP",
            "docker": "/mnt/FileSAP"
        }
    },
    "mails": [
        {
            "email": "correo@empresa.com",
            "ruta_descarga": "./adjuntos/empresa",
            "ruta_final": "./resultado/empresa",
            "base_datos": "SBO_EMPRESA_XX",
            "usuario": "manager",
            "password": "CONTRASENA_SAP",
            "smb_folder": "/COMPRAS/EMPRESA/ADJUNTOS_CORREOS/2025-03"
        }
    ]
}

Secciones

hana

Conexion a SAP HANA Database para consultas de datos de negocio.

Campo Descripcion
server IP o hostname del servidor HANA
port Puerto (por defecto 30015)
user Usuario de conexion
password Contrasena

outlook

Credenciales de la aplicacion registrada en Azure AD para Microsoft Graph API.

Campo Descripcion
client_id ID de la aplicacion en Azure AD
client_secret Secreto de la aplicacion
tenant_id ID del tenant de Azure AD
download_folder Carpeta temporal para descarga de adjuntos
verify_ssl true para verificar certificados SSL, false para omitir
ca_bundle Ruta a bundle CA personalizado, null para usar el del sistema

Como obtener credenciales de Outlook:

  1. Ir a Azure Portal > Azure Active Directory > App registrations
  2. Crear una nueva aplicacion o usar una existente
  3. Configurar permisos de Microsoft Graph: Mail.Read (delegated)
  4. Copiar el Application (client) ID, Directory (tenant) ID, y crear un Client Secret

smb

Configuracion del servidor de archivos compartidos SMB/CIFS.

Campo Descripcion
server IP o hostname del servidor SMB
username Usuario de autenticacion
password Contrasena
share Nombre del recurso compartido
mount_points Puntos de montaje segun el sistema operativo

Los mount_points se usan automaticamente segun donde se ejecute:

  • docker se usa cuando corre en contenedor
  • linux, mac, windows para ejecucion local

mails

Lista de buzones de correo a monitorear. Cada entrada es un buzón independiente.

Campo Descripcion
email Direccion del buzón de correo
ruta_descarga Carpeta temporal para descargar adjuntos de este buzón
ruta_final Carpeta donde se mueven los archivos procesados
base_datos Codigo de base de datos SAP Business One
usuario Usuario de SAP Business One
password Contrasena de SAP Business One
smb_folder Ruta destino en el share SMB para sincronizar

Se pueden configurar multiples buzones en el array mails.


scheduler.json

Define los horarios de operacion del daemon.

Estructura

{
  "HORARIOS": [
    [6, 30, 13, 15, 300, "rapido"],
    [13, 15, 14, 0, 3600, "full"],
    [14, 0, 17, 30, 300, "rapido"],
    [17, 30, 21, 30, 3600, "full"]
  ],
  "DIAS_ACTIVOS": [0, 1, 2, 3, 4]
}

HORARIOS

Cada entrada es un array con 6 valores:

[hora_inicio, minuto_inicio, hora_fin, minuto_fin, intervalo_segundos, modo]
Indice Descripcion
0 Hora de inicio (0-23)
1 Minuto de inicio (0-59)
2 Hora de fin (0-23)
3 Minuto de fin (0-59)
4 Intervalo entre ciclos en segundos
5 Modo de operacion (rapido o full)

Ejemplo: [6, 30, 13, 15, 300, "rapido"] significa:

  • Activo desde las 06:30 hasta las 13:15
  • Cada 300 segundos (5 minutos)
  • Modo rapido

DIAS_ACTIVOS

Array con los dias de la semana en formato numerico:

Valor Dia
0 Lunes
1 Martes
2 Miercoles
3 Jueves
4 Viernes
5 Sabado
6 Domingo

Ejemplo: [0, 1, 2, 3, 4] = Lunes a Viernes

Modos de operacion

  • rapido: Busca correos con frecuencia alta (cada 5 min). Indicado para horas pico.
  • full: Busca correos con frecuencia baja (cada 1 hora). Indicado para horas de baja actividad.

Variables de Entorno

Variable Valor Descripcion
PYTHONUNBUFFERED 1 Desactiva buffering de Python para logs en tiempo real
TZ America/Lima Zona horaria del contenedor

Estas se configuran en el Dockerfile y docker-compose.yml.


Seguridad

  • Nunca commitear config.json al repositorio (ya esta en .gitignore)
  • Usar volumenes Docker montados como solo lectura (:ro) para archivos sensibles
  • En produccion, considerar usar Docker secrets o variables de entorno en vez de archivos JSON