Arthur-Attili commited on
Commit
8571ff6
·
verified ·
1 Parent(s): 9bf522d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -6
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 df_imovel is None or grupos_imovel is None:
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
- # Define faixas de tolerância (ligeiramente mais amplas para melhor performance)
88
- credito_min, credito_max = credito_desejado * 0.90, credito_desejado * 1.10
89
- entrada_min, entrada_max = entrada_desejada * 0.90, entrada_desejada * 1.10
90
- parcela_min, parcela_max = parcela_desejada * 0.70, parcela_desejada * 1.30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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