Spaces:
Sleeping
Sleeping
fschwartzer
commited on
Commit
•
99aed09
1
Parent(s):
83eef1d
Update app.py
Browse files
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,
|
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,
|
47 |
return fator_avaliacao
|
48 |
|
49 |
-
def integrated_app(query, EC,
|
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,
|
65 |
-
valor_avaliacao = max(mean_price * fator_avaliacao, ((VR
|
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="
|
72 |
-
|
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>",
|