```mermaid flowchart TD subgraph Daemon["🚀 Daemon (main.py)"] A["Inicio"] --> B{"Día activo y
en horario?"} B -->|No| C["Esperar"] C --> B B -->|Sí| D["Token válido?"] D -->|No| E["get_token_headless()
headless=True
→ get_token.py headless=False"] E --> F["token.json"] D -->|Sí| F end subgraph HANA["📊 Obtener pendientes"] F --> G["Consultar HANA
obtener_pendientes()"] G --> H["542 documentos
en OPCH"] H --> I["Filtrar contra
fallas_descarga.db"] I --> J["🆕 Nuevos
(sin falla previa)"] I --> K["🔄 Reintentos
(fallas pendientes)"] end subgraph Nuevos["📄 Procesar nuevos"] L["Por cada nuevo:"] --> M["consultar_cpe()
GET api-cpe.sunat.gob.pe
/v1/.../{ruc}-{tipo}-{serie}-{num}-2"] M --> N{"Status?"} N -->|200| O["descargar_archivo()
XML (02) / PDF (01) / CDR (03)"] O --> P["ZIP → extraer en
descargas/"] P --> Q["marcar_pdf/xml_descargado()
UPDATE HANA OPCH"] Q --> R["✅ OK"] N -->|401| S["⚠️ TokenExpiredError"] S --> T["Renovar token"] T --> M N -->|500/404/otros| U["registrar_falla()
→ SQLite con backoff"] end subgraph Reintentos["🔄 Procesar reintentos"] V["Por cada reintento
(backoff cumplido):"] --> W["consultar_cpe()"] W --> X{"Status?"} X -->|200| Y["descargar_archivo()"] Y --> Z["marcar_pdf/xml_descargado()"] Z --> AA["eliminar_falla()
DELETE FROM fallas"] AA --> AB["✅ OK + 🗑️ quitado de SQLite"] X -->|401| AC["Renovar token → reintentar"] X -->|500/404/otros| AD["actualizar_falla()
incrementar intento
→ próximo backoff"] end AD --> AF["sincronizar_a_smb()
montar SMB
rsync PDF/XML → NAS
limpiar JSON/ZIP"] AF --> AE["Esperar intervalo
→ próximo ciclo"] R --> AF U --> AD AB --> AF style A fill:#1a1a2e,stroke:#e94560,color:#fff style E fill:#16213e,stroke:#0f3460,color:#fff style G fill:#0f3460,stroke:#e94560,color:#fff style M fill:#533483,stroke:#e94560,color:#fff style O fill:#1a1a2e,stroke:#e94560,color:#fff style P fill:#16213e,stroke:#0f3460,color:#fff style Q fill:#0f3460,stroke:#e94560,color:#fff style U fill:#3d0000,stroke:#ff4444,color:#fff style AA fill:#003300,stroke:#44ff44,color:#fff style AD fill:#3d0000,stroke:#ff4444,color:#fff ```