DHEIVER commited on
Commit
87719e9
·
verified ·
1 Parent(s): 0afcbfa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +146 -55
app.py CHANGED
@@ -3,6 +3,16 @@ import plotly.graph_objects as go
3
  from sentence_transformers import SentenceTransformer
4
  import numpy as np
5
 
 
 
 
 
 
 
 
 
 
 
6
  model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
7
 
8
  DISC_QUESTIONS = [
@@ -34,30 +44,30 @@ DISC_QUESTIONS = [
34
  ]
35
 
36
  DISC_INSIGHTS = {
37
- 'D': {'alto': ["Você demonstra forte capacidade de liderança e tomada de decisão",
38
- "Sua orientação para resultados é uma característica marcante",
39
- "Você tende a enfrentar desafios de forma direta e decisiva"],
40
- 'baixo': ["Você prefere uma abordagem mais colaborativa e consensual",
41
- "Sua tendência é buscar harmonia nas relações profissionais",
42
- "Você demonstra cuidado ao tomar decisões importantes"]},
43
- 'I': {'alto': ["Seu entusiasmo e otimismo são características marcantes",
44
- "Você tem grande habilidade para inspirar e motivar pessoas",
45
- "Sua comunicação expressiva é um diferencial importante"],
46
- 'baixo': ["Você prefere uma comunicação mais objetiva e focada",
47
- "Sua abordagem analítica favorece resultados concretos",
48
- "Você valoriza dados e fatos em suas interações"]},
49
- 'S': {'alto': ["Sua consistência e confiabilidade são pontos fortes",
50
- "Você demonstra grande habilidade para trabalho em equipe",
51
- "Sua paciência e capacidade de escuta são diferenciais"],
52
- 'baixo': ["Você se adapta facilmente a mudanças e novos cenários",
53
- "Sua flexibilidade é um ponto forte em ambientes dinâmicos",
54
- "Você lida bem com múltiplas tarefas simultâneas"]},
55
- 'C': {'alto': ["Sua precisão e atenção aos detalhes são notáveis",
56
- "Você tem forte capacidade analítica e organizacional",
57
- "Sua busca por qualidade é uma característica marcante"],
58
- 'baixo': ["Você demonstra flexibilidade com regras e processos",
59
- "Sua praticidade favorece resultados rápidos",
60
- "Você se adapta bem a ambientes menos estruturados"]}
61
  }
62
 
63
  def get_intensity_level(percentual):
@@ -79,15 +89,6 @@ def calcular_perfil(respostas):
79
  total = sum(contagem.values())
80
  return {k: (v/total)*100 if total > 0 else 0 for k, v in contagem.items()}
81
 
82
- import gradio as gr
83
- import plotly.graph_objects as go
84
- from sentence_transformers import SentenceTransformer
85
- import numpy as np
86
-
87
- model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
88
-
89
- # [Previous constants DISC_QUESTIONS and DISC_INSIGHTS remain the same]
90
-
91
  def create_disc_plot(percentuais):
92
  cores = {'D': '#FF4B4B', 'I': '#FFD700', 'S': '#4CAF50', 'C': '#2196F3'}
93
  fig = go.Figure(data=[go.Bar(x=list(percentuais.keys()),
@@ -116,13 +117,106 @@ def create_disc_plot(percentuais):
116
  )
117
 
118
  return fig
 
 
 
 
 
 
 
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  def gerar_relatorio(percentuais):
121
  perfis = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
122
  principal, secundario = list(perfis.keys())[:2]
123
  insights_p = "\n".join([f"• {i}" for i in generate_semantic_insights(principal, perfis[principal])])
124
  insights_s = "\n".join([f"• {i}" for i in generate_semantic_insights(secundario, perfis[secundario])])
125
- return f"""# Análise de Perfil DISC\n\n## Visão Geral\nPerfil principal: {principal} ({perfis[principal]:.1f}% - {get_intensity_level(perfis[principal])})\nPerfil secundário: {secundario} ({perfis[secundario]:.1f}% - {get_intensity_level(perfis[secundario])})\n\n## Insights Principais\n{insights_p}\n\n## Influências Secundárias\n{insights_s}\n\n## Distribuição DISC\n{', '.join([f'{k}: {v:.1f}%' for k, v in perfis.items()])}\n\n## Observação\nEste perfil representa suas tendências comportamentais naturais."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
 
127
  def process_results(*answers):
128
  if any(a is None for a in answers):
@@ -134,13 +228,6 @@ def process_results(*answers):
134
  report = gerar_relatorio(perfil)
135
 
136
  return plot, report
137
-
138
- import gradio as gr
139
- import plotly.graph_objects as go
140
- from sentence_transformers import SentenceTransformer
141
- import numpy as np
142
-
143
- # [Previous imports and constants remain the same]
144
 
145
  def create_interface():
146
  with gr.Blocks(theme=gr.themes.Soft(
@@ -185,17 +272,6 @@ def create_interface():
185
 
186
  with gr.Row():
187
  output = gr.Markdown()
188
-
189
- def process_results(*answers):
190
- if any(a is None for a in answers):
191
- gr.Warning("Por favor, responda todas as questões antes de prosseguir.")
192
- return None, None
193
-
194
- perfil = calcular_perfil(answers)
195
- plot = create_disc_plot(perfil)
196
- report = gerar_relatorio(perfil)
197
-
198
- return plot, report
199
 
200
  analyze_btn.click(
201
  fn=process_results,
@@ -210,21 +286,32 @@ def create_interface():
210
  api_name="reset"
211
  )
212
 
213
- # Add example inputs
214
  gr.Examples(
215
  examples=[
216
  ["D - Assume a liderança e toma decisões rápidas",
217
  "I - Discute com outros e busca diferentes perspectivas",
218
  "S - Ouvir atentamente e contribuir quando solicitado",
219
  "C - Analisa os impactos antes de aceitar",
220
- "D - Tornar-se mais direto e focado em resultados"]
221
- ],
222
  inputs=radios,
223
  outputs=[plot, output],
224
  fn=process_results,
225
  label="Exemplo de Respostas"
226
  )
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  return iface
229
 
230
  if __name__ == "__main__":
@@ -234,4 +321,8 @@ if __name__ == "__main__":
234
  show_error=True,
235
  server_name="0.0.0.0",
236
  server_port=7860,
 
 
 
 
237
  )
 
3
  from sentence_transformers import SentenceTransformer
4
  import numpy as np
5
 
6
+ """
7
+ Objetivo do Usuário:
8
+ Este aplicativo visa ajudar profissionais e gestores a:
9
+ 1. Identificar perfis comportamentais usando a metodologia DISC
10
+ 2. Compreender tendências naturais de comportamento em ambiente profissional
11
+ 3. Facilitar o autoconhecimento e desenvolvimento pessoal
12
+ 4. Apoiar decisões de gestão de pessoas e formação de equipes
13
+ 5. Melhorar a comunicação e relacionamento interpessoal no trabalho
14
+ """
15
+
16
  model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
17
 
18
  DISC_QUESTIONS = [
 
44
  ]
45
 
46
  DISC_INSIGHTS = {
47
+ 'D': {'alto': ["Você demonstra forte capacidade de liderança e tomada de decisão - ideal para posições gerenciais",
48
+ "Sua orientação para resultados é uma característica marcante - excelente para projetos com prazos curtos",
49
+ "Você tende a enfrentar desafios de forma direta e decisiva - ótimo para gestão de crises"],
50
+ 'baixo': ["Você prefere uma abordagem mais colaborativa e consensual - valioso em trabalhos em equipe",
51
+ "Sua tendência é buscar harmonia nas relações profissionais - importante para mediação de conflitos",
52
+ "Você demonstra cuidado ao tomar decisões importantes - útil em análises de risco"]},
53
+ 'I': {'alto': ["Seu entusiasmo e otimismo são características marcantes - ideal para vendas e networking",
54
+ "Você tem grande habilidade para inspirar e motivar pessoas - excelente para liderança de equipes",
55
+ "Sua comunicação expressiva é um diferencial importante - ótimo para apresentações e treinamentos"],
56
+ 'baixo': ["Você prefere uma comunicação mais objetiva e focada - valioso em análises técnicas",
57
+ "Sua abordagem analítica favorece resultados concretos - importante em projetos estruturados",
58
+ "Você valoriza dados e fatos em suas interações - útil em processos decisórios"]},
59
+ 'S': {'alto': ["Sua consistência e confiabilidade são pontos fortes - ideal para gestão de processos",
60
+ "Você demonstra grande habilidade para trabalho em equipe - excelente para projetos colaborativos",
61
+ "Sua paciência e capacidade de escuta são diferenciais - ótimo para atendimento ao cliente"],
62
+ 'baixo': ["Você se adapta facilmente a mudanças e novos cenários - valioso em ambientes dinâmicos",
63
+ "Sua flexibilidade é um ponto forte em ambientes dinâmicos - importante para inovação",
64
+ "Você lida bem com múltiplas tarefas simultâneas - útil em gestão de projetos"]},
65
+ 'C': {'alto': ["Sua precisão e atenção aos detalhes são notáveis - ideal para análise de dados",
66
+ "Você tem forte capacidade analítica e organizacional - excelente para planejamento estratégico",
67
+ "Sua busca por qualidade é uma característica marcante - ótimo para controle de qualidade"],
68
+ 'baixo': ["Você demonstra flexibilidade com regras e processos - valioso em ambientes criativos",
69
+ "Sua praticidade favorece resultados rápidos - importante para entregas ágeis",
70
+ "Você se adapta bem a ambientes menos estruturados - útil em startups"]}
71
  }
72
 
73
  def get_intensity_level(percentual):
 
89
  total = sum(contagem.values())
90
  return {k: (v/total)*100 if total > 0 else 0 for k, v in contagem.items()}
91
 
 
 
 
 
 
 
 
 
 
92
  def create_disc_plot(percentuais):
93
  cores = {'D': '#FF4B4B', 'I': '#FFD700', 'S': '#4CAF50', 'C': '#2196F3'}
94
  fig = go.Figure(data=[go.Bar(x=list(percentuais.keys()),
 
117
  )
118
 
119
  return fig
120
+
121
+ def analyze_profile_implications(percentuais):
122
+ """
123
+ Analisa as implicações práticas do perfil DISC para desenvolvimento profissional
124
+ """
125
+ perfis = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
126
+ principal = list(perfis.keys())[0]
127
 
128
+ implications = {
129
+ 'D': """
130
+ Recomendações de Desenvolvimento:
131
+ • Desenvolva mais paciência com processos e pessoas menos diretas
132
+ • Pratique escuta ativa em reuniões e discussões
133
+ • Considere diferentes perspectivas antes de tomar decisões
134
+
135
+ Áreas Profissionais Favoráveis:
136
+ • Gestão de projetos
137
+ • Empreendedorismo
138
+ • Liderança executiva
139
+ """,
140
+ 'I': """
141
+ Recomendações de Desenvolvimento:
142
+ • Desenvolva habilidades de organização e atenção a detalhes
143
+ • Mantenha o foco em prazos e entregas
144
+ • Equilibre socialização com produtividade
145
+
146
+ Áreas Profissionais Favoráveis:
147
+ • Vendas e Marketing
148
+ • Relações Públicas
149
+ • Treinamento e Desenvolvimento
150
+ """,
151
+ 'S': """
152
+ Recomendações de Desenvolvimento:
153
+ • Desenvolva mais assertividade em situações de conflito
154
+ • Pratique adaptação a mudanças rápidas
155
+ • Expresse mais suas opiniões em grupo
156
+
157
+ Áreas Profissionais Favoráveis:
158
+ • Recursos Humanos
159
+ • Atendimento ao Cliente
160
+ • Gestão de Processos
161
+ """,
162
+ 'C': """
163
+ Recomendações de Desenvolvimento:
164
+ • Desenvolva mais flexibilidade em situações ambíguas
165
+ • Pratique tomada de decisão mais rápida
166
+ • Equilibre análise com ação
167
+
168
+ Áreas Profissionais Favoráveis:
169
+ • Análise de Dados
170
+ • Controle de Qualidade
171
+ • Planejamento Estratégico
172
+ """
173
+ }
174
+
175
+ return implications.get(principal, "")
176
+
177
+ def get_career_recommendations(profile):
178
+ recommendations = {
179
+ 'D': "papéis de liderança e gestão de projetos desafiadores",
180
+ 'I': "funções que envolvem comunicação, vendas e trabalho com pessoas",
181
+ 'S': "posições que requerem consistência, suporte e trabalho em equipe",
182
+ 'C': "atividades que demandam precisão, análise e atenção aos detalhes"
183
+ }
184
+ return recommendations.get(profile, "diversos papéis profissionais")
185
+
186
  def gerar_relatorio(percentuais):
187
  perfis = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
188
  principal, secundario = list(perfis.keys())[:2]
189
  insights_p = "\n".join([f"• {i}" for i in generate_semantic_insights(principal, perfis[principal])])
190
  insights_s = "\n".join([f"• {i}" for i in generate_semantic_insights(secundario, perfis[secundario])])
191
+ implications = analyze_profile_implications(percentuais)
192
+
193
+ return f"""# Análise de Perfil DISC
194
+
195
+ ## Visão Geral
196
+ Perfil principal: {principal} ({perfis[principal]:.1f}% - {get_intensity_level(perfis[principal])})
197
+ Perfil secundário: {secundario} ({perfis[secundario]:.1f}% - {get_intensity_level(perfis[secundario])})
198
+
199
+ ## Insights Principais
200
+ {insights_p}
201
+
202
+ ## Influências Secundárias
203
+ {insights_s}
204
+
205
+ ## Implicações Práticas
206
+ {implications}
207
+
208
+ ## Distribuição DISC
209
+ {', '.join([f'{k}: {v:.1f}%' for k, v in perfis.items()])}
210
+
211
+ ## Comentário do Sistema
212
+ Com base no seu perfil, observamos que suas características comportamentais são mais adequadas para {get_career_recommendations(principal)}.
213
+ Este resultado representa suas tendências naturais e pode ser usado para desenvolvimento pessoal e profissional.
214
+
215
+ ## Observações Finais
216
+ • Este perfil reflete seu comportamento natural em ambiente profissional
217
+ • As recomendações são sugestões para desenvolvimento contínuo
218
+ • O perfil DISC não é uma medida de competência ou capacidade
219
+ • Use estas informações como base para seu desenvolvimento profissional"""
220
 
221
  def process_results(*answers):
222
  if any(a is None for a in answers):
 
228
  report = gerar_relatorio(perfil)
229
 
230
  return plot, report
 
 
 
 
 
 
 
231
 
232
  def create_interface():
233
  with gr.Blocks(theme=gr.themes.Soft(
 
272
 
273
  with gr.Row():
274
  output = gr.Markdown()
 
 
 
 
 
 
 
 
 
 
 
275
 
276
  analyze_btn.click(
277
  fn=process_results,
 
286
  api_name="reset"
287
  )
288
 
 
289
  gr.Examples(
290
  examples=[
291
  ["D - Assume a liderança e toma decisões rápidas",
292
  "I - Discute com outros e busca diferentes perspectivas",
293
  "S - Ouvir atentamente e contribuir quando solicitado",
294
  "C - Analisa os impactos antes de aceitar",
295
+ "D - Tornar-se mais direto e focado em resultados"]],
 
296
  inputs=radios,
297
  outputs=[plot, output],
298
  fn=process_results,
299
  label="Exemplo de Respostas"
300
  )
301
 
302
+ # Add footer with information
303
+ gr.Markdown("""
304
+ ---
305
+ ### 📝 Informações Importantes
306
+
307
+ • O teste DISC é uma ferramenta de autoconhecimento e desenvolvimento profissional
308
+ • Os resultados refletem tendências comportamentais, não habilidades ou competências
309
+ • Use as informações para desenvolvimento pessoal e melhor comunicação em equipe
310
+ • Resultados podem variar dependendo do contexto e momento profissional
311
+
312
+ © 2024 DISC Analysis Tool - Versão 2.0
313
+ """)
314
+
315
  return iface
316
 
317
  if __name__ == "__main__":
 
321
  show_error=True,
322
  server_name="0.0.0.0",
323
  server_port=7860,
324
+ debug=True,
325
+ analytics_enabled=False,
326
+ enable_queue=True,
327
+ max_threads=4
328
  )