Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -16,9 +16,10 @@ from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
|
|
16 |
from docx.shared import Inches
|
17 |
import plotly.io as pio
|
18 |
from pandas.plotting import table
|
|
|
19 |
#from docx.shared import RGBColor
|
20 |
|
21 |
-
|
22 |
|
23 |
#função para criar um mapa no plotly
|
24 |
def plotar_mapa_com_dois_dataframes(df1, df2):
|
@@ -55,9 +56,9 @@ def plotar_mapa_com_dois_dataframes(df1, df2):
|
|
55 |
|
56 |
return fig1 #, fig2
|
57 |
|
58 |
-
|
59 |
|
60 |
-
#função para criação de um
|
61 |
def grafico_barras(data):
|
62 |
# Calcular a média da coluna 'Vunit_hom'
|
63 |
media = data['Vunit_hom'].mean()
|
@@ -84,14 +85,30 @@ def grafico_barras(data):
|
|
84 |
# Mostrar o gráfico
|
85 |
plt.show()
|
86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
#-----------------#
|
88 |
|
|
|
89 |
def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
|
90 |
-
nome="-", prof="Engenheiro Civil", ent="CREA", reg="-",
|
91 |
lograd="-", munic="-", tipo_imo="-", solic="-", final_espec="-", objetivo="-", press="-",
|
92 |
infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
|
93 |
per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
|
94 |
-
caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação'):
|
95 |
|
96 |
|
97 |
#-------------------------------------------------INPUT AVALIANDO-------------------------------------------------------#
|
@@ -725,6 +742,15 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
725 |
valores_finais = valores_finais.replace('.', '@')
|
726 |
valores_finais = valores_finais.replace(',', '.')
|
727 |
valores_finais = valores_finais.replace('@', ',')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
|
729 |
#-----------------#
|
730 |
|
@@ -774,7 +800,15 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
774 |
Nível de Ofertas do Segmento: {ofe}
|
775 |
Liquidez: {liq}
|
776 |
"""
|
|
|
|
|
|
|
|
|
|
|
777 |
assinatura = f"""
|
|
|
|
|
|
|
778 |
{nome} | {prof}
|
779 |
{ent}{reg}
|
780 |
"""
|
@@ -940,6 +974,7 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
940 |
(resultados_formatados, "Resultados estatísticos"),
|
941 |
(intervalo_confiança, "Intervalo de confiança de 80%"),
|
942 |
(valores_finais, "Valores Calculados"),
|
|
|
943 |
('fig2.png', "Geolocalização da amostra"),
|
944 |
('scatter_plot.png', "Gráfico"),
|
945 |
(assinatura,""),
|
@@ -953,9 +988,13 @@ def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo
|
|
953 |
elif title == "Gráfico": # Adiciona gráfico como imagem
|
954 |
doc.add_picture('scatter_plot.png', width=Inches(4)) # Substitua 'scatter_plot.png' pelo seu caminho e nome do arquivo
|
955 |
else: # Adiciona outros tipos de conteúdo
|
956 |
-
run = p.add_run(content)
|
957 |
run.font.size = Pt(12)
|
958 |
p.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # Define o alinhamento para à esquerda
|
|
|
|
|
|
|
|
|
959 |
|
960 |
# Salvar o documento em um arquivo .doc
|
961 |
doc.save('relatorio_avaliacao.doc')
|
@@ -975,13 +1014,15 @@ interface = gr.Interface(
|
|
975 |
# Imput da planilha
|
976 |
gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
|
977 |
gr.Slider(3, 26, value=26, label="Número de dados", info="Escolha o número de dados", step=1),
|
978 |
-
gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel"
|
|
|
979 |
|
980 |
# Informações do Responsável Técnico
|
981 |
gr.Textbox(label="Responsável Técnico", value="-"),
|
982 |
gr.Dropdown(["Engenheiro Civil", "Arquiteto e Urbanista", "Corretor de Imóveis"],label="Profissão", value="-"),
|
983 |
gr.Dropdown(["CREA", "CAU", "CRECI"],label="Entidade de Classe", value="-"),
|
984 |
gr.Number(label="Nº do registro", value="0"),
|
|
|
985 |
|
986 |
# Introdução
|
987 |
gr.Textbox(label="Endereço (Logradouro, nº e bairro)", value="-"),
|
@@ -1009,12 +1050,17 @@ interface = gr.Interface(
|
|
1009 |
|
1010 |
# Para enquadramento
|
1011 |
gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
|
1012 |
-
label="Caracterização do avaliando", info="Para enquadramento quanto a fundamentação - ítem 1 da tabela 6 do anexo 2 - NBR 14.653-2"
|
|
|
1013 |
gr.Radio(["Apresentação de informações relativas a todas as características dos dados analisados, com foto e características observadas pelo autor do laudo",
|
1014 |
"Apresentação de informações relativas a todas as características dos dados analisados",
|
1015 |
"Apresentação de informações relativas a todas as características dos dados correspondentes aos fatores analisados"],
|
1016 |
label="Identificação dos dados",info="Para enquadramento quanto a fundamentação - ítem 3 da tabela 6 do anexo 2 - NBR 14.653-2",
|
1017 |
-
|
|
|
|
|
|
|
|
|
1018 |
],
|
1019 |
outputs=[
|
1020 |
gr.Textbox(label ="Informações do Responsável Técnico"),
|
|
|
16 |
from docx.shared import Inches
|
17 |
import plotly.io as pio
|
18 |
from pandas.plotting import table
|
19 |
+
from num2words import num2words
|
20 |
#from docx.shared import RGBColor
|
21 |
|
22 |
+
#-----------------#
|
23 |
|
24 |
#função para criar um mapa no plotly
|
25 |
def plotar_mapa_com_dois_dataframes(df1, df2):
|
|
|
56 |
|
57 |
return fig1 #, fig2
|
58 |
|
59 |
+
#-----------------#
|
60 |
|
61 |
+
#função para criação de um gráfico
|
62 |
def grafico_barras(data):
|
63 |
# Calcular a média da coluna 'Vunit_hom'
|
64 |
media = data['Vunit_hom'].mean()
|
|
|
85 |
# Mostrar o gráfico
|
86 |
plt.show()
|
87 |
|
88 |
+
#-----------------#
|
89 |
+
|
90 |
+
#função para escrever por extenso o valor atribuído
|
91 |
+
def numero_por_extenso(numero):
|
92 |
+
reais = int(numero)
|
93 |
+
|
94 |
+
extenso_reais = num2words(reais, lang='pt_BR')
|
95 |
+
|
96 |
+
if reais == 1:
|
97 |
+
extenso_reais += ' real'
|
98 |
+
else:
|
99 |
+
extenso_reais += ' reais'
|
100 |
+
|
101 |
+
return extenso_reais
|
102 |
+
|
103 |
#-----------------#
|
104 |
|
105 |
+
#função para avaliação do imóvel
|
106 |
def avaliacao_imovel(planilha, num_linhas_desejadas=3, finalidade='Defina o tipo de imovel',
|
107 |
+
nome="-", prof="Engenheiro Civil", ent="CREA", reg="-", data= None,
|
108 |
lograd="-", munic="-", tipo_imo="-", solic="-", final_espec="-", objetivo="-", press="-",
|
109 |
infra="Água Potável", serv="Coleta de Lixo", uso="Residencial", pad_reg="-", tipo_via="-", obs_gerais="-",
|
110 |
per="Sem destaque", ofe="Sem destaque", liq="Sem destaque",
|
111 |
+
caract_avaliando='Defina o item 1 de Fundamentação', ident_dados='Defina o item 3 de Fundamentação', v_atrib=0):
|
112 |
|
113 |
|
114 |
#-------------------------------------------------INPUT AVALIANDO-------------------------------------------------------#
|
|
|
742 |
valores_finais = valores_finais.replace('.', '@')
|
743 |
valores_finais = valores_finais.replace(',', '.')
|
744 |
valores_finais = valores_finais.replace('@', ',')
|
745 |
+
|
746 |
+
# Crie uma string formatada com VALOR FINAL ATRIBUÍDO
|
747 |
+
v_atrib = int(v_atrib)
|
748 |
+
valor_ext = numero_por_extenso(v_atrib)
|
749 |
+
|
750 |
+
v_relat = f"{v_atrib:,.2f}"
|
751 |
+
v_relat = v_relat.replace('.', '@')
|
752 |
+
v_relat = v_relat.replace(',', '.')
|
753 |
+
v_relat = v_relat.replace('@', ',')
|
754 |
|
755 |
#-----------------#
|
756 |
|
|
|
800 |
Nível de Ofertas do Segmento: {ofe}
|
801 |
Liquidez: {liq}
|
802 |
"""
|
803 |
+
valor_atribuido = f"""
|
804 |
+
CONCLUSÃO DE VALOR
|
805 |
+
Valor atribuído: R$ {v_relat}
|
806 |
+
({valor_ext})
|
807 |
+
"""
|
808 |
assinatura = f"""
|
809 |
+
Data: {data}
|
810 |
+
|
811 |
+
|
812 |
{nome} | {prof}
|
813 |
{ent}{reg}
|
814 |
"""
|
|
|
974 |
(resultados_formatados, "Resultados estatísticos"),
|
975 |
(intervalo_confiança, "Intervalo de confiança de 80%"),
|
976 |
(valores_finais, "Valores Calculados"),
|
977 |
+
(valor_atribuido, "Valor final atribuído"),
|
978 |
('fig2.png', "Geolocalização da amostra"),
|
979 |
('scatter_plot.png', "Gráfico"),
|
980 |
(assinatura,""),
|
|
|
988 |
elif title == "Gráfico": # Adiciona gráfico como imagem
|
989 |
doc.add_picture('scatter_plot.png', width=Inches(4)) # Substitua 'scatter_plot.png' pelo seu caminho e nome do arquivo
|
990 |
else: # Adiciona outros tipos de conteúdo
|
991 |
+
run = p.add_run(str(content))
|
992 |
run.font.size = Pt(12)
|
993 |
p.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # Define o alinhamento para à esquerda
|
994 |
+
|
995 |
+
# Adiciona alinhamento à direita para a assinatura
|
996 |
+
if title == "":
|
997 |
+
p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
|
998 |
|
999 |
# Salvar o documento em um arquivo .doc
|
1000 |
doc.save('relatorio_avaliacao.doc')
|
|
|
1014 |
# Imput da planilha
|
1015 |
gr.components.File(label="Upload planilha", type="file", info="Importação de planilha padrão com o avaliando e os dados"),
|
1016 |
gr.Slider(3, 26, value=26, label="Número de dados", info="Escolha o número de dados", step=1),
|
1017 |
+
gr.Radio(["Terrenos e glebas", "Tipologias com área construída"], label="Tipo de Imóvel", info="Escolha o tipo de imóvel",
|
1018 |
+
value="Terrenos e glebas"),
|
1019 |
|
1020 |
# Informações do Responsável Técnico
|
1021 |
gr.Textbox(label="Responsável Técnico", value="-"),
|
1022 |
gr.Dropdown(["Engenheiro Civil", "Arquiteto e Urbanista", "Corretor de Imóveis"],label="Profissão", value="-"),
|
1023 |
gr.Dropdown(["CREA", "CAU", "CRECI"],label="Entidade de Classe", value="-"),
|
1024 |
gr.Number(label="Nº do registro", value="0"),
|
1025 |
+
gr.Textbox(label="Data", value=""),
|
1026 |
|
1027 |
# Introdução
|
1028 |
gr.Textbox(label="Endereço (Logradouro, nº e bairro)", value="-"),
|
|
|
1050 |
|
1051 |
# Para enquadramento
|
1052 |
gr.Radio(["Completa p/ todos fatores analisados", "Completa p/ os fatores utilizados", "Situação paradigma"],
|
1053 |
+
label="Caracterização do avaliando", info="Para enquadramento quanto a fundamentação - ítem 1 da tabela 6 do anexo 2 - NBR 14.653-2",
|
1054 |
+
value="Completa p/ os fatores utilizados"),
|
1055 |
gr.Radio(["Apresentação de informações relativas a todas as características dos dados analisados, com foto e características observadas pelo autor do laudo",
|
1056 |
"Apresentação de informações relativas a todas as características dos dados analisados",
|
1057 |
"Apresentação de informações relativas a todas as características dos dados correspondentes aos fatores analisados"],
|
1058 |
label="Identificação dos dados",info="Para enquadramento quanto a fundamentação - ítem 3 da tabela 6 do anexo 2 - NBR 14.653-2",
|
1059 |
+
value="Apresentação de informações relativas a todas as características dos dados analisados"),
|
1060 |
+
|
1061 |
+
# Valor atribuído
|
1062 |
+
gr.Number(label="Valor atribuído", info="Digite o valor atribuído (deve ser um númwero inteiro)", value=0),
|
1063 |
+
|
1064 |
],
|
1065 |
outputs=[
|
1066 |
gr.Textbox(label ="Informações do Responsável Técnico"),
|