Arthur-Attili commited on
Commit
ce87491
·
verified ·
1 Parent(s): 569b41a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -8
app.py CHANGED
@@ -1,4 +1,4 @@
1
- # app.py - VERSÃO COM MARGEM ABSOLUTA FIXA
2
  import pandas as pd
3
  import requests
4
  import io
@@ -6,6 +6,9 @@ import itertools
6
  from collections import defaultdict
7
  import gradio as gr
8
 
 
 
 
9
  # 🔧 CONFIGURAÇÕES GLOBAIS
10
  FILE_ID = "1XvNz7DlWioT64uNdcfBSL8Ui2nRSi9gT"
11
  URL = f"https://drive.google.com/uc?export=download&id={FILE_ID}"
@@ -16,6 +19,7 @@ df_imovel = None
16
  grupos_imovel = None
17
  planilha_carregada = False
18
 
 
19
  def carregar_planilha():
20
  """Carrega e prepara a planilha para análise."""
21
  global df, df_imovel, grupos_imovel, planilha_carregada
@@ -117,7 +121,6 @@ def calcular_tempo_parcelas(combinacao):
117
 
118
  def definir_margens_absolutas(credito_desejado, entrada_desejada, parcela_desejada):
119
  """Define margens fixas em R$ para crédito, entrada e parcela."""
120
- # Margens em R$ (ex.: 500.000 → 480.000–520.000)
121
  margem_credito = 40_000
122
  margem_entrada = 10_000
123
  margem_parcela = 1_000
@@ -168,7 +171,7 @@ def buscar_combinacoes_otimizado(credito_desejado, entrada_desejada, parcela_des
168
 
169
  # Limites de busca
170
  max_cotas_combinacao = 15
171
- max_combinacoes_por_adm = 4000 # para evitar explosão de combinações [web:12][web:18]
172
 
173
  resultados = []
174
  total_combinacoes_testadas = 0
@@ -192,7 +195,6 @@ def buscar_combinacoes_otimizado(credito_desejado, entrada_desejada, parcela_des
192
  total_entrada = total_entrada_base + (total_credito * 0.085)
193
  total_parcelas = sum(c['valor_parcela'] for c in combinacao)
194
 
195
- # Verifica margens fixas
196
  if (credito_min <= total_credito <= credito_max and
197
  entrada_min <= total_entrada <= entrada_max and
198
  parcela_min <= total_parcelas <= parcela_max):
@@ -218,7 +220,7 @@ def buscar_combinacoes_otimizado(credito_desejado, entrada_desejada, parcela_des
218
  if not resultados:
219
  return "🚫 Nenhuma combinação adequada encontrada com os parâmetros fornecidos."
220
 
221
- resultados.sort(key=lambda x: x[2]) # ordena pela menor diferença
222
  return formatar_resultados(resultados[:max_combinacoes])
223
 
224
 
@@ -286,7 +288,7 @@ def get_administradoras_options():
286
  return []
287
 
288
 
289
- # Interface Gradio
290
  with gr.Blocks(title="Sistema de Busca de Consórcio Imóvel") as demo:
291
  gr.HTML("""
292
  <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet">
@@ -337,6 +339,22 @@ with gr.Blocks(title="Sistema de Busca de Consórcio Imóvel") as demo:
337
  gr.Markdown("---")
338
  gr.Markdown("Desenvolvido para auxiliar na busca por cotas de consórcio ideais.")
339
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
  if __name__ == "__main__":
341
- demo.launch()
342
- #
 
1
+ # app.py - VERSÃO COM MARGEM ABSOLUTA FIXA + CORS CORRIGIDO
2
  import pandas as pd
3
  import requests
4
  import io
 
6
  from collections import defaultdict
7
  import gradio as gr
8
 
9
+ # ========== NOVO: import para CORS ==========
10
+ from fastapi.middleware.cors import CORSMiddleware
11
+
12
  # 🔧 CONFIGURAÇÕES GLOBAIS
13
  FILE_ID = "1XvNz7DlWioT64uNdcfBSL8Ui2nRSi9gT"
14
  URL = f"https://drive.google.com/uc?export=download&id={FILE_ID}"
 
19
  grupos_imovel = None
20
  planilha_carregada = False
21
 
22
+
23
  def carregar_planilha():
24
  """Carrega e prepara a planilha para análise."""
25
  global df, df_imovel, grupos_imovel, planilha_carregada
 
121
 
122
  def definir_margens_absolutas(credito_desejado, entrada_desejada, parcela_desejada):
123
  """Define margens fixas em R$ para crédito, entrada e parcela."""
 
124
  margem_credito = 40_000
125
  margem_entrada = 10_000
126
  margem_parcela = 1_000
 
171
 
172
  # Limites de busca
173
  max_cotas_combinacao = 15
174
+ max_combinacoes_por_adm = 4000
175
 
176
  resultados = []
177
  total_combinacoes_testadas = 0
 
195
  total_entrada = total_entrada_base + (total_credito * 0.085)
196
  total_parcelas = sum(c['valor_parcela'] for c in combinacao)
197
 
 
198
  if (credito_min <= total_credito <= credito_max and
199
  entrada_min <= total_entrada <= entrada_max and
200
  parcela_min <= total_parcelas <= parcela_max):
 
220
  if not resultados:
221
  return "🚫 Nenhuma combinação adequada encontrada com os parâmetros fornecidos."
222
 
223
+ resultados.sort(key=lambda x: x[2])
224
  return formatar_resultados(resultados[:max_combinacoes])
225
 
226
 
 
288
  return []
289
 
290
 
291
+ # ========== CRIAÇÃO DA INTERFACE GRADIO ==========
292
  with gr.Blocks(title="Sistema de Busca de Consórcio Imóvel") as demo:
293
  gr.HTML("""
294
  <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet">
 
339
  gr.Markdown("---")
340
  gr.Markdown("Desenvolvido para auxiliar na busca por cotas de consórcio ideais.")
341
 
342
+
343
+ # ========== CORREÇÃO DO CORS ==========
344
+ # Adiciona middleware para permitir requisições do seu domínio com credenciais
345
+ demo.app.add_middleware(
346
+ CORSMiddleware,
347
+ allow_origins=[
348
+ "https://www.maxconconsorcios.com.br",
349
+ "https://maxconconsorcios.com.br",
350
+ # Para testes, você pode adicionar "http://localhost:7860" se necessário
351
+ ],
352
+ allow_credentials=True, # ESSENCIAL para resolver o erro de credenciais
353
+ allow_methods=["*"],
354
+ allow_headers=["*"],
355
+ )
356
+
357
+
358
+ # ========== INICIALIZAÇÃO ==========
359
  if __name__ == "__main__":
360
+ demo.launch()