ESJL commited on
Commit
e4bfbaa
·
verified ·
1 Parent(s): ac74c2a

Update MOD_V_TCOND_Z4_008C.py

Browse files
Files changed (1) hide show
  1. MOD_V_TCOND_Z4_008C.py +63 -0
MOD_V_TCOND_Z4_008C.py CHANGED
@@ -7,6 +7,8 @@ import seaborn as sns
7
  from sklearn.preprocessing import MinMaxScaler
8
  import statsmodels.api as sm
9
  import matplotlib.pyplot as plt
 
 
10
 
11
  df_model = pd.read_excel('dados/MOD_V_TCOND_Z4_008C/MOD_V_TCOND_Z4_008C.xlsx')
12
 
@@ -78,6 +80,67 @@ def load_inputs():
78
 
79
  return [ANO_2020, ANO_2021, ANO_2022, ANO_2023, ANO_2024, ANO_2025, RH, INFRA, ATPRIV]
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  title = 'MOD_V_TCOND_Z4_008C (Terrenos em Condomínio)'
82
 
83
  # Texto do cabeçalho
 
7
  from sklearn.preprocessing import MinMaxScaler
8
  import statsmodels.api as sm
9
  import matplotlib.pyplot as plt
10
+ from fpdf import FPDF
11
+ import os
12
 
13
  df_model = pd.read_excel('dados/MOD_V_TCOND_Z4_008C/MOD_V_TCOND_Z4_008C.xlsx')
14
 
 
80
 
81
  return [ANO_2020, ANO_2021, ANO_2022, ANO_2023, ANO_2024, ANO_2025, RH, INFRA, ATPRIV]
82
 
83
+ def gerar_pdf_relatorio(ano_2020, ano_2021, ano_2022, ano_2023, ano_2024, ano_2025, rh, infra, atpriv,
84
+ val_imovel, lim_inf, perc_inf, lim_sup, perc_sup, grafico_path):
85
+
86
+ # Prevenção: verificar se o usuário já clicou em "Calcular"
87
+ if not val_imovel:
88
+ raise gr.Error("Por favor, clique em 'Calcular Valor' antes de gerar o PDF!")
89
+
90
+ # Mapear os anos selecionados
91
+ anos_dict = {
92
+ "2020": ano_2020, "2021": ano_2021, "2022": ano_2022,
93
+ "2023": ano_2023, "2024": ano_2024, "2025": ano_2025
94
+ }
95
+ anos_selecionados =[ano for ano, selecionado in anos_dict.items() if selecionado]
96
+ anos_str = ", ".join(anos_selecionados) if anos_selecionados else "Nenhum"
97
+
98
+ pdf = FPDF()
99
+ pdf.add_page()
100
+
101
+ # Cabeçalho
102
+ pdf.set_font("helvetica", style="B", size=16)
103
+ pdf.cell(0, 10, "Relatório de Avaliação - MOD_V_TCOND_Z4_008C", ln=True, align='C')
104
+ pdf.ln(5)
105
+
106
+ # 1. Seção de Inputs
107
+ pdf.set_fill_color(240, 240, 240)
108
+ pdf.set_font("helvetica", style="B", size=12)
109
+ pdf.cell(0, 10, " 1. Parâmetros de Entrada", ln=True, fill=True)
110
+
111
+ pdf.set_font("helvetica", size=11)
112
+ pdf.cell(0, 8, f" Área de Terreno Privativa: {atpriv}", ln=True)
113
+ pdf.cell(0, 8, f" Região Homogênea (RH): {rh}", ln=True)
114
+ pdf.cell(0, 8, f" Infraestrutura: {infra}", ln=True)
115
+ pdf.cell(0, 8, f" Anos de Referência: {anos_str}", ln=True)
116
+ pdf.ln(5)
117
+
118
+ # 2. Seção de Resultados
119
+ pdf.set_font("helvetica", style="B", size=12)
120
+ pdf.cell(0, 10, " 2. Resultados da Inferência", ln=True, fill=True)
121
+
122
+ pdf.set_font("helvetica", size=11)
123
+ pdf.cell(0, 8, f" Valor do imóvel: {val_imovel}", ln=True)
124
+ pdf.cell(0, 8, f" Limite Inferior do IC: {lim_inf} ({perc_inf})", ln=True)
125
+ pdf.cell(0, 8, f" Limite Superior do IC: {lim_sup} ({perc_sup})", ln=True)
126
+ pdf.ln(10)
127
+
128
+ # 3. Adicionar o Gráfico salvo
129
+ if grafico_path and os.path.exists(grafico_path):
130
+ pdf.set_font("helvetica", style="B", size=12)
131
+ pdf.cell(0, 10, " 3. Gráfico de Dispersão (Observados vs Previstos)", ln=True)
132
+ pdf.ln(5)
133
+ # Insere a imagem centralizada (x=15, largura=180mm)
134
+ pdf.image(grafico_path, x=15, w=180)
135
+
136
+ # Salvar PDF no disco
137
+ pdf_filename = "Relatorio_Avaliacao_Z4_008C.pdf"
138
+ pdf.output(pdf_filename)
139
+
140
+ # Retorna uma atualização para o Gradio mostrando o botão de download
141
+ return gr.update(value=pdf_filename, visible=True)
142
+
143
+
144
  title = 'MOD_V_TCOND_Z4_008C (Terrenos em Condomínio)'
145
 
146
  # Texto do cabeçalho