Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
| 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])
|
| 222 |
return formatar_resultados(resultados[:max_combinacoes])
|
| 223 |
|
| 224 |
|
|
@@ -286,7 +288,7 @@ def get_administradoras_options():
|
|
| 286 |
return []
|
| 287 |
|
| 288 |
|
| 289 |
-
#
|
| 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()
|
|
|