Arthur-Attili commited on
Commit
961a30b
·
verified ·
1 Parent(s): 12a8efc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -40
app.py CHANGED
@@ -1,8 +1,6 @@
1
  # -*- coding: utf-8 -*-
2
  """Imovel.ipynb
3
-
4
  Automatically generated by Colab.
5
-
6
  Original file is located at
7
  https://colab.research.google.com/drive/1DZAQZfrXvTy358Vg2qfUg_ge6b3kcgBy
8
  """
@@ -77,10 +75,11 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
77
  # Filtra por tipo de bem e administradoras
78
  df_filtrado = df[df['tipo_do_bem'].str.lower() == 'imovel']
79
  if administradoras:
 
80
  if isinstance(administradoras, tuple):
81
  administradoras = list(administradoras)
82
  administradoras = [a.strip().lower() for a in administradoras]
83
- df_filtrado = df_filtrado[df_filtrado['administradora'].str.lower().isin(administradoras)]
84
 
85
  if df_filtrado.empty:
86
  return "🚫 Nenhuma cota encontrada com os filtros aplicados. Tente ajustar os parâmetros."
@@ -121,43 +120,11 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
121
  def formatar_moeda(valor):
122
  return f"R$ {valor:,.2f}".replace(",", "v").replace(".", ",").replace("v", ".")
123
 
124
- from collections import defaultdict
125
-
126
  def formatar_resultados(resultados):
127
- """Formata os resultados para exibição com diversidade entre administradoras."""
128
  resposta = ""
129
-
130
- grouped_by_adm = defaultdict(list)
131
- for adm, combinacao, diferenca in resultados:
132
- grouped_by_adm[adm].append((combinacao, diferenca))
133
-
134
- for adm in grouped_by_adm:
135
- grouped_by_adm[adm].sort(key=lambda x: x[1])
136
-
137
- final_resultados_diversificados = []
138
- adm_indices = {adm: 0 for adm in grouped_by_adm.keys()}
139
- active_adms = list(grouped_by_adm.keys())
140
- current_adm_idx = 0
141
-
142
- while len(final_resultados_diversificados) < 15 and active_adms:
143
- adm_da_vez = active_adms[current_adm_idx]
144
- idx_na_adm = adm_indices[adm_da_vez]
145
-
146
- if idx_na_adm < len(grouped_by_adm[adm_da_vez]):
147
- combinacao_data, _ = grouped_by_adm[adm_da_vez][idx_na_adm]
148
- final_resultados_diversificados.append((adm_da_vez, combinacao_data))
149
- adm_indices[adm_da_vez] += 1
150
- else:
151
- active_adms.pop(current_adm_idx)
152
- if current_adm_idx >= len(active_adms) and active_adms:
153
- current_adm_idx = 0
154
-
155
- if active_adms:
156
- current_adm_idx = (current_adm_idx + 1) % len(active_adms)
157
- else:
158
- break
159
-
160
- for idx, (adm, combinacao) in enumerate(final_resultados_diversificados, 1):
161
  codigos = [str(c.get('codigo', 'N/A')) for c in combinacao]
162
  total_credito = sum(c['valor_credito'] for c in combinacao)
163
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)
@@ -199,8 +166,8 @@ def ajustar_e_buscar(credito_desejado, entrada_desejada, parcela_desejada, admin
199
  # Prepara a lista de administradoras para o Gradio
200
  def get_administradoras_options():
201
  if df is not None:
202
- adms = df[df['tipo_do_bem'].str.lower() == 'imovel']['administradora'].unique()
203
- return sorted([adm.title() for adm in adms]) # Mostra os nomes com letras maiúsculas
204
  return []
205
 
206
  # Criando a interface Gradio
 
1
  # -*- coding: utf-8 -*-
2
  """Imovel.ipynb
 
3
  Automatically generated by Colab.
 
4
  Original file is located at
5
  https://colab.research.google.com/drive/1DZAQZfrXvTy358Vg2qfUg_ge6b3kcgBy
6
  """
 
75
  # Filtra por tipo de bem e administradoras
76
  df_filtrado = df[df['tipo_do_bem'].str.lower() == 'imovel']
77
  if administradoras:
78
+ # Certifica-se de que administradoras é uma lista (Gradio retorna tupla)
79
  if isinstance(administradoras, tuple):
80
  administradoras = list(administradoras)
81
  administradoras = [a.strip().lower() for a in administradoras]
82
+ df_filtrado = df_filtrado[df_filtrado['administradora'].isin(administradoras)]
83
 
84
  if df_filtrado.empty:
85
  return "🚫 Nenhuma cota encontrada com os filtros aplicados. Tente ajustar os parâmetros."
 
120
  def formatar_moeda(valor):
121
  return f"R$ {valor:,.2f}".replace(",", "v").replace(".", ",").replace("v", ".")
122
 
 
 
123
  def formatar_resultados(resultados):
124
+ """Formata os resultados para exibição."""
125
  resposta = ""
126
+ # Limita a 15 resultados para evitar saídas muito longas
127
+ for idx, (adm, combinacao, _) in enumerate(resultados[:15], 1):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  codigos = [str(c.get('codigo', 'N/A')) for c in combinacao]
129
  total_credito = sum(c['valor_credito'] for c in combinacao)
130
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)
 
166
  # Prepara a lista de administradoras para o Gradio
167
  def get_administradoras_options():
168
  if df is not None:
169
+ adm_list = df[df['tipo_do_bem'].str.lower() == 'imovel']['administradora'].unique()
170
+ return sorted(adm_list)
171
  return []
172
 
173
  # Criando a interface Gradio