main
Descarga Adjuntos Correos CPE
Daemon que descarga automáticamente adjuntos de correos electrónicos (facturas, boletas, notas de crédito) desde Microsoft Outlook, extrae metadatos de archivos XML/PDF, y los sincroniza a una carpeta compartida SMB.
Arquitectura
Requisitos
- Docker y Docker Compose
- Python 3.12 (solo para ejecución local sin Docker)
- Acceso a Microsoft Graph API (credenciales de Azure AD)
- Servidor SMB/CIFS en la red local
Instalación
Con Docker (recomendado)
# Clonar el repositorio
git clone <url-del-repositorio>
cd descarga_adjuntos_correos_cpe
# Crear los directorios necesarios
mkdir -p logs data adjuntos resultado output_json
# Configurar archivos (ver configuracion.md)
# Editar config.json y scheduler.json
# Construir y ejecutar
docker compose build
docker compose up -d
Sin Docker
# Crear entorno virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar
python main.py
Estructura del Proyecto
├── main.py # Punto de entrada - daemon principal
├── config.json # Configuracion de credenciales y rutas
├── config_loader.py # Carga de config.json en dataclasses
├── config_model.py # Definicion del esquema de configuracion
├── scheduler.json # Horarios y dias de operacion
├── outlook_utilities.py # Autenticacion MSAL y descarga de correos
├── email_services.py # Filtrado de correos y descompresion ZIP
├── document_processor.py # Extraccion de metadata de XML
├── pdf_utilities.py # Extraccion de texto y regex de PDFs
├── llm_processor.py # Fallback con LLM (Ollama) para PDFs
├── file_manager.py # Renombrado, movimiento y limpieza de archivos
├── database_utilities.py # SQLite para tracking de correos procesados
├── smb_manager.py # Montaje y sincronizacion SMB
├── logger_utilities.py # Sistema de logging con rotacion diaria
├── Dockerfile # Imagen Docker
├── docker-compose.yml # Orquestacion del servicio
├── logs/ # Archivos de log diarios
├── data/ # Base de datos SQLite
├── adjuntos/ # Descarga temporal de adjuntos
├── resultado/ # Archivos procesados y renombrados
├── output_json/ # Exportacion JSON de resultados
└── tests/ # Suite de pruebas
Comandos Utiles
# Ver logs en tiempo real
docker compose logs -f descarga-cpe
# Ver ultimas lineas de log
docker compose logs --tail=50 descarga-cpe
# Detener el servicio
docker compose stop descarga-cpe
# Reiniciar el servicio
docker compose restart descarga-cpe
# Reconstruir tras cambios en el codigo
docker compose build descarga-cpe && docker compose up -d descarga-cpe
# Verificar estado del contenedor
docker compose ps descarga-cpe
# Ejecutar pruebas
python -m pytest tests/ -v
Scheduler
El daemon opera segun los horarios definidos en scheduler.json:
| Horario | Intervalo | Modo |
|---|---|---|
| 06:30 - 13:15 | 5 minutos | rapido |
| 13:15 - 14:00 | 1 hora | full |
| 14:00 - 17:30 | 5 minutos | rapido |
| 17:30 - 21:30 | 1 hora | full |
Dias activos: Lunes a Viernes (0-4)
Logs
Los archivos de log se guardan en logs/ con formato YYYY-MM-DD.log. La rotacion es automatica al cambiar de dia. Los logs con mas de 30 dias se eliminan automaticamente al iniciar el daemon.
Description
descarga los archivos adjuntos del correo cpe (comprobante electrónicos para subirlos al servidor de la empresa como sustento de las compras
126 KiB
0 Stars
1 Watchers
0 Forks
Languages
Python
99.5%
Dockerfile
0.5%