se agrega la rotación de log y se actualiza la documentación del proyecto

This commit is contained in:
George committed 2026-08-05 08:30:16 -05:00
1 parent cf2c1ee147
commit 372e6fe7f8
13 files changed
+459 -97

No files matched your search

+192
View File
@@ -0,0 +1,192 @@
# Guia de Configuracion
## config.json
Archivo de configuracion principal con credenciales y rutas. **No commitear este archivo al repositorio.**
### Estructura completa
```json
{
"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](https://portal.azure.com) > 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
```json
{
"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