from __future__ import annotations from dataclasses import dataclass from pathlib import Path import pandas as pd @dataclass(frozen=True) class DataBundle: df_base: pd.DataFrame df_culturas_pragas: pd.DataFrame diag_base_col: str diag_trat_col: str trat1_col: str | None trat2_col: str | None trat3_col: str | None def _first_existing_column(df: pd.DataFrame, candidates: list[str]) -> str | None: for col in candidates: if col in df.columns: return col return None def load_csv_data(base_csv_path: str | Path, culturas_csv_path: str | Path) -> DataBundle: df_base = pd.read_csv(base_csv_path) df_culturas_pragas = pd.read_csv(culturas_csv_path) diag_base_col = _first_existing_column( df_base, ["DIAGNÓSTICO", "DIAGNOSTICO", "Diagnostico", "Diagnóstico"] ) diag_trat_col = _first_existing_column( df_culturas_pragas, ["Categoria da Praga", "Diagnostico", "Diagnóstico"] ) trat1_col = _first_existing_column( df_culturas_pragas, ["Tratamento Nível 1 (Orgânico)", "Tratamento Nível 1"] ) trat2_col = _first_existing_column( df_culturas_pragas, ["Tratamento Nível 2 (Genérico)", "Tratamento Nível 2"] ) trat3_col = _first_existing_column( df_culturas_pragas, ["Tratamento Nível 3 (Agrotóxico Controlado)", "Tratamento Nível 3"], ) if diag_base_col is None or diag_trat_col is None: raise ValueError("Colunas de diagnóstico não encontradas nas planilhas.") return DataBundle( df_base=df_base, df_culturas_pragas=df_culturas_pragas, diag_base_col=diag_base_col, diag_trat_col=diag_trat_col, trat1_col=trat1_col, trat2_col=trat2_col, trat3_col=trat3_col, )