DHEIVER commited on
Commit
e6e1322
·
verified ·
1 Parent(s): 240c707

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +260 -317
app.py CHANGED
@@ -6,353 +6,296 @@ import numpy as np
6
  model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
7
 
8
  def get_semantic_similarity(text1, text2):
9
- """
10
- Calcula similaridade semântica entre dois textos usando SentenceTransformer
11
- """
12
  embedding1 = model.encode(text1)
13
  embedding2 = model.encode(text2)
14
  return np.dot(embedding1, embedding2) / (np.linalg.norm(embedding1) * np.linalg.norm(embedding2))
15
 
16
- def get_profile_description(perfil, percentual):
17
- """
18
- Gera descrição do perfil baseada na similaridade semântica
19
- """
20
- base_descriptions = {
21
- 'D': [
22
- "Focado em resultados e ação direta",
23
- "Orientado a desafios e competição",
24
- "Busca controle e liderança",
25
- "Direto e assertivo nas interações"
26
- ],
27
- 'I': [
28
- "Comunicativo e entusiasta",
29
- "Focado em relacionamentos e interações",
30
- "Otimista e motivador",
31
- "Expressivo e sociável"
32
- ],
33
- 'S': [
34
- "Estável e consistente",
35
- "Focado em cooperação e harmonia",
36
- "Paciente e confiável",
37
- "Bom ouvinte e apoiador"
38
- ],
39
- 'C': [
40
- "Analítico e preciso",
41
- "Focado em qualidade e precisão",
42
- "Sistemático e organizado",
43
- "Detalhista e criterioso"
44
- ]
 
 
 
 
 
 
45
  }
46
-
47
- # Cria descrição contextual baseada no percentual
48
- context = f"Perfil {perfil} com intensidade de {percentual:.1f}%"
49
-
50
- # Encontra as descrições mais semanticamente relevantes
51
- descriptions = base_descriptions[perfil]
52
- similarities = [get_semantic_similarity(context, desc) for desc in descriptions]
53
- most_relevant = [desc for _, desc in sorted(zip(similarities, descriptions), reverse=True)]
54
-
55
- return most_relevant[:2]
56
 
57
- def generate_profile_analysis(perfil_data):
58
- """
59
- Gera análise detalhada usando embeddings para personalização
60
- """
61
- # Ordena perfis por percentual
62
- perfis_ordenados = sorted(perfil_data.items(), key=lambda x: x[1], reverse=True)
63
- perfil_principal = perfis_ordenados[0]
64
- perfil_secundario = perfis_ordenados[1]
65
-
66
- # Gera descrições personalizadas usando embeddings
67
- descricoes_principais = get_profile_description(perfil_principal[0], perfil_principal[1])
68
- descricoes_secundarias = get_profile_description(perfil_secundario[0], perfil_secundario[1])
69
-
70
- # Gera análise de combinação usando similaridade semântica
71
- combinacao_context = f"""
72
- Perfil principal {perfil_principal[0]} ({perfil_principal[1]:.1f}%)
73
- combinado com {perfil_secundario[0]} ({perfil_secundario[1]:.1f}%)
74
- """
75
-
76
- combination_templates = [
77
- f"Combina {descricoes_principais[0].lower()} com {descricoes_secundarias[0].lower()}",
78
- f"Une capacidade de {descricoes_principais[1].lower()} com {descricoes_secundarias[1].lower()}",
79
- ]
80
-
81
- # Seleciona o template mais relevante baseado na similaridade semântica
82
- combination_similarities = [get_semantic_similarity(combinacao_context, template)
83
- for template in combination_templates]
84
- best_combination = combination_templates[np.argmax(combination_similarities)]
85
-
86
- # Gera recomendações personalizadas
87
- career_recommendations = generate_career_recommendations(
88
- perfil_principal[0], perfil_secundario[0],
89
- perfil_principal[1], perfil_secundario[1]
90
- )
91
-
92
- # Gera análise de comunicação personalizada
93
- communication_style = generate_communication_analysis(
94
- perfil_principal[0], perfil_secundario[0],
95
- perfil_principal[1], perfil_secundario[1]
96
- )
97
-
98
- return f"""# Análise Detalhada do Perfil DISC
99
 
100
- ## Características Principais
101
- {descricoes_principais[0]}
102
- {descricoes_principais[1]}
 
 
 
 
 
 
103
 
104
- ## Influência Secundária
105
- {descricoes_secundarias[0]}
106
- {descricoes_secundarias[1]}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
- ## Combinação de Perfis
109
- {best_combination}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
- ## Recomendações de Carreira
112
- {career_recommendations}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
- ## Estilo de Comunicação
115
- {communication_style}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
- ## Desenvolvimento Sugerido
118
- {generate_development_suggestions(perfil_principal[0], perfil_principal[1])}
119
- """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
 
121
- def generate_career_recommendations(primary_profile, secondary_profile, primary_value, secondary_value):
122
- """
123
- Gera recomendações de carreira usando similaridade semântica
124
- """
125
- context = f"Perfil {primary_profile}({primary_value:.1f}%) com {secondary_profile}({secondary_value:.1f}%)"
126
 
127
- career_options = [
128
- "• Ideal para papéis de liderança e gestão de projetos",
129
- "• Excelente para funções que exigem comunicação e relacionamento",
130
- "• Ótimo para posições que necessitam consistência e confiabilidade",
131
- "• Adequado para funções analíticas e de planejamento"
132
- ]
133
 
134
- similarities = [get_semantic_similarity(context, option) for option in career_options]
135
- best_matches = [career_options[i] for i in np.argsort(similarities)[-2:]]
 
 
136
 
137
- return "\n".join(best_matches)
138
 
139
- def generate_communication_analysis(primary_profile, secondary_profile, primary_value, secondary_value):
140
- """
141
- Gera análise de comunicação usando similaridade semântica
142
- """
143
- context = f"Estilo de comunicação {primary_profile}({primary_value:.1f}%) com {secondary_profile}({secondary_value:.1f}%)"
144
-
145
- communication_styles = [
146
- "• Comunicação direta e orientada a resultados",
147
- "• Comunicação expressiva e entusiasta",
148
- "• Comunicação paciente e atenciosa",
149
- "• Comunicação precisa e detalhada"
150
- ]
151
-
152
- similarities = [get_semantic_similarity(context, style) for style in communication_styles]
153
- best_match = communication_styles[np.argmax(similarities)]
154
-
155
- return best_match
156
 
157
- def generate_development_suggestions(profile, value):
158
- """
159
- Gera sugestões de desenvolvimento usando similaridade semântica
160
- """
161
- context = f"Desenvolvimento para perfil {profile} com {value:.1f}%"
162
-
163
- development_options = {
164
- 'D': [
165
- "• Desenvolver mais paciência e empatia nas interações",
166
- "• Praticar escuta ativa e consideração por outras perspectivas",
167
- "• Balancear assertividade com colaboração"
168
- ],
169
- 'I': [
170
- "• Desenvolver foco em detalhes e organização",
171
- "• Praticar análise mais profunda antes de agir",
172
- "• Equilibrar entusiasmo com pragmatismo"
173
- ],
174
- 'S': [
175
- "• Desenvolver mais flexibilidade com mudanças",
176
- "• Praticar tomada de decisão mais rápida",
177
- "• Expressar opiniões com mais frequência"
178
- ],
179
- 'C': [
180
- "• Desenvolver mais flexibilidade com regras",
181
- "• Praticar decisões com menos análise",
182
- "• Balancear perfeccionismo com praticidade"
183
- ]
184
- }
185
-
186
- options = development_options[profile]
187
- similarities = [get_semantic_similarity(context, option) for option in options]
188
- best_matches = [options[i] for i in np.argsort(similarities)[-2:]]
189
-
190
- return "\n".join(best_matches)
191
 
192
- def gerar_relatorio(percentuais):
193
- """
194
- Função principal para gerar o relatório completo
195
- """
196
- analise_detalhada = generate_profile_analysis(percentuais)
197
-
198
- return f"""# Análise de Perfil DISC
199
 
200
- ## Distribuição DISC
201
- {', '.join([f'{k}: {v:.1f}%' for k, v in percentuais.items()])}
202
 
203
- {analise_detalhada}
 
204
 
205
- ## Observações Finais
206
- • Este perfil reflete suas tendências comportamentais naturais
207
- • Use estas informações como base para desenvolvimento profissional
208
- • O perfil DISC é uma ferramenta de autoconhecimento
209
- """
210
 
211
- def calcular_perfil(respostas):
212
- contagem = {k: sum(1 for r in respostas if r and r.startswith(k)) for k in 'DISC'}
213
- total = sum(contagem.values())
214
- return {k: (v/total)*100 if total > 0 else 0 for k, v in contagem.items()}
215
 
216
- def create_disc_plot(percentuais):
217
- cores = {'D': '#FF4B4B', 'I': '#FFD700', 'S': '#4CAF50', 'C': '#2196F3'}
218
- fig = go.Figure(data=[go.Bar(x=list(percentuais.keys()),
219
- y=list(percentuais.values()),
220
- marker_color=[cores[k] for k in percentuais.keys()],
221
- text=[f'{v:.1f}%' for v in percentuais.values()],
222
- textposition='auto')])
223
-
224
- fig.update_layout(
225
- title={
226
- 'text': 'Perfil DISC',
227
- 'y':0.95,
228
- 'x':0.5,
229
- 'xanchor': 'center',
230
- 'yanchor': 'top',
231
- 'font': {'size': 24, 'color': '#333333'}
232
- },
233
- yaxis_range=[0, 100],
234
- template='plotly_white',
235
- height=400,
236
- margin=dict(l=40, r=40, t=60, b=40),
237
- paper_bgcolor='rgba(0,0,0,0)',
238
- plot_bgcolor='rgba(0,0,0,0)',
239
- yaxis_title="Percentual (%)",
240
- xaxis_title="Dimensões DISC"
241
- )
242
-
243
- return fig
244
 
245
- DISC_QUESTIONS = [
246
- {"pergunta": "Em situações de trabalho em equipe, você geralmente:",
247
- "opcoes": [("D", "Assume a liderança e toma decisões rápidas"),
248
- ("I", "Motiva o grupo e mantém o ambiente animado"),
249
- ("S", "Apoia os colegas e mantém a harmonia"),
250
- ("C", "Analisa detalhadamente antes de agir")]},
251
- {"pergunta": "Quando enfrenta um desafio no trabalho, você:",
252
- "opcoes": [("D", "Enfrenta diretamente e busca soluções imediatas"),
253
- ("I", "Discute com outros e busca diferentes perspectivas"),
254
- ("S", "Mantém a calma e segue um processo estabelecido"),
255
- ("C", "Pesquisa todas as informações disponíveis primeiro")]},
256
- {"pergunta": "Em reuniões profissionais, você costuma:",
257
- "opcoes": [("D", "Ir direto ao ponto e focar em resultados"),
258
- ("I", "Participar ativamente e compartilhar ideias"),
259
- ("S", "Ouvir atentamente e contribuir quando solicitado"),
260
- ("C", "Tomar notas e questionar os detalhes")]},
261
- {"pergunta": "Ao lidar com mudanças no ambiente de trabalho, você:",
262
- "opcoes": [("D", "Abraça a mudança e lidera a implementação"),
263
- ("I", "Entusiasma os outros sobre as novas possibilidades"),
264
- ("S", "Adapta-se gradualmente seguindo o processo"),
265
- ("C", "Analisa os impactos antes de aceitar")]},
266
- {"pergunta": "Sob pressão no trabalho, você tende a:",
267
- "opcoes": [("D", "Tornar-se mais direto e focado em resultados"),
268
- ("I", "Buscar apoio e interação com a equipe"),
269
- ("S", "Manter a calma e seguir metodicamente"),
270
- ("C", "Concentrar-se em detalhes e procedimentos")]}
271
- ]
272
 
273
- def process_results(*answers):
274
- if any(a is None for a in answers):
275
- gr.Warning("Por favor, responda todas as questões antes de prosseguir.")
276
- return None, None
277
-
278
- # Extrai apenas a letra do perfil das respostas
279
- respostas_processadas = [a.split(' - ')[0] if a else None for a in answers]
280
-
281
- perfil = calcular_perfil(respostas_processadas)
282
- plot = create_disc_plot(perfil)
283
- report = gerar_relatorio(perfil)
284
-
285
- return plot, report
286
 
287
- def create_interface():
288
- with gr.Blocks(theme=gr.themes.Soft(
289
- primary_hue="blue",
290
- secondary_hue="purple",
291
- neutral_hue="slate",
292
- font=["Inter", "ui-sans-serif", "system-ui"]
293
- )) as iface:
294
- gr.Markdown(
295
- """
296
- # 🎯 Análise de Perfil DISC
297
- ### Descubra suas características comportamentais dominantes
298
-
299
- Uma análise personalizada do seu perfil comportamental DISC:
300
- - **D (Dominância)**: Foco em resultados e assertividade
301
- - **I (Influência)**: Foco em relacionamentos e comunicação
302
- - **S (Estabilidade)**: Foco em cooperação e consistência
303
- - **C (Conformidade)**: Foco em qualidade e precisão
304
-
305
- ---
306
- """)
307
-
308
- with gr.Row():
309
- with gr.Column(scale=2):
310
- radios = []
311
- for i, q in enumerate(DISC_QUESTIONS):
312
- radio = gr.Radio(
313
- choices=[f"{p} - {d}" for p, d in q['opcoes']],
314
- label=f"{i+1}. {q['pergunta']}",
315
- container=True,
316
- scale=2
317
- )
318
- gr.Markdown("---")
319
- radios.append(radio)
320
-
321
- with gr.Row():
322
- analyze_btn = gr.Button("📊 Analisar Perfil", size="lg", variant="primary")
323
- reset_btn = gr.Button("🔄 Novo Teste", size="lg", variant="secondary")
324
 
325
- with gr.Row():
326
- plot = gr.Plot(label="Gráfico de Perfil DISC")
327
-
328
- with gr.Row():
329
- output = gr.Markdown()
330
-
331
- analyze_btn.click(
332
- fn=process_results,
333
- inputs=radios,
334
- outputs=[plot, output],
335
- api_name="analyze"
336
- )
337
-
338
- reset_btn.click(
339
- fn=lambda: [None]*(len(radios)+2),
340
- outputs=radios+[plot, output],
341
- api_name="reset"
342
- )
343
 
344
- gr.Markdown("""
345
- ---
346
- ### 📝 Informações Importantes
347
-
348
- O teste DISC é uma ferramenta de autoconhecimento e desenvolvimento profissional
349
- Os resultados refletem tendências comportamentais naturais
350
- Use as informações para desenvolvimento pessoal e melhor comunicação em equipe
351
-
352
- © 2024 DISC Analysis Tool
353
- """)
354
 
355
- return iface
356
 
357
  if __name__ == "__main__":
358
  iface = create_interface()
 
6
  model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
7
 
8
  def get_semantic_similarity(text1, text2):
9
+ """Calcula similaridade semântica entre dois textos"""
 
 
10
  embedding1 = model.encode(text1)
11
  embedding2 = model.encode(text2)
12
  return np.dot(embedding1, embedding2) / (np.linalg.norm(embedding1) * np.linalg.norm(embedding2))
13
 
14
+ def analyze_profile_behaviors(profile, value):
15
+ """Analisa comportamentos profissionais específicos"""
16
+ behaviors = {
17
+ 'D': """No ambiente profissional, você demonstra uma forte orientação para resultados e ação.
18
+ Suas características principais incluem:
19
+ Abordagem direta e decisiva na resolução de problemas
20
+ Forte capacidade de iniciativa e autodireção
21
+ Preferência por desafios e situações competitivas
22
+ Habilidade natural para liderar e influenciar
23
+ Foco constante em eficiência e produtividade
24
+ • Capacidade de tomar decisões rápidas sob pressão""",
25
+ 'I': """No ambiente profissional, você demonstra forte orientação para pessoas e relacionamentos.
26
+ Suas características principais incluem:
27
+ Excelente habilidade de comunicação e persuasão
28
+ Capacidade natural de motivar e inspirar outros
29
+ Criatividade e entusiasmo em novas iniciativas
30
+ • Facilidade para networking e construção de relações
31
+ Adaptabilidade em ambientes sociais diversos
32
+ Energia positiva e otimismo contagiante""",
33
+ 'S': """No ambiente profissional, você demonstra forte orientação para estabilidade e cooperação.
34
+ Suas características principais incluem:
35
+ Excelente capacidade de trabalho em equipe
36
+ • Consistência e confiabilidade nas entregas
37
+ Paciência e diplomacia no trato com pessoas
38
+ Lealdade e comprometimento com a equipe
39
+ Habilidade para manter a calma sob pressão
40
+ Foco em criar ambientes harmoniosos""",
41
+ 'C': """No ambiente profissional, você demonstra forte orientação para qualidade e precisão.
42
+ Suas características principais incluem:
43
+ • Excepcional atenção aos detalhes e precisão
44
+ • Pensamento analítico e sistemático
45
+ • Excelente capacidade de planejamento
46
+ • Foco em qualidade e excelência
47
+ • Habilidade para análise crítica
48
+ • Disciplina e organização exemplares"""
49
  }
50
+ return behaviors.get(profile)
 
 
 
 
 
 
 
 
 
51
 
52
+ def analyze_leadership_style(primary, secondary):
53
+ """Analisa estilo de liderança baseado na combinação de perfis"""
54
+ styles = {
55
+ 'D': {
56
+ 'D': "Liderança diretiva e orientada a resultados, com forte capacidade de decisão e foco em eficiência",
57
+ 'I': "Liderança carismática e orientada a resultados, combinando assertividade com habilidades interpessoais",
58
+ 'S': "Liderança estável e decisiva, equilibrando resultados com harmonia da equipe",
59
+ 'C': "Liderança estratégica e analítica, com foco em resultados precisos e bem planejados"
60
+ },
61
+ 'I': {
62
+ 'D': "Liderança inspiradora e dinâmica, motivando através do entusiasmo e orientação para ação",
63
+ 'I': "Liderança altamente carismática e social, com foco em motivação e engajamento",
64
+ 'S': "Liderança colaborativa e motivacional, criando ambientes positivos e estáveis",
65
+ 'C': "Liderança comunicativa e estruturada, combinando entusiasmo com organização"
66
+ },
67
+ 'S': {
68
+ 'D': "Liderança consistente e equilibrada, mantendo estabilidade com momentos de assertividade",
69
+ 'I': "Liderança apoiadora e participativa, focando em harmonia e colaboração",
70
+ 'S': "Liderança extremamente estável e confiável, com forte foco em cooperação",
71
+ 'C': "Liderança metódica e paciente, combinando consistência com atenção aos detalhes"
72
+ },
73
+ 'C': {
74
+ 'D': "Liderança analítica e decisiva, baseada em dados e orientada a resultados",
75
+ 'I': "Liderança sistemática e comunicativa, equilibrando precisão com relacionamentos",
76
+ 'S': "Liderança detalhista e cooperativa, focando em qualidade e estabilidade",
77
+ 'C': "Liderança altamente analítica e estruturada, com foco em excelência e precisão"
78
+ }
79
+ }
80
+ return styles.get(primary, {}).get(secondary, "Estilo de liderança equilibrado e adaptativo")
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
+ def analyze_decision_making(primary, secondary):
83
+ """Analisa processo de tomada de decisão"""
84
+ decision_styles = {
85
+ 'D': "Processo decisório rápido e direto, focado em resultados imediatos e eficiência",
86
+ 'I': "Decisões baseadas em intuição e impacto nas pessoas, com consideração pelo entusiasmo geral",
87
+ 'S': "Processo decisório cuidadoso e considerado, buscando estabilidade e consenso",
88
+ 'C': "Tomada de decisão analítica e detalhada, baseada em dados e análise minuciosa"
89
+ }
90
+ return decision_styles.get(primary, "Processo decisório equilibrado")
91
 
92
+ def analyze_conflict_management(profile):
93
+ """Analisa estilo de gestão de conflitos"""
94
+ conflict_styles = {
95
+ 'D': """Abordagem direta e assertiva na gestão de conflitos:
96
+ • Enfrenta desafios de frente
97
+ • Busca resoluções rápidas e eficientes
98
+ • Foca em resultados práticos
99
+ • Pode ser percebido como muito direto""",
100
+ 'I': """Abordagem diplomática e social na gestão de conflitos:
101
+ • Busca soluções que agradem a todos
102
+ • Usa carisma e humor para aliviar tensões
103
+ • Foca em manter relacionamentos positivos
104
+ • Pode evitar confrontos diretos""",
105
+ 'S': """Abordagem paciente e mediadora na gestão de conflitos:
106
+ • Busca harmonia e estabilidade
107
+ • Ouve todas as partes envolvidas
108
+ • Foca em soluções consensuais
109
+ • Pode demorar para tomar posição""",
110
+ 'C': """Abordagem analítica e factual na gestão de conflitos:
111
+ • Analisa todas as perspectivas
112
+ • Busca soluções baseadas em fatos
113
+ • Foca em resoluções lógicas
114
+ • Pode parecer distante emocionalmente"""
115
+ }
116
+ return conflict_styles.get(profile)
117
 
118
+ def analyze_motivations(profile):
119
+ """Analisa principais motivadores"""
120
+ motivations = {
121
+ 'D': """Seus principais motivadores incluem:
122
+ • Desafios e competição
123
+ • Autoridade e autonomia
124
+ • Resultados e conquistas
125
+ • Oportunidades de liderança""",
126
+ 'I': """Seus principais motivadores incluem:
127
+ • Reconhecimento social
128
+ • Interação com pessoas
129
+ • Ambientes dinâmicos
130
+ • Oportunidades de expressão""",
131
+ 'S': """Seus principais motivadores incluem:
132
+ • Estabilidade e segurança
133
+ • Harmonia nas relações
134
+ • Trabalho em equipe
135
+ • Ambiente previsível""",
136
+ 'C': """Seus principais motivadores incluem:
137
+ • Qualidade e precisão
138
+ • Oportunidades de especialização
139
+ • Ambiente estruturado
140
+ • Reconhecimento técnico"""
141
+ }
142
+ return motivations.get(profile)
143
 
144
+ def generate_immediate_actions(profile):
145
+ """Gera ações imediatas para desenvolvimento"""
146
+ actions = {
147
+ 'D': """Ações prioritárias para desenvolvimento imediato:
148
+ 1. Praticar escuta ativa diariamente
149
+ 2. Desenvolver paciência em reuniões longas
150
+ 3. Incluir mais pessoas no processo decisório
151
+ 4. Documentar feedback da equipe regularmente""",
152
+ 'I': """Ações prioritárias para desenvolvimento imediato:
153
+ 1. Implementar sistema de organização pessoal
154
+ 2. Estabelecer prazos realistas para entregas
155
+ 3. Focar em um projeto por vez
156
+ 4. Manter registro detalhado de atividades""",
157
+ 'S': """Ações prioritárias para desenvolvimento imediato:
158
+ 1. Praticar tomada de decisão mais rápida
159
+ 2. Expressar opiniões em reuniões
160
+ 3. Iniciar mudanças pequenas mas significativas
161
+ 4. Assumir mais riscos calculados""",
162
+ 'C': """Ações prioritárias para desenvolvimento imediato:
163
+ 1. Estabelecer limites de tempo para análises
164
+ 2. Praticar decisões com menos dados
165
+ 3. Aumentar interações sociais no trabalho
166
+ 4. Delegar tarefas mais frequentemente"""
167
+ }
168
+ return actions.get(profile)
169
 
170
+ def generate_development_strategies(primary, secondary):
171
+ """Gera estratégias de desenvolvimento personalizadas"""
172
+ strategies = {
173
+ 'D': """Estratégias específicas para seu desenvolvimento:
174
+ • Desenvolvimento de inteligência emocional
175
+ • Prática de comunicação mais empática
176
+ • Exercícios de paciência e escuta
177
+ • Técnicas de feedback construtivo
178
+ • Mentoria em liderança participativa""",
179
+ 'I': """Estratégias específicas para seu desenvolvimento:
180
+ • Desenvolvimento de habilidades analíticas
181
+ • Práticas de organização e planejamento
182
+ • Técnicas de gestão do tempo
183
+ • Exercícios de foco e concentração
184
+ • Mentoria em gestão de projetos""",
185
+ 'S': """Estratégias específicas para seu desenvolvimento:
186
+ • Desenvolvimento de assertividade
187
+ • Práticas de gestão de mudanças
188
+ • Exercícios de tomada de decisão
189
+ • Técnicas de comunicação proativa
190
+ • Mentoria em liderança transformacional""",
191
+ 'C': """Estratégias específicas para seu desenvolvimento:
192
+ • Desenvolvimento de habilidades interpessoais
193
+ • Práticas de comunicação empática
194
+ • Exercícios de flexibilidade
195
+ • Técnicas de decisão rápida
196
+ • Mentoria em liderança situacional"""
197
+ }
198
+ return strategies.get(primary)
199
 
200
+ def analyze_work_environment(profile):
201
+ """Analisa ambiente de trabalho ideal"""
202
+ environments = {
203
+ 'D': """Ambiente ideal para máxima produtividade:
204
+ • Dinâmico e desafiador
205
+ • Com autonomia para decisões
206
+ • Orientado a resultados
207
+ • Com oportunidades de liderança""",
208
+ 'I': """Ambiente ideal para máxima produtividade:
209
+ • Colaborativo e social
210
+ • Com oportunidades de interação
211
+ • Flexível e dinâmico
212
+ • Reconhecimento frequente""",
213
+ 'S': """Ambiente ideal para máxima produtividade:
214
+ • Estável e previsível
215
+ • Colaborativo e harmonioso
216
+ • Com rotinas claras
217
+ • Apoio consistente""",
218
+ 'C': """Ambiente ideal para máxima produtividade:
219
+ • Estruturado e organizado
220
+ • Com processos claros
221
+ • Foco em qualidade
222
+ • Ambiente para concentração"""
223
+ }
224
+ return environments.get(profile)
225
 
226
+ def generate_profile_analysis(perfil_data):
227
+ """Gera análise completa do perfil"""
228
+ perfis_ordenados = sorted(perfil_data.items(), key=lambda x: x[1], reverse=True)
229
+ perfil_principal = perfis_ordenados[0]
230
+ perfil_secundario = perfis_ordenados[1]
231
 
232
+ # Análise comportamental detalhada
233
+ comportamentos = analyze_profile_behaviors(perfil_principal[0], perfil_principal[1])
234
+ lideranca = analyze_leadership_style(perfil_principal[0], perfil_secundario[0])
235
+ decisao = analyze_decision_making(perfil_principal[0], perfil_secundario[0])
236
+ conflitos = analyze_conflict_management(perfil_principal[0])
237
+ motivacoes = analyze_motivations(perfil_principal[0])
238
 
239
+ # Estratégias de desenvolvimento
240
+ acoes_imediatas = generate_immediate_actions(perfil_principal[0])
241
+ estrategias = generate_development_strategies(perfil_principal[0], perfil_secundario[0])
242
+ ambiente = analyze_work_environment(perfil_principal[0])
243
 
244
+ return f"""# Análise Detalhada do Perfil DISC
245
 
246
+ ## Perfil Predominante ({perfil_principal[0]}: {perfil_principal[1]:.1f}%)
247
+ {comportamentos}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
 
249
+ ## Estilo de Liderança
250
+ {lideranca}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
 
252
+ ## Processo Decisório
253
+ {decisao}
 
 
 
 
 
254
 
255
+ ## Gestão de Conflitos
256
+ {conflitos}
257
 
258
+ ## Motivações e Direcionadores
259
+ {motivacoes}
260
 
261
+ ## Ambiente de Trabalho Ideal
262
+ {ambiente}
 
 
 
263
 
264
+ ## Plano de Desenvolvimento
265
+ {estrategias}
 
 
266
 
267
+ ## Ações Prioritárias
268
+ {acoes_imediatas}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
 
270
+ ## Combinação com Perfil Secundário ({perfil_secundario[0]}: {perfil_secundario[1]:.1f}%)
271
+ Esta combinação sugere uma pessoa que consegue equilibrar as características dominantes do perfil {perfil_principal[0]}
272
+ com elementos importantes do perfil {perfil_secundario[0]}, proporcionando maior versatilidade em diferentes situações.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
+ ## Recomendações Específicas
275
+ 1. Foco Principal
276
+ Utilize sua força dominante em {perfil_principal[0]} para {get_primary_focus(perfil_principal[0])}
277
+ Desenvolva conscientemente aspectos do perfil {perfil_secundario[0]} para complementar seu estilo
 
 
 
 
 
 
 
 
 
278
 
279
+ 2. Áreas de Atenção
280
+ Monitore tendências excessivas do perfil {perfil_principal[0]}
281
+ • Desenvolva flexibilidade para adaptar seu estilo quando necessário
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
 
283
+ 3. Desenvolvimento Contínuo
284
+ Busque feedback regular sobre seu estilo de interação
285
+ • Pratique adaptação consciente em diferentes contextos
286
+ Mantenha registro de seu progresso em áreas de desenvolvimento"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
 
288
+ def get_primary_focus(profile):
289
+ """Retorna foco principal baseado no perfil"""
290
+ focus = {
291
+ 'D': "alcançar resultados e liderar iniciativas",
292
+ 'I': "influenciar positivamente e motivar pessoas",
293
+ 'S': "criar estabilidade e promover cooperação",
294
+ 'C': "garantir qualidade e precisão nas entregas"
295
+ }
296
+ return focus.get(profile, "desenvolver suas competências principais")
 
297
 
298
+ # [Resto do código permanece o mesmo, incluindo interface e funções auxiliares]
299
 
300
  if __name__ == "__main__":
301
  iface = create_interface()