Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -72,22 +72,47 @@ def buscar_combinacoes_otimizado(credito_desejado, entrada_desejada, parcela_des
|
|
| 72 |
global df_imovel, grupos_imovel
|
| 73 |
|
| 74 |
# Garante que o DataFrame está carregado
|
| 75 |
-
if
|
| 76 |
if not carregar_planilha():
|
| 77 |
return "❌ Erro: Planilha não carregada. Por favor, tente novamente."
|
| 78 |
|
| 79 |
# Filtra administradoras se especificado
|
| 80 |
-
grupos_filtrados = grupos_imovel
|
| 81 |
if administradoras:
|
| 82 |
grupos_filtrados = {adm: cotas for adm, cotas in grupos_imovel.items() if adm in administradoras}
|
|
|
|
|
|
|
| 83 |
|
| 84 |
if not grupos_filtrados:
|
| 85 |
return "🚫 Nenhuma cota encontrada com os filtros aplicados. Tente ajustar os parâmetros."
|
| 86 |
|
| 87 |
-
#
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
|
| 92 |
resultados = []
|
| 93 |
|
|
|
|
| 72 |
global df_imovel, grupos_imovel
|
| 73 |
|
| 74 |
# Garante que o DataFrame está carregado
|
| 75 |
+
if not planilha_carregada:
|
| 76 |
if not carregar_planilha():
|
| 77 |
return "❌ Erro: Planilha não carregada. Por favor, tente novamente."
|
| 78 |
|
| 79 |
# Filtra administradoras se especificado
|
|
|
|
| 80 |
if administradoras:
|
| 81 |
grupos_filtrados = {adm: cotas for adm, cotas in grupos_imovel.items() if adm in administradoras}
|
| 82 |
+
else:
|
| 83 |
+
grupos_filtrados = grupos_imovel
|
| 84 |
|
| 85 |
if not grupos_filtrados:
|
| 86 |
return "🚫 Nenhuma cota encontrada com os filtros aplicados. Tente ajustar os parâmetros."
|
| 87 |
|
| 88 |
+
# TOLERÂNCIAS ADAPTATIVAS - Ajusta com base no valor
|
| 89 |
+
# Para valores altos, aumenta a tolerância percentual
|
| 90 |
+
def calcular_tolerancia(valor, tolerancia_base, tolerancia_min, tolerancia_max):
|
| 91 |
+
if valor > 1000000: # Para valores acima de 1 milhão
|
| 92 |
+
# Reduz gradualmente a tolerância percentual conforme o valor aumenta
|
| 93 |
+
fator = max(tolerancia_min, min(tolerancia_max, tolerancia_base * (1000000 / valor)**0.5))
|
| 94 |
+
return fator
|
| 95 |
+
return tolerancia_base
|
| 96 |
+
|
| 97 |
+
# Tolerâncias base
|
| 98 |
+
tolerancia_credito_base = 0.10 # 10%
|
| 99 |
+
tolerancia_entrada_base = 0.10 # 10%
|
| 100 |
+
tolerancia_parcela_base = 0.30 # 30%
|
| 101 |
+
|
| 102 |
+
# Calcula tolerâncias adaptativas
|
| 103 |
+
tolerancia_credito = calcular_tolerancia(credito_desejado, tolerancia_credito_base, 0.15, 0.25)
|
| 104 |
+
tolerancia_entrada = calcular_tolerancia(entrada_desejada, tolerancia_entrada_base, 0.15, 0.25)
|
| 105 |
+
tolerancia_parcela = calcular_tolerancia(parcela_desejada, tolerancia_parcela_base, 0.40, 0.50)
|
| 106 |
+
|
| 107 |
+
# Define faixas de tolerância
|
| 108 |
+
credito_min = credito_desejado * (1 - tolerancia_credito)
|
| 109 |
+
credito_max = credito_desejado * (1 + tolerancia_credito)
|
| 110 |
+
entrada_min = entrada_desejada * (1 - tolerancia_entrada)
|
| 111 |
+
entrada_max = entrada_desejada * (1 + tolerancia_entrada)
|
| 112 |
+
parcela_min = parcela_desejada * (1 - tolerancia_parcela)
|
| 113 |
+
parcela_max = parcela_desejada * (1 + tolerancia_parcela)
|
| 114 |
+
|
| 115 |
+
print(f"🔧 Tolerâncias aplicadas: Crédito: ±{tolerancia_credito*100:.1f}%, Entrada: ±{tolerancia_entrada*100:.1f}%, Parcela: ±{tolerancia_parcela*100:.1f}%")
|
| 116 |
|
| 117 |
resultados = []
|
| 118 |
|