2.2 KiB
2.2 KiB
graph TD
Start((<b>INICIO</b><br/>main.py)) --> Init[Configurar Logger y<br/>Base de Datos SQLITE]
Init --> Auth[Obtener Token de Acceso<br/>Outlook API]
subgraph MailConfigLoop [Bucle por cada Cuenta de Correo en config.json]
direction TB
GetEmails[Consultar correos del día<br/>outlook_utilities.get_emails]
GetEmails --> FilterNew[Filtrar correos no procesados<br/>email_services.filtrar_correos_nuevos]
subgraph EmailLoop [Bucle por cada Correo Nuevo con Adjuntos]
direction TB
Download[Descargar adjuntos a /adjuntos/temp<br/>outlook_utilities.download_attachments]
Download --> Unzip[Descomprimir ZIPs y filtrar archivos<br/>email_services.procesar_adjuntos_email]
subgraph DataExtraction [Extracción de Metadatos]
direction LR
ParseXML[Parsear XML<br/>document_processor.obtener_datos_xml]
ParsePDF[Parsear PDF multilínea<br/>pdf_utilities.obtener_datos_pdf]
end
Unzip --> DataExtraction
DataExtraction --> Grouping[Lógica de Agrupación y Renombrado<br/>file_manager.procesar_renombrado_agrupado]
Grouping --> Rename[Renombrado físico de archivos<br/>F001.xml -> RUC-01-F001.xml]
Rename --> MoveLocal[Mover archivos agrupados a /resultado/<br/>file_manager.mover_archivos_a_resultado]
end
FilterNew --> EmailLoop
EmailLoop --> SMBSync[<b>Sincronización SMB</b><br/>smb_utils.sincronizar_a_smb]
subgraph SMBSteps [Proceso SMB]
direction LR
Mount[Montar Unidad según SO<br/>mount_smbfs / net use] --> Rsync[Ejecutar rsync -av<br/>--remove-source-files]
end
SMBSync --- SMBSteps
end
Auth --> MailConfigLoop
MailConfigLoop --> ExportJSON[Exportar resultados finales a JSON<br/>/output_json/YYYY-MM-DD.json]
ExportJSON --> End((<b>FIN</b>))
style Start fill:#f9f,stroke:#333,stroke-width:2px
style End fill:#f9f,stroke:#333,stroke-width:2px
style MailConfigLoop fill:#e1f5fe,stroke:#01579b,stroke-dasharray: 5 5
style EmailLoop fill:#fff3e0,stroke:#e65100
style SMBSync fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px