Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
| 129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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)
|