Update app.py
Browse files
app.py
CHANGED
@@ -468,16 +468,15 @@ def create_interface():
|
|
468 |
# Questões
|
469 |
radio_components = []
|
470 |
for i, questao in enumerate(DISC_QUESTIONS, 1):
|
471 |
-
with gr.
|
472 |
gr.Markdown(f"### Questão {i}: {questao['pergunta']}")
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
radio_components.append(radio)
|
481 |
|
482 |
# Botão de análise
|
483 |
with gr.Row(elem_classes="center"):
|
@@ -489,7 +488,7 @@ def create_interface():
|
|
489 |
)
|
490 |
|
491 |
# Área de resultados
|
492 |
-
with gr.
|
493 |
gr.Markdown("## 📊 Resultado da Análise")
|
494 |
|
495 |
with gr.Row():
|
@@ -498,7 +497,7 @@ def create_interface():
|
|
498 |
|
499 |
# Métricas principais
|
500 |
with gr.Column():
|
501 |
-
with gr.
|
502 |
gr.Markdown("### Perfis Principais")
|
503 |
perfil_dominante = gr.Textbox(
|
504 |
label="Perfil Dominante",
|
@@ -512,8 +511,8 @@ def create_interface():
|
|
512 |
)
|
513 |
|
514 |
# Relatório detalhado
|
515 |
-
|
516 |
-
|
517 |
|
518 |
# Botões de ação
|
519 |
with gr.Row():
|
@@ -530,6 +529,28 @@ def create_interface():
|
|
530 |
""")
|
531 |
|
532 |
# Event handlers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
def update_display(*answers):
|
534 |
"""Atualiza a visibilidade dos componentes baseado nas respostas."""
|
535 |
if all(a is not None for a in answers):
|
@@ -575,18 +596,6 @@ def create_interface():
|
|
575 |
]
|
576 |
)
|
577 |
|
578 |
-
# Exemplo simples de geração de PDF (você precisará implementar a função real)
|
579 |
-
def generate_pdf(report_text):
|
580 |
-
# Implementar geração real de PDF aqui
|
581 |
-
return "report.pdf"
|
582 |
-
|
583 |
-
download_btn.click(
|
584 |
-
generate_pdf,
|
585 |
-
inputs=[output],
|
586 |
-
outputs=gr.File()
|
587 |
-
)
|
588 |
-
|
589 |
-
# Função de compartilhamento (exemplo)
|
590 |
def share_results():
|
591 |
return gr.Info("Link de compartilhamento copiado!")
|
592 |
|
|
|
468 |
# Questões
|
469 |
radio_components = []
|
470 |
for i, questao in enumerate(DISC_QUESTIONS, 1):
|
471 |
+
with gr.Group(elem_classes="question-card"):
|
472 |
gr.Markdown(f"### Questão {i}: {questao['pergunta']}")
|
473 |
+
radio = gr.Radio(
|
474 |
+
choices=[f"{perfil} - {desc}" for perfil, desc in questao['opcoes']],
|
475 |
+
label="Selecione a opção mais adequada:",
|
476 |
+
scale=0,
|
477 |
+
interactive=True
|
478 |
+
)
|
479 |
+
radio_components.append(radio)
|
|
|
480 |
|
481 |
# Botão de análise
|
482 |
with gr.Row(elem_classes="center"):
|
|
|
488 |
)
|
489 |
|
490 |
# Área de resultados
|
491 |
+
with gr.Group(visible=False, elem_classes="result-card") as result_box:
|
492 |
gr.Markdown("## 📊 Resultado da Análise")
|
493 |
|
494 |
with gr.Row():
|
|
|
497 |
|
498 |
# Métricas principais
|
499 |
with gr.Column():
|
500 |
+
with gr.Group():
|
501 |
gr.Markdown("### Perfis Principais")
|
502 |
perfil_dominante = gr.Textbox(
|
503 |
label="Perfil Dominante",
|
|
|
511 |
)
|
512 |
|
513 |
# Relatório detalhado
|
514 |
+
gr.Markdown("### 📝 Relatório Detalhado")
|
515 |
+
output = gr.Markdown()
|
516 |
|
517 |
# Botões de ação
|
518 |
with gr.Row():
|
|
|
529 |
""")
|
530 |
|
531 |
# Event handlers
|
532 |
+
def process_and_visualize(*answers):
|
533 |
+
"""Processa respostas e gera visualizações."""
|
534 |
+
percentuais = calcular_perfil(answers)
|
535 |
+
|
536 |
+
# Criar gráfico
|
537 |
+
fig = create_disc_plot(percentuais)
|
538 |
+
|
539 |
+
# Gerar relatório
|
540 |
+
report = gerar_relatorio_personalizado(percentuais)
|
541 |
+
|
542 |
+
# Identificar perfis principais
|
543 |
+
sorted_profiles = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
|
544 |
+
main_profile = list(sorted_profiles.keys())[0]
|
545 |
+
secondary_profile = list(sorted_profiles.keys())[1]
|
546 |
+
|
547 |
+
return {
|
548 |
+
plot: fig,
|
549 |
+
perfil_dominante: f"{main_profile} ({sorted_profiles[main_profile]:.1f}%)",
|
550 |
+
perfil_secundario: f"{secondary_profile} ({sorted_profiles[secondary_profile]:.1f}%)",
|
551 |
+
output: report
|
552 |
+
}
|
553 |
+
|
554 |
def update_display(*answers):
|
555 |
"""Atualiza a visibilidade dos componentes baseado nas respostas."""
|
556 |
if all(a is not None for a in answers):
|
|
|
596 |
]
|
597 |
)
|
598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
599 |
def share_results():
|
600 |
return gr.Info("Link de compartilhamento copiado!")
|
601 |
|