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