Update app.py
Browse files
app.py
CHANGED
@@ -3,299 +3,292 @@ from sentence_transformers import SentenceTransformer
|
|
3 |
from sklearn.metrics.pairwise import cosine_similarity
|
4 |
import numpy as np
|
5 |
|
6 |
-
#
|
7 |
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
|
8 |
|
9 |
-
#
|
10 |
-
|
11 |
'D': {
|
12 |
-
'
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
},
|
41 |
'I': {
|
42 |
-
'
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
},
|
71 |
'S': {
|
72 |
-
'
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
},
|
101 |
'C': {
|
102 |
-
'
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
}
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
"pergunta": "Quando enfrento um problema, eu:",
|
146 |
-
"opcoes": [
|
147 |
-
("D", "Enfrento diretamente e busco soluções imediatas"),
|
148 |
-
("I", "Discuto com outros e busco diferentes perspectivas"),
|
149 |
-
("S", "Mantenho a calma e sigo um processo estabelecido"),
|
150 |
-
("C", "Pesquiso todas as informações disponíveis primeiro")
|
151 |
-
]
|
152 |
-
},
|
153 |
-
{
|
154 |
-
"pergunta": "Em reuniões, eu costumo:",
|
155 |
-
"opcoes": [
|
156 |
-
("D", "Ir direto ao ponto e focar em resultados"),
|
157 |
-
("I", "Participar ativamente e compartilhar ideias"),
|
158 |
-
("S", "Ouvir atentamente e contribuir quando solicitado"),
|
159 |
-
("C", "Tomar notas e questionar os detalhes")
|
160 |
-
]
|
161 |
-
},
|
162 |
-
{
|
163 |
-
"pergunta": "Ao lidar com mudanças, eu:",
|
164 |
-
"opcoes": [
|
165 |
-
("D", "Abraço a mudança e lidero a implementação"),
|
166 |
-
("I", "Entusiasmo os outros sobre as novas possibilidades"),
|
167 |
-
("S", "Adapto-me gradualmente seguindo o processo"),
|
168 |
-
("C", "Analiso os impactos antes de aceitar")
|
169 |
-
]
|
170 |
-
},
|
171 |
-
{
|
172 |
-
"pergunta": "Sob pressão, eu tendo a:",
|
173 |
-
"opcoes": [
|
174 |
-
("D", "Tornar-me mais direto e exigente"),
|
175 |
-
("I", "Falar mais e buscar apoio dos outros"),
|
176 |
-
("S", "Buscar estabilidade e manter a calma"),
|
177 |
-
("C", "Focar em detalhes e procedimentos")
|
178 |
-
]
|
179 |
-
}
|
180 |
-
]
|
181 |
-
|
182 |
-
def get_caracteristicas_principais(perfil):
|
183 |
-
"""Retorna características principais do perfil."""
|
184 |
-
return ", ".join(DISC_BASE[perfil]['caracteristicas_principais'][:3])
|
185 |
-
|
186 |
-
def get_caracteristicas_secundarias(perfil):
|
187 |
-
"""Retorna características secundárias do perfil."""
|
188 |
-
return ", ".join(DISC_BASE[perfil]['caracteristicas_principais'][3:])
|
189 |
-
|
190 |
-
def get_pontos_fortes(perfil):
|
191 |
-
"""Retorna pontos fortes do perfil."""
|
192 |
-
return ", ".join(DISC_BASE[perfil]['pontos_fortes'])
|
193 |
-
|
194 |
-
def get_contextos_ideais(perfil):
|
195 |
-
"""Retorna contextos ideais para o perfil."""
|
196 |
-
return ", ".join(DISC_BASE[perfil]['ambiente_ideal'])
|
197 |
-
|
198 |
-
def get_contribuicoes_principais(perfil):
|
199 |
-
"""Retorna principais contribuições do perfil."""
|
200 |
-
contribuicoes = {
|
201 |
-
'D': "liderar projetos e tomar decisões estratégicas",
|
202 |
-
'I': "motivar equipes e criar engajamento",
|
203 |
-
'S': "manter a estabilidade e promover cooperação",
|
204 |
-
'C': "garantir qualidade e precisão nos processos"
|
205 |
-
}
|
206 |
-
return contribuicoes[perfil]
|
207 |
-
|
208 |
-
def get_aplicacoes_praticas(perfil):
|
209 |
-
"""Retorna aplicações práticas para o perfil."""
|
210 |
-
aplicacoes = {
|
211 |
-
'D': "gestão de projetos, tomada de decisão e resolução de problemas",
|
212 |
-
'I': "comunicação, vendas e desenvolvimento de equipes",
|
213 |
-
'S': "suporte, mediação e gestão de relacionamentos",
|
214 |
-
'C': "análise, planejamento e controle de qualidade"
|
215 |
-
}
|
216 |
-
return aplicacoes[perfil]
|
217 |
-
|
218 |
-
def get_areas_desenvolvimento(perfil):
|
219 |
-
"""Retorna áreas de desenvolvimento do perfil."""
|
220 |
-
return ", ".join(DISC_BASE[perfil]['areas_desenvolvimento'])
|
221 |
-
|
222 |
-
def get_estrategias_desenvolvimento(perfil):
|
223 |
-
"""Retorna estratégias de desenvolvimento para o perfil."""
|
224 |
-
estrategias = {
|
225 |
-
'D': "desenvolvimento de habilidades interpessoais e paciência",
|
226 |
-
'I': "aprimoramento do foco e da organização",
|
227 |
-
'S': "desenvolvimento de proatividade e adaptabilidade",
|
228 |
-
'C': "trabalho na flexibilidade e rapidez decisória"
|
229 |
-
}
|
230 |
-
return estrategias[perfil]
|
231 |
-
|
232 |
-
def get_recomendacoes_praticas(perfil_principal, perfil_secundario):
|
233 |
-
"""Retorna recomendações práticas baseadas na combinação de perfis."""
|
234 |
-
return f"desenvolvimento equilibrado entre as características {perfil_principal} e {perfil_secundario}"
|
235 |
|
236 |
-
def
|
237 |
-
"""
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
perfil = resposta.split()[0]
|
243 |
-
contagem[perfil] += 1
|
244 |
|
245 |
-
|
246 |
-
if total > 0:
|
247 |
-
percentuais = {k: (v/total) * 100 for k, v in contagem.items()}
|
248 |
-
else:
|
249 |
-
percentuais = {k: 0 for k in contagem.keys()}
|
250 |
|
251 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
|
253 |
-
def
|
254 |
-
"""Gera
|
255 |
perfis_ordenados = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
|
|
|
|
|
|
|
256 |
perfil_dominante = list(perfis_ordenados.keys())[0]
|
257 |
perfil_secundario = list(perfis_ordenados.keys())[1]
|
258 |
|
259 |
-
# Gerar
|
260 |
-
|
261 |
-
Perfil dominante {perfil_dominante}: {', '.join(DISC_BASE[perfil_dominante]['caracteristicas_principais'])}
|
262 |
-
Perfil secundário {perfil_secundario}: {', '.join(DISC_BASE[perfil_secundario]['caracteristicas_principais'])}
|
263 |
-
Intensidade principal: {perfis_ordenados[perfil_dominante]:.1f}%
|
264 |
-
Intensidade secundária: {perfis_ordenados[perfil_secundario]:.1f}%
|
265 |
-
"""
|
266 |
-
|
267 |
-
embedding_base = model.encode([texto_base])[0]
|
268 |
-
|
269 |
-
# Gerar parágrafos personalizados
|
270 |
-
p1 = f"""Seu perfil comportamental apresenta uma predominância do tipo {perfil_dominante} ({perfis_ordenados[perfil_dominante]:.1f}%),
|
271 |
-
caracterizado por {get_caracteristicas_principais(perfil_dominante)}, com influência secundária do tipo {perfil_secundario}
|
272 |
-
({perfis_ordenados[perfil_secundario]:.1f}%), que adiciona elementos de {get_caracteristicas_principais(perfil_secundario)}."""
|
273 |
|
274 |
-
|
275 |
-
|
276 |
-
onde pode contribuir efetivamente através de {get_contribuicoes_principais(perfil_dominante)}.
|
277 |
-
Suas habilidades são particularmente valiosas em situações que envolvam {get_aplicacoes_praticas(perfil_dominante)}."""
|
278 |
|
279 |
-
|
280 |
-
|
281 |
-
|
|
|
282 |
|
283 |
-
|
|
|
|
|
|
|
284 |
|
285 |
-
|
|
|
|
|
|
|
286 |
|
287 |
-
|
|
|
288 |
|
289 |
-
|
290 |
|
291 |
-
|
292 |
-
{', '.join([f'{k}: {v:.1f}%' for k, v in perfis_ordenados.items()])}"""
|
293 |
|
|
|
294 |
def processar_questionario(*args):
|
295 |
-
"""Processa as respostas do questionário e gera o relatório."""
|
296 |
respostas = list(args)
|
297 |
percentuais = calcular_perfil(respostas)
|
298 |
-
return
|
|
|
|
|
299 |
|
300 |
# Interface Gradio
|
301 |
with gr.Blocks(title="Análise de Perfil DISC") as iface:
|
|
|
3 |
from sklearn.metrics.pairwise import cosine_similarity
|
4 |
import numpy as np
|
5 |
|
6 |
+
# Initialize model
|
7 |
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
|
8 |
|
9 |
+
# Enhanced knowledge base with more detailed descriptions and combinations
|
10 |
+
DISC_PROFILES = {
|
11 |
'D': {
|
12 |
+
'nome': 'Dominância',
|
13 |
+
'caracteristicas': {
|
14 |
+
'alto': [
|
15 |
+
"Focado em resultados e ação imediata",
|
16 |
+
"Direto e assertivo na comunicação",
|
17 |
+
"Competitivo e determinado",
|
18 |
+
"Assume naturalmente posições de liderança",
|
19 |
+
"Orientado para desafios e conquistas"
|
20 |
+
],
|
21 |
+
'baixo': [
|
22 |
+
"Mais colaborativo e menos confrontador",
|
23 |
+
"Prefere ambientes harmoniosos",
|
24 |
+
"Tende a evitar conflitos",
|
25 |
+
"Mais cauteloso na tomada de decisões",
|
26 |
+
"Busca consenso em vez de imposição"
|
27 |
+
]
|
28 |
+
},
|
29 |
+
'ambiente_ideal': {
|
30 |
+
'alto': [
|
31 |
+
"Ambientes competitivos",
|
32 |
+
"Situações que exigem decisões rápidas",
|
33 |
+
"Projetos desafiadores",
|
34 |
+
"Autonomia na execução",
|
35 |
+
"Oportunidades de liderança"
|
36 |
+
],
|
37 |
+
'baixo': [
|
38 |
+
"Ambientes colaborativos",
|
39 |
+
"Trabalho em equipe",
|
40 |
+
"Projetos estruturados",
|
41 |
+
"Suporte de liderança",
|
42 |
+
"Foco em cooperação"
|
43 |
+
]
|
44 |
+
},
|
45 |
+
'recomendacoes': {
|
46 |
+
'alto': [
|
47 |
+
"Desenvolver mais empatia e paciência",
|
48 |
+
"Praticar escuta ativa",
|
49 |
+
"Considerar diferentes perspectivas",
|
50 |
+
"Equilibrar assertividade com diplomacia",
|
51 |
+
"Fortalecer habilidades de trabalho em equipe"
|
52 |
+
],
|
53 |
+
'baixo': [
|
54 |
+
"Desenvolver mais assertividade",
|
55 |
+
"Praticar tomada de decisão",
|
56 |
+
"Expressar opiniões com mais confiança",
|
57 |
+
"Assumir mais riscos calculados",
|
58 |
+
"Fortalecer liderança situacional"
|
59 |
+
]
|
60 |
+
}
|
61 |
},
|
62 |
'I': {
|
63 |
+
'nome': 'Influência',
|
64 |
+
'caracteristicas': {
|
65 |
+
'alto': [
|
66 |
+
"Comunicativo e expressivo",
|
67 |
+
"Entusiasta e otimista",
|
68 |
+
"Sociável e carismático",
|
69 |
+
"Persuasivo e inspirador",
|
70 |
+
"Criativo e inovador"
|
71 |
+
],
|
72 |
+
'baixo': [
|
73 |
+
"Mais reservado e analítico",
|
74 |
+
"Prefere comunicação objetiva",
|
75 |
+
"Foco em fatos e dados",
|
76 |
+
"Mais formal nas relações",
|
77 |
+
"Prioriza resultados sobre relacionamentos"
|
78 |
+
]
|
79 |
+
},
|
80 |
+
'ambiente_ideal': {
|
81 |
+
'alto': [
|
82 |
+
"Ambientes sociais e dinâmicos",
|
83 |
+
"Oportunidades de networking",
|
84 |
+
"Trabalho com pessoas",
|
85 |
+
"Reconhecimento público",
|
86 |
+
"Liberdade criativa"
|
87 |
+
],
|
88 |
+
'baixo': [
|
89 |
+
"Ambientes mais formais",
|
90 |
+
"Trabalho individual",
|
91 |
+
"Projetos técnicos",
|
92 |
+
"Foco em processos",
|
93 |
+
"Estrutura definida"
|
94 |
+
]
|
95 |
+
},
|
96 |
+
'recomendacoes': {
|
97 |
+
'alto': [
|
98 |
+
"Desenvolver foco e organização",
|
99 |
+
"Melhorar gestão do tempo",
|
100 |
+
"Praticar conclusão de tarefas",
|
101 |
+
"Equilibrar socialização e produtividade",
|
102 |
+
"Fortalecer análise de dados"
|
103 |
+
],
|
104 |
+
'baixo': [
|
105 |
+
"Desenvolver habilidades de networking",
|
106 |
+
"Praticar comunicação expressiva",
|
107 |
+
"Participar mais em grupos",
|
108 |
+
"Explorar criatividade",
|
109 |
+
"Fortalecer relações interpessoais"
|
110 |
+
]
|
111 |
+
}
|
112 |
},
|
113 |
'S': {
|
114 |
+
'nome': 'Estabilidade',
|
115 |
+
'caracteristicas': {
|
116 |
+
'alto': [
|
117 |
+
"Paciente e consistente",
|
118 |
+
"Colaborativo e prestativo",
|
119 |
+
"Leal e confiável",
|
120 |
+
"Bom ouvinte",
|
121 |
+
"Focado em harmonia"
|
122 |
+
],
|
123 |
+
'baixo': [
|
124 |
+
"Mais flexível e adaptável",
|
125 |
+
"Aberto a mudanças rápidas",
|
126 |
+
"Multitarefa eficiente",
|
127 |
+
"Dinâmico e versátil",
|
128 |
+
"Aprecia variedade"
|
129 |
+
]
|
130 |
+
},
|
131 |
+
'ambiente_ideal': {
|
132 |
+
'alto': [
|
133 |
+
"Ambientes estáveis e previsíveis",
|
134 |
+
"Trabalho em equipe",
|
135 |
+
"Rotinas estabelecidas",
|
136 |
+
"Mudanças graduais",
|
137 |
+
"Relacionamentos duradouros"
|
138 |
+
],
|
139 |
+
'baixo': [
|
140 |
+
"Ambientes dinâmicos",
|
141 |
+
"Mudanças frequentes",
|
142 |
+
"Projetos variados",
|
143 |
+
"Novos desafios",
|
144 |
+
"Flexibilidade de rotina"
|
145 |
+
]
|
146 |
+
},
|
147 |
+
'recomendacoes': {
|
148 |
+
'alto': [
|
149 |
+
"Desenvolver adaptabilidade",
|
150 |
+
"Praticar iniciativa",
|
151 |
+
"Expressar opiniões",
|
152 |
+
"Lidar melhor com mudanças",
|
153 |
+
"Fortalecer tomada de decisão"
|
154 |
+
],
|
155 |
+
'baixo': [
|
156 |
+
"Desenvolver mais paciência",
|
157 |
+
"Praticar consistência",
|
158 |
+
"Fortalecer relacionamentos",
|
159 |
+
"Melhorar escuta ativa",
|
160 |
+
"Criar rotinas efetivas"
|
161 |
+
]
|
162 |
+
}
|
163 |
},
|
164 |
'C': {
|
165 |
+
'nome': 'Conformidade',
|
166 |
+
'caracteristicas': {
|
167 |
+
'alto': [
|
168 |
+
"Analítico e preciso",
|
169 |
+
"Organizado e sistemático",
|
170 |
+
"Focado em qualidade",
|
171 |
+
"Atento aos detalhes",
|
172 |
+
"Orientado por dados"
|
173 |
+
],
|
174 |
+
'baixo': [
|
175 |
+
"Mais flexível com regras",
|
176 |
+
"Foco em resultados rápidos",
|
177 |
+
"Prático e objetivo",
|
178 |
+
"Adaptável a mudanças",
|
179 |
+
"Tolerante a ambiguidades"
|
180 |
+
]
|
181 |
+
},
|
182 |
+
'ambiente_ideal': {
|
183 |
+
'alto': [
|
184 |
+
"Ambientes estruturados",
|
185 |
+
"Processos claros",
|
186 |
+
"Foco em qualidade",
|
187 |
+
"Análise detalhada",
|
188 |
+
"Padrões definidos"
|
189 |
+
],
|
190 |
+
'baixo': [
|
191 |
+
"Ambientes flexíveis",
|
192 |
+
"Liberdade de processo",
|
193 |
+
"Foco em resultados",
|
194 |
+
"Decisões rápidas",
|
195 |
+
"Adaptabilidade"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
'recomendacoes': {
|
199 |
+
'alto': [
|
200 |
+
"Desenvolver flexibilidade",
|
201 |
+
"Praticar decisões rápidas",
|
202 |
+
"Lidar melhor com ambiguidade",
|
203 |
+
"Equilibrar análise e ação",
|
204 |
+
"Fortalecer relacionamentos"
|
205 |
+
],
|
206 |
+
'baixo': [
|
207 |
+
"Desenvolver atenção aos detalhes",
|
208 |
+
"Melhorar organização",
|
209 |
+
"Criar sistemas e processos",
|
210 |
+
"Fortalecer análise crítica",
|
211 |
+
"Praticar planejamento"
|
212 |
+
]
|
213 |
+
}
|
214 |
}
|
215 |
}
|
216 |
|
217 |
+
def get_intensity_level(percentual):
|
218 |
+
"""Determina o nível de intensidade baseado no percentual."""
|
219 |
+
if percentual >= 75:
|
220 |
+
return "muito alto"
|
221 |
+
elif percentual >= 60:
|
222 |
+
return "alto"
|
223 |
+
elif percentual >= 40:
|
224 |
+
return "moderado"
|
225 |
+
elif percentual >= 25:
|
226 |
+
return "baixo"
|
227 |
+
else:
|
228 |
+
return "muito baixo"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
|
230 |
+
def get_profile_description(perfil, percentual):
|
231 |
+
"""Gera descrição personalizada baseada no perfil e sua intensidade."""
|
232 |
+
nivel = "alto" if percentual >= 50 else "baixo"
|
233 |
+
caracteristicas = DISC_PROFILES[perfil]['caracteristicas'][nivel]
|
234 |
+
ambiente = DISC_PROFILES[perfil]['ambiente_ideal'][nivel]
|
235 |
+
recomendacoes = DISC_PROFILES[perfil]['recomendacoes'][nivel]
|
|
|
|
|
236 |
|
237 |
+
intensidade = get_intensity_level(percentual)
|
|
|
|
|
|
|
|
|
238 |
|
239 |
+
return {
|
240 |
+
'nome': DISC_PROFILES[perfil]['nome'],
|
241 |
+
'intensidade': intensidade,
|
242 |
+
'caracteristicas': caracteristicas,
|
243 |
+
'ambiente': ambiente,
|
244 |
+
'recomendacoes': recomendacoes
|
245 |
+
}
|
246 |
|
247 |
+
def gerar_relatorio_personalizado(percentuais):
|
248 |
+
"""Gera relatório detalhado e personalizado baseado nos percentuais DISC."""
|
249 |
perfis_ordenados = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
|
250 |
+
perfis_desc = {k: get_profile_description(k, v) for k, v in perfis_ordenados.items()}
|
251 |
+
|
252 |
+
# Perfil dominante e secundário
|
253 |
perfil_dominante = list(perfis_ordenados.keys())[0]
|
254 |
perfil_secundario = list(perfis_ordenados.keys())[1]
|
255 |
|
256 |
+
# Gerar relatório
|
257 |
+
relatorio = f"""ANÁLISE DE PERFIL COMPORTAMENTAL DISC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
|
259 |
+
VISÃO GERAL
|
260 |
+
Seu perfil apresenta uma combinação única de características, com {perfis_desc[perfil_dominante]['nome']} ({perfil_dominante}) como traço dominante em nível {perfis_desc[perfil_dominante]['intensidade']} ({perfis_ordenados[perfil_dominante]:.1f}%), seguido por {perfis_desc[perfil_secundario]['nome']} ({perfil_secundario}) em nível {perfis_desc[perfil_secundario]['intensidade']} ({perfis_ordenados[perfil_secundario]:.1f}%).
|
|
|
|
|
261 |
|
262 |
+
CARACTERÍSTICAS PRINCIPAIS
|
263 |
+
Seu estilo comportamental é marcado por:
|
264 |
+
• {' e '.join(perfis_desc[perfil_dominante]['caracteristicas'][:3])}
|
265 |
+
• Com influência secundária de: {' e '.join(perfis_desc[perfil_secundario]['caracteristicas'][:2])}
|
266 |
|
267 |
+
AMBIENTE IDEAL DE TRABALHO
|
268 |
+
Você tende a prosperar em ambientes que oferecem:
|
269 |
+
• {' e '.join(perfis_desc[perfil_dominante]['ambiente'][:3])}
|
270 |
+
• Complementados por: {' e '.join(perfis_desc[perfil_secundario]['ambiente'][:2])}
|
271 |
|
272 |
+
RECOMENDAÇÕES PARA DESENVOLVIMENTO
|
273 |
+
Para maximizar seu potencial, considere:
|
274 |
+
• {' e '.join(perfis_desc[perfil_dominante]['recomendacoes'][:3])}
|
275 |
+
• Adicionalmente: {' e '.join(perfis_desc[perfil_secundario]['recomendacoes'][:2])}
|
276 |
|
277 |
+
DISTRIBUIÇÃO COMPLETA DO PERFIL DISC:
|
278 |
+
{', '.join([f'{k} ({DISC_PROFILES[k]["nome"]}): {v:.1f}%' for k, v in perfis_ordenados.items()])}
|
279 |
|
280 |
+
OBSERVAÇÃO: Este perfil representa suas tendências comportamentais naturais. Lembre-se que comportamentos podem ser adaptados conforme o contexto e as necessidades específicas de cada situação."""
|
281 |
|
282 |
+
return relatorio
|
|
|
283 |
|
284 |
+
# Atualizar a função de processamento do questionário
|
285 |
def processar_questionario(*args):
|
286 |
+
"""Processa as respostas do questionário e gera o relatório personalizado."""
|
287 |
respostas = list(args)
|
288 |
percentuais = calcular_perfil(respostas)
|
289 |
+
return gerar_relatorio_personalizado(percentuais)
|
290 |
+
|
291 |
+
# Manter o resto do código original (interface Gradio) como está...
|
292 |
|
293 |
# Interface Gradio
|
294 |
with gr.Blocks(title="Análise de Perfil DISC") as iface:
|