fschwartzer commited on
Commit
99aed09
1 Parent(s): 83eef1d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -13
app.py CHANGED
@@ -4,6 +4,8 @@ import pandas as pd
4
  from difflib import get_close_matches
5
  import re # Importa o módulo de expressões regulares
6
 
 
 
7
  def fetch_data_to_dataframe(query, limit=50, source="mercadolibre"):
8
  if source == "mercadolibre":
9
  BASE_URL = "https://api.mercadolibre.com/sites/MLB/search"
@@ -33,24 +35,26 @@ def filtrar_itens_similares(df, termo_pesquisa, limite=5):
33
  df_filtrado = df[df['Title'].isin(titulos_similares)]
34
  return df_filtrado
35
 
36
- def calcular_fator_avaliacao(EC, VU, PU, VR):
37
  pontuacoes = {'Excelente': 10, 'Bom': 8, 'Regular': 5, 'Péssimo': 2}
38
  ec_pontuacao = pontuacoes[EC]
39
-
 
 
 
 
 
 
40
  PVU = 10 - ((PU - 1) * (10 / VU))
41
  PVU = min(PVU, 10)
42
 
43
  PUB = 10 - (((VU - PU) - 1) * (10 / VU))
44
  PUB = min(PUB, 10)
45
 
46
- fator_avaliacao = max((4 * ec_pontuacao + 6 * PVU - 3 * PUB) / 100, (VR/100))
47
  return fator_avaliacao
48
 
49
- def integrated_app(query, EC, VU, PU, VR):
50
- VU = float(VU)
51
- PU = float(PU)
52
- VR = float(VR)
53
-
54
  df = fetch_data_to_dataframe(query, 50, "mercadolibre")
55
  if df.empty:
56
  return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame()
@@ -61,16 +65,18 @@ def integrated_app(query, EC, VU, PU, VR):
61
  return "Nenhum item similar encontrado.", pd.DataFrame()
62
  else:
63
  mean_price = df_similares['Price'].mean()
64
- fator_avaliacao = calcular_fator_avaliacao(EC, VU, PU, VR)
65
- valor_avaliacao = max(mean_price * fator_avaliacao, ((VR/100)* mean_price))
66
  return f"Valor Médio do Bem: R$ {mean_price:.2f}, Fator de Avaliação: {fator_avaliacao*100:.2f}%, Valor de Avaliação: R$ {valor_avaliacao:.2f}", df_similares
67
 
 
 
68
  iface = gr.Interface(fn=integrated_app,
69
  inputs=[gr.Textbox(label="Digite sua consulta"),
 
70
  gr.Radio(label="Estado de Conservação do Bem", choices=['Excelente', 'Bom', 'Regular', 'Péssimo']),
71
- gr.Number(label="Vida Útil do Bem", value=10),
72
- gr.Number(label="Período em que o bem foi utilizado", value=1),
73
- gr.Number(label="Valor Residual", value=20)],
74
  outputs=[gr.Textbox(label="Cálculo"), gr.Dataframe(label="Resultados da Pesquisa")],
75
  theme=gr.themes.Monochrome(),
76
  title = "<span style='color: gray; font-size: 48px;'>aval</span><span style='color: gray; font-size: 48px;'>ia</span><span style='color: gray; font-size: 48px;'>.BEN</span>",
 
4
  from difflib import get_close_matches
5
  import re # Importa o módulo de expressões regulares
6
 
7
+ bens_df = pd.read_excel('bens_tab.xlsx')
8
+
9
  def fetch_data_to_dataframe(query, limit=50, source="mercadolibre"):
10
  if source == "mercadolibre":
11
  BASE_URL = "https://api.mercadolibre.com/sites/MLB/search"
 
35
  df_filtrado = df[df['Title'].isin(titulos_similares)]
36
  return df_filtrado
37
 
38
+ def calcular_fator_avaliacao(EC, titulo, PU):
39
  pontuacoes = {'Excelente': 10, 'Bom': 8, 'Regular': 5, 'Péssimo': 2}
40
  ec_pontuacao = pontuacoes[EC]
41
+
42
+ # Buscar VU e VR baseado no título
43
+ bem_info = bens_df[bens_df['TITULO'] == titulo].iloc[0]
44
+ VU = bem_info['VIDA_UTIL']
45
+ VR = bem_info['VALOR_RESIDUAL']
46
+
47
+ PU = float(PU)
48
  PVU = 10 - ((PU - 1) * (10 / VU))
49
  PVU = min(PVU, 10)
50
 
51
  PUB = 10 - (((VU - PU) - 1) * (10 / VU))
52
  PUB = min(PUB, 10)
53
 
54
+ fator_avaliacao = max((4 * ec_pontuacao + 6 * PVU - 3 * PUB) / 100, VR))
55
  return fator_avaliacao
56
 
57
+ def integrated_app(query, EC, titulo, PU):
 
 
 
 
58
  df = fetch_data_to_dataframe(query, 50, "mercadolibre")
59
  if df.empty:
60
  return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame()
 
65
  return "Nenhum item similar encontrado.", pd.DataFrame()
66
  else:
67
  mean_price = df_similares['Price'].mean()
68
+ fator_avaliacao = calcular_fator_avaliacao(EC, titulo, PU)
69
+ valor_avaliacao = max(mean_price * fator_avaliacao, ((VR)* mean_price))
70
  return f"Valor Médio do Bem: R$ {mean_price:.2f}, Fator de Avaliação: {fator_avaliacao*100:.2f}%, Valor de Avaliação: R$ {valor_avaliacao:.2f}", df_similares
71
 
72
+ titulos = bens_df['TITULO'].unique().tolist()
73
+
74
  iface = gr.Interface(fn=integrated_app,
75
  inputs=[gr.Textbox(label="Digite sua consulta"),
76
+ gr.Dropdown(label="Classificação Contábil do Bem", choices=titulos),
77
  gr.Radio(label="Estado de Conservação do Bem", choices=['Excelente', 'Bom', 'Regular', 'Péssimo']),
78
+ gr.Number(label="Período utilizado (anos)", value=1)
79
+ ],
 
80
  outputs=[gr.Textbox(label="Cálculo"), gr.Dataframe(label="Resultados da Pesquisa")],
81
  theme=gr.themes.Monochrome(),
82
  title = "<span style='color: gray; font-size: 48px;'>aval</span><span style='color: gray; font-size: 48px;'>ia</span><span style='color: gray; font-size: 48px;'>.BEN</span>",