Update app.py
Browse files
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
|
17 |
-
"""
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
'I':
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
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
|
58 |
-
"""
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
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 |
-
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
|
108 |
-
|
109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
111 |
-
|
112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
-
def
|
122 |
-
"""
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
]
|
133 |
|
134 |
-
|
135 |
-
|
|
|
|
|
136 |
|
137 |
-
return "
|
138 |
|
139 |
-
|
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 |
-
|
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 |
-
|
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 |
-
##
|
201 |
-
{
|
202 |
|
203 |
-
|
|
|
204 |
|
205 |
-
##
|
206 |
-
|
207 |
-
• Use estas informações como base para desenvolvimento profissional
|
208 |
-
• O perfil DISC é uma ferramenta de autoconhecimento
|
209 |
-
"""
|
210 |
|
211 |
-
|
212 |
-
|
213 |
-
total = sum(contagem.values())
|
214 |
-
return {k: (v/total)*100 if total > 0 else 0 for k, v in contagem.items()}
|
215 |
|
216 |
-
|
217 |
-
|
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 |
-
|
246 |
-
|
247 |
-
|
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 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
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 |
-
|
288 |
-
|
289 |
-
|
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 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
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 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
""")
|
354 |
|
355 |
-
|
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()
|