Arthur-Attili commited on
Commit
088f7bd
·
verified ·
1 Parent(s): 936f23f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -15
app.py CHANGED
@@ -59,8 +59,8 @@ def buscar_combinacoes_eficiente(cotas, credito_min, credito_max, entrada_min, e
59
  resultados = []
60
  n = len(cotas)
61
 
62
- # Para combinações de 1 a 3 cotas (mais eficiente)
63
- for r in range(1, min(4, n) + 1):
64
  for combinacao in itertools.combinations(cotas, r):
65
  total_credito = sum(c['valor_credito'] for c in combinacao)
66
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)
@@ -77,8 +77,8 @@ def buscar_combinacoes_eficiente(cotas, credito_min, credito_max, entrada_min, e
77
 
78
  resultados.append((combinacao, diferenca))
79
 
80
- # Limita a 30 combinações por administradora
81
- if len(resultados) >= 30:
82
  return resultados
83
 
84
  return resultados
@@ -104,12 +104,12 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
104
  todas_combinacoes = []
105
 
106
  # PRIMEIRA TENTATIVA: Critérios normais
107
- credito_min1, credito_max1 = credito_desejado * 0.93, credito_desejado * 1.07
108
- entrada_min1, entrada_max1 = entrada_desejada * 0.93, entrada_desejada * 1.07
109
- parcela_min1, parcela_max1 = parcela_desejada * 0.75, parcela_desejada * 1.25
110
 
111
  for adm, cotas in grupos.items():
112
- cotas = cotas[:35] # 35 cotas por administradora
113
 
114
  combinacoes = buscar_combinacoes_eficiente(
115
  cotas, credito_min1, credito_max1, entrada_min1, entrada_max1, parcela_min1, parcela_max1
@@ -121,15 +121,15 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
121
  # SEGUNDA TENTATIVA: Se não encontrou pelo menos 15, amplia os critérios
122
  if len(todas_combinacoes) < 15:
123
  print("⚠️ Ampliando critérios de busca...")
124
- credito_min2, credito_max2 = credito_desejado * 0.90, credito_desejado * 1.10
125
- entrada_min2, entrada_max2 = entrada_desejada * 0.90, entrada_desejada * 1.10
126
- parcela_min2, parcela_max2 = parcela_desejada * 0.65, parcela_desejada * 1.35
127
 
128
  for adm, cotas in grupos.items():
129
- if len(todas_combinacoes) >= 30: # Limite total
130
  break
131
 
132
- cotas = cotas[:40] # 40 cotas por administradora
133
 
134
  combinacoes = buscar_combinacoes_eficiente(
135
  cotas, credito_min2, credito_max2, entrada_min2, entrada_max2, parcela_min2, parcela_max2
@@ -151,7 +151,7 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
151
  if not ja_existe:
152
  todas_combinacoes.append((adm, combinacao, diferenca))
153
 
154
- if len(todas_combinacoes) >= 30:
155
  break
156
 
157
  if not todas_combinacoes:
@@ -203,7 +203,6 @@ def formatar_resultados(resultados):
203
  💠 **Crédito Líquido:** {formatar_moeda(credito_real)}
204
  📊 **Taxa Total:** {taxa_percentual:.2f}% ({formatar_moeda(taxa_total)})
205
  🗓️ **Taxa Mensal:** {taxa_mensal:.2f}%
206
- ⭐ **Score:** {diferenca:.2f}
207
  """
208
 
209
  # Mensagem informativa
 
59
  resultados = []
60
  n = len(cotas)
61
 
62
+ # Para combinações de 1 a 10 cotas (aumentado para até 10 cotas)
63
+ for r in range(1, min(10, n) + 1):
64
  for combinacao in itertools.combinations(cotas, r):
65
  total_credito = sum(c['valor_credito'] for c in combinacao)
66
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)
 
77
 
78
  resultados.append((combinacao, diferenca))
79
 
80
+ # Limita a 50 combinações por administradora
81
+ if len(resultados) >= 50:
82
  return resultados
83
 
84
  return resultados
 
104
  todas_combinacoes = []
105
 
106
  # PRIMEIRA TENTATIVA: Critérios normais
107
+ credito_min1, credito_max1 = credito_desejado * 0.90, credito_desejado * 1.10
108
+ entrada_min1, entrada_max1 = entrada_desejada * 0.90, entrada_desejada * 1.10
109
+ parcela_min1, parcela_max1 = parcela_desejada * 0.70, parcela_desejada * 1.30
110
 
111
  for adm, cotas in grupos.items():
112
+ cotas = cotas[:25] # 25 cotas por administradora
113
 
114
  combinacoes = buscar_combinacoes_eficiente(
115
  cotas, credito_min1, credito_max1, entrada_min1, entrada_max1, parcela_min1, parcela_max1
 
121
  # SEGUNDA TENTATIVA: Se não encontrou pelo menos 15, amplia os critérios
122
  if len(todas_combinacoes) < 15:
123
  print("⚠️ Ampliando critérios de busca...")
124
+ credito_min2, credito_max2 = credito_desejado * 0.85, credito_desejado * 1.15
125
+ entrada_min2, entrada_max2 = entrada_desejada * 0.85, entrada_desejada * 1.15
126
+ parcela_min2, parcela_max2 = parcela_desejada * 0.60, parcela_desejada * 1.40
127
 
128
  for adm, cotas in grupos.items():
129
+ if len(todas_combinacoes) >= 40: # Limite total
130
  break
131
 
132
+ cotas = cotas[:30] # 30 cotas por administradora
133
 
134
  combinacoes = buscar_combinacoes_eficiente(
135
  cotas, credito_min2, credito_max2, entrada_min2, entrada_max2, parcela_min2, parcela_max2
 
151
  if not ja_existe:
152
  todas_combinacoes.append((adm, combinacao, diferenca))
153
 
154
+ if len(todas_combinacoes) >= 40:
155
  break
156
 
157
  if not todas_combinacoes:
 
203
  💠 **Crédito Líquido:** {formatar_moeda(credito_real)}
204
  📊 **Taxa Total:** {taxa_percentual:.2f}% ({formatar_moeda(taxa_total)})
205
  🗓️ **Taxa Mensal:** {taxa_mensal:.2f}%
 
206
  """
207
 
208
  # Mensagem informativa