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"),
|