Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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'].
|
| 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
|
| 128 |
resposta = ""
|
| 129 |
-
|
| 130 |
-
|
| 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 |
-
|
| 203 |
-
return sorted(
|
| 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
|