Arthur-Attili commited on
Commit
a7ab1cb
·
verified ·
1 Parent(s): 415ac78

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -3
app.py CHANGED
@@ -122,11 +122,43 @@ def buscar_combinacoes(credito_desejado, entrada_desejada, parcela_desejada, adm
122
  def formatar_moeda(valor):
123
  return f"R$ {valor:,.2f}".replace(",", "v").replace(".", ",").replace("v", ".")
124
 
 
 
125
  def formatar_resultados(resultados):
126
- """Formata os resultados para exibição."""
127
  resposta = ""
128
- # Limita a 15 resultados para evitar saídas muito longas
129
- for idx, (adm, combinacao, _) in enumerate(resultados[:15], 1):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  codigos = [str(c.get('codigo', 'N/A')) for c in combinacao]
131
  total_credito = sum(c['valor_credito'] for c in combinacao)
132
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)
 
122
  def formatar_moeda(valor):
123
  return f"R$ {valor:,.2f}".replace(",", "v").replace(".", ",").replace("v", ".")
124
 
125
+ from collections import defaultdict
126
+
127
  def formatar_resultados(resultados):
128
+ """Formata os resultados para exibição com diversidade entre administradoras."""
129
  resposta = ""
130
+
131
+ grouped_by_adm = defaultdict(list)
132
+ for adm, combinacao, diferenca in resultados:
133
+ grouped_by_adm[adm].append((combinacao, diferenca))
134
+
135
+ for adm in grouped_by_adm:
136
+ grouped_by_adm[adm].sort(key=lambda x: x[1])
137
+
138
+ final_resultados_diversificados = []
139
+ adm_indices = {adm: 0 for adm in grouped_by_adm.keys()}
140
+ active_adms = list(grouped_by_adm.keys())
141
+ current_adm_idx = 0
142
+
143
+ while len(final_resultados_diversificados) < 15 and active_adms:
144
+ adm_da_vez = active_adms[current_adm_idx]
145
+ idx_na_adm = adm_indices[adm_da_vez]
146
+
147
+ if idx_na_adm < len(grouped_by_adm[adm_da_vez]):
148
+ combinacao_data, _ = grouped_by_adm[adm_da_vez][idx_na_adm]
149
+ final_resultados_diversificados.append((adm_da_vez, combinacao_data))
150
+ adm_indices[adm_da_vez] += 1
151
+ else:
152
+ active_adms.pop(current_adm_idx)
153
+ if current_adm_idx >= len(active_adms) and active_adms:
154
+ current_adm_idx = 0
155
+
156
+ if active_adms:
157
+ current_adm_idx = (current_adm_idx + 1) % len(active_adms)
158
+ else:
159
+ break
160
+
161
+ for idx, (adm, combinacao) in enumerate(final_resultados_diversificados, 1):
162
  codigos = [str(c.get('codigo', 'N/A')) for c in combinacao]
163
  total_credito = sum(c['valor_credito'] for c in combinacao)
164
  total_entrada_base = sum(c['valor_entrada'] for c in combinacao)