PV

diagramas

dev • 28/04/2026

Diagrama de Fluxo de trabalho

graph TD
    classDef ui fill:#2b5c8f,stroke:#1a365d,stroke-width:2px,color:#fff;
    classDef extract fill:#d97706,stroke:#92400e,stroke-width:2px,color:#fff;
    classDef transform fill:#059669,stroke:#064e3b,stroke-width:2px,color:#fff;
    classDef load fill:#4c1d95,stroke:#2e1065,stroke-width:2px,color:#fff;
    classDef db fill:#374151,stroke:#111827,stroke-width:2px,color:#fff;

    subgraph "Interface PySide6 (Frontend)"
        U([Usuário]) -->|Seleciona Pasta| GUI[Main Window]
        GUI --> |Dispara Thread| W{Worker/QThread}
        W -.->|"Emite Sinais (Progress/Logs)"| GUI
    end

    subgraph "Extração (Extract)"
        W -->|Abre PDFs| PDF[Leitura do PDF]
        PDF -->|Estratégia 1| C[Camelot]
        PDF -->|Estratégia 2| T[Tabula]
        C --> RAW[(DataFrames Brutos)]
        T --> RAW
    end

    subgraph "Transformação (Transform - POO)"
        RAW --> FAC{ExtratorFactory}
        FAC --> K[ExtratorLT]
        FAC --> L[ExtratorTR]
        K --> CLN[Limpeza]
        L --> CLN
        CLN --> PAD[Padronização]
        PAD --> CLN_DF[(DataFrames Padronizados)]
    end

    subgraph "Carga e Exportação (Load)"
        CLN_DF --> SQL[(SQLite3 Staging)]
        SQL --> P[Pandas Final]
        P --> XLS[Exportar .xlsx]
        XLS -->|Sinal de Concluído| W
    end

    class U,GUI,W ui;
    class PDF,C,T,RAW extract;
    class FAC,K,L,CLN,PAD,CLN_DF transform;
    class SQL db;
    class P,XLS load;

Diagrama de Classes em POO

classDiagram
    class MainWindow {
        +QPushButton btn_selecionar_pasta
        +QPushButton btn_iniciar
        +selecionar_pasta()
        +iniciar_etl()
    }

    class ETLWorker {
        +Signal progress_changed
        +run()
    }

    class ExtratorEquipamento {
        <<Abstract>>
        #DataFrame df_bruto
        +limpar_dados()*
        +padronizar_colunas()*
    }

    class ExtratorLinhaTransmissao {
        +limpar_dados()
    }

    class ExtratorTransformador {
        +limpar_dados()
    }

    MainWindow "1" *-- "1" ETLWorker
    ETLWorker "1" o-- "1" ETLPipeline
    ExtratorEquipamento <|-- ExtratorLinhaTransmissao
    ExtratorEquipamento <|-- ExtratorTransformador