Update app.py
Browse files
app.py
CHANGED
|
@@ -89,157 +89,21 @@ def analyze_decision_making(primary, secondary):
|
|
| 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 |
-
#
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
|
| 243 |
|
| 244 |
return f"""# Análise Detalhada do Perfil DISC
|
| 245 |
|
|
@@ -250,52 +114,263 @@ def generate_profile_analysis(perfil_data):
|
|
| 250 |
{lideranca}
|
| 251 |
|
| 252 |
## Processo Decisório
|
| 253 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 254 |
|
| 255 |
-
##
|
| 256 |
-
{
|
| 257 |
|
| 258 |
-
##
|
| 259 |
-
{
|
| 260 |
|
| 261 |
## Ambiente de Trabalho Ideal
|
| 262 |
-
{
|
|
|
|
| 263 |
|
| 264 |
-
|
| 265 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
|
| 267 |
-
|
| 268 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 269 |
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 273 |
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 287 |
|
| 288 |
-
def
|
| 289 |
-
"""
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
|
| 296 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 297 |
|
| 298 |
-
|
| 299 |
|
| 300 |
if __name__ == "__main__":
|
| 301 |
iface = create_interface()
|
|
|
|
| 89 |
}
|
| 90 |
return decision_styles.get(primary, "Processo decisório equilibrado")
|
| 91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
def generate_profile_analysis(perfil_data):
|
| 93 |
"""Gera análise completa do perfil"""
|
| 94 |
perfis_ordenados = sorted(perfil_data.items(), key=lambda x: x[1], reverse=True)
|
| 95 |
perfil_principal = perfis_ordenados[0]
|
| 96 |
perfil_secundario = perfis_ordenados[1]
|
| 97 |
|
| 98 |
+
# Análise comportamental detalhada usando embeddings
|
| 99 |
+
context = f"Perfil {perfil_principal[0]} com {perfil_principal[1]:.1f}% e {perfil_secundario[0]} com {perfil_secundario[1]:.1f}%"
|
| 100 |
comportamentos = analyze_profile_behaviors(perfil_principal[0], perfil_principal[1])
|
| 101 |
lideranca = analyze_leadership_style(perfil_principal[0], perfil_secundario[0])
|
|
|
|
|
|
|
|
|
|
| 102 |
|
| 103 |
+
# Gera embeddings para personalização
|
| 104 |
+
profile_context = model.encode(context)
|
| 105 |
+
behavior_context = model.encode(comportamentos if comportamentos else "")
|
| 106 |
+
leadership_context = model.encode(lideranca if lideranca else "")
|
| 107 |
|
| 108 |
return f"""# Análise Detalhada do Perfil DISC
|
| 109 |
|
|
|
|
| 114 |
{lideranca}
|
| 115 |
|
| 116 |
## Processo Decisório
|
| 117 |
+
{analyze_decision_making(perfil_principal[0], perfil_secundario[0])}
|
| 118 |
+
|
| 119 |
+
## Combinação de Perfis
|
| 120 |
+
A combinação de {perfil_principal[0]} ({perfil_principal[1]:.1f}%) com {perfil_secundario[0]} ({perfil_secundario[1]:.1f}%) sugere:
|
| 121 |
+
• Capacidade de equilibrar {get_profile_strength(perfil_principal[0])} com {get_profile_strength(perfil_secundario[0])}
|
| 122 |
+
• Versatilidade em diferentes contextos profissionais
|
| 123 |
+
• Potencial para adaptação em situações diversas
|
| 124 |
|
| 125 |
+
## Recomendações para Desenvolvimento
|
| 126 |
+
{generate_development_recommendations(perfil_principal[0], perfil_principal[1])}
|
| 127 |
|
| 128 |
+
## Contribuições para Equipe
|
| 129 |
+
{generate_team_contributions(perfil_principal[0], perfil_secundario[0])}
|
| 130 |
|
| 131 |
## Ambiente de Trabalho Ideal
|
| 132 |
+
{generate_ideal_environment(perfil_principal[0])}
|
| 133 |
+
"""
|
| 134 |
|
| 135 |
+
def get_profile_strength(profile):
|
| 136 |
+
"""Retorna força principal de cada perfil"""
|
| 137 |
+
strengths = {
|
| 138 |
+
'D': "direcionamento e resultados",
|
| 139 |
+
'I': "comunicação e influência",
|
| 140 |
+
'S': "estabilidade e cooperação",
|
| 141 |
+
'C': "análise e precisão"
|
| 142 |
+
}
|
| 143 |
+
return strengths.get(profile, "adaptabilidade")
|
| 144 |
|
| 145 |
+
def generate_development_recommendations(profile, value):
|
| 146 |
+
"""Gera recomendações de desenvolvimento personalizadas"""
|
| 147 |
+
recommendations = {
|
| 148 |
+
'D': f"""Considerando seu perfil D ({value:.1f}%), foque em:
|
| 149 |
+
• Desenvolvimento de escuta ativa e empatia
|
| 150 |
+
• Prática de paciência em processos longos
|
| 151 |
+
• Inclusão de mais perspectivas nas decisões
|
| 152 |
+
• Equilíbrio entre velocidade e qualidade""",
|
| 153 |
+
'I': f"""Considerando seu perfil I ({value:.1f}%), foque em:
|
| 154 |
+
• Desenvolvimento de habilidades analíticas
|
| 155 |
+
• Atenção aos detalhes e documentação
|
| 156 |
+
• Gestão eficiente do tempo
|
| 157 |
+
• Equilíbrio entre socialização e entregas""",
|
| 158 |
+
'S': f"""Considerando seu perfil S ({value:.1f}%), foque em:
|
| 159 |
+
• Desenvolvimento de assertividade
|
| 160 |
+
• Adaptação mais rápida a mudanças
|
| 161 |
+
• Expressão mais frequente de opiniões
|
| 162 |
+
• Tomada de decisão mais ágil""",
|
| 163 |
+
'C': f"""Considerando seu perfil C ({value:.1f}%), foque em:
|
| 164 |
+
• Desenvolvimento de flexibilidade
|
| 165 |
+
• Agilidade na tomada de decisão
|
| 166 |
+
• Habilidades de comunicação interpessoal
|
| 167 |
+
• Equilíbrio entre perfeição e praticidade"""
|
| 168 |
+
}
|
| 169 |
+
return recommendations.get(profile)
|
| 170 |
|
| 171 |
+
def generate_team_contributions(primary, secondary):
|
| 172 |
+
"""Analisa contribuições para equipe"""
|
| 173 |
+
contributions = {
|
| 174 |
+
'D': {
|
| 175 |
+
'D': "Forte liderança e foco em resultados rápidos",
|
| 176 |
+
'I': "Liderança carismática com orientação para resultados",
|
| 177 |
+
'S': "Direcionamento com consideração pela estabilidade",
|
| 178 |
+
'C': "Liderança analítica focada em resultados precisos"
|
| 179 |
+
},
|
| 180 |
+
'I': {
|
| 181 |
+
'D': "Motivação da equipe com foco em ação",
|
| 182 |
+
'I': "Alto engajamento e energia positiva",
|
| 183 |
+
'S': "Comunicação efetiva com estabilidade",
|
| 184 |
+
'C': "Entusiasmo balanceado com precisão"
|
| 185 |
+
},
|
| 186 |
+
'S': {
|
| 187 |
+
'D': "Estabilidade com capacidade de ação",
|
| 188 |
+
'I': "Suporte consistente com comunicação efetiva",
|
| 189 |
+
'S': "Alta confiabilidade e cooperação",
|
| 190 |
+
'C': "Consistência com atenção aos detalhes"
|
| 191 |
+
},
|
| 192 |
+
'C': {
|
| 193 |
+
'D': "Análise precisa orientada a resultados",
|
| 194 |
+
'I': "Qualidade com boa comunicação",
|
| 195 |
+
'S': "Precisão com estabilidade",
|
| 196 |
+
'C': "Excelência técnica e organização"
|
| 197 |
+
}
|
| 198 |
+
}
|
| 199 |
+
return contributions.get(primary, {}).get(secondary, "Contribuições equilibradas para a equipe")
|
| 200 |
|
| 201 |
+
def generate_ideal_environment(profile):
|
| 202 |
+
"""Gera descrição do ambiente ideal de trabalho"""
|
| 203 |
+
environments = {
|
| 204 |
+
'D': """Ambiente ideal para sua produtividade:
|
| 205 |
+
• Dinâmico e desafiador
|
| 206 |
+
• Autonomia nas decisões
|
| 207 |
+
• Oportunidades de liderança
|
| 208 |
+
• Foco em resultados rápidos""",
|
| 209 |
+
'I': """Ambiente ideal para sua produtividade:
|
| 210 |
+
• Colaborativo e interativo
|
| 211 |
+
• Oportunidades de networking
|
| 212 |
+
• Reconhecimento frequente
|
| 213 |
+
• Projetos variados""",
|
| 214 |
+
'S': """Ambiente ideal para sua produtividade:
|
| 215 |
+
• Estável e previsível
|
| 216 |
+
• Trabalho em equipe
|
| 217 |
+
• Processos bem definidos
|
| 218 |
+
• Mudanças graduais""",
|
| 219 |
+
'C': """Ambiente ideal para sua produtividade:
|
| 220 |
+
• Estruturado e organizado
|
| 221 |
+
• Foco em qualidade
|
| 222 |
+
• Tempo para análise
|
| 223 |
+
• Clareza nas expectativas"""
|
| 224 |
+
}
|
| 225 |
+
return environments.get(profile)
|
| 226 |
|
| 227 |
+
DISC_QUESTIONS = [
|
| 228 |
+
{"pergunta": "Em situações de trabalho em equipe, você geralmente:",
|
| 229 |
+
"opcoes": [("D", "Assume a liderança e toma decisões rápidas"),
|
| 230 |
+
("I", "Motiva o grupo e mantém o ambiente animado"),
|
| 231 |
+
("S", "Apoia os colegas e mantém a harmonia"),
|
| 232 |
+
("C", "Analisa detalhadamente antes de agir")]},
|
| 233 |
+
{"pergunta": "Quando enfrenta um desafio no trabalho, você:",
|
| 234 |
+
"opcoes": [("D", "Enfrenta diretamente e busca soluções imediatas"),
|
| 235 |
+
("I", "Discute com outros e busca diferentes perspectivas"),
|
| 236 |
+
("S", "Mantém a calma e segue um processo estabelecido"),
|
| 237 |
+
("C", "Pesquisa todas as informações disponíveis primeiro")]},
|
| 238 |
+
{"pergunta": "Em reuniões profissionais, você costuma:",
|
| 239 |
+
"opcoes": [("D", "Ir direto ao ponto e focar em resultados"),
|
| 240 |
+
("I", "Participar ativamente e compartilhar ideias"),
|
| 241 |
+
("S", "Ouvir atentamente e contribuir quando solicitado"),
|
| 242 |
+
("C", "Tomar notas e questionar os detalhes")]},
|
| 243 |
+
{"pergunta": "Ao lidar com mudanças no ambiente de trabalho, você:",
|
| 244 |
+
"opcoes": [("D", "Abraça a mudança e lidera a implementação"),
|
| 245 |
+
("I", "Entusiasma os outros sobre as novas possibilidades"),
|
| 246 |
+
("S", "Adapta-se gradualmente seguindo o processo"),
|
| 247 |
+
("C", "Analisa os impactos antes de aceitar")]},
|
| 248 |
+
{"pergunta": "Sob pressão no trabalho, você tende a:",
|
| 249 |
+
"opcoes": [("D", "Tornar-se mais direto e focado em resultados"),
|
| 250 |
+
("I", "Buscar apoio e interação com a equipe"),
|
| 251 |
+
("S", "Manter a calma e seguir metodicamente"),
|
| 252 |
+
("C", "Concentrar-se em detalhes e procedimentos")]}
|
| 253 |
+
]
|
| 254 |
|
| 255 |
+
def create_disc_plot(percentuais):
|
| 256 |
+
"""Cria o gráfico de visualização do perfil DISC"""
|
| 257 |
+
cores = {'D': '#FF4B4B', 'I': '#FFD700', 'S': '#4CAF50', 'C': '#2196F3'}
|
| 258 |
+
fig = go.Figure(data=[go.Bar(x=list(percentuais.keys()),
|
| 259 |
+
y=list(percentuais.values()),
|
| 260 |
+
marker_color=[cores[k] for k in percentuais.keys()],
|
| 261 |
+
text=[f'{v:.1f}%' for v in percentuais.values()],
|
| 262 |
+
textposition='auto')])
|
| 263 |
+
|
| 264 |
+
fig.update_layout(
|
| 265 |
+
title={
|
| 266 |
+
'text': 'Perfil DISC',
|
| 267 |
+
'y':0.95,
|
| 268 |
+
'x':0.5,
|
| 269 |
+
'xanchor': 'center',
|
| 270 |
+
'yanchor': 'top',
|
| 271 |
+
'font': {'size': 24, 'color': '#333333'}
|
| 272 |
+
},
|
| 273 |
+
yaxis_range=[0, 100],
|
| 274 |
+
template='plotly_white',
|
| 275 |
+
height=400,
|
| 276 |
+
margin=dict(l=40, r=40, t=60, b=40),
|
| 277 |
+
paper_bgcolor='rgba(0,0,0,0)',
|
| 278 |
+
plot_bgcolor='rgba(0,0,0,0)',
|
| 279 |
+
yaxis_title="Percentual (%)",
|
| 280 |
+
xaxis_title="Dimensões DISC"
|
| 281 |
+
)
|
| 282 |
+
|
| 283 |
+
return fig
|
| 284 |
|
| 285 |
+
def calcular_perfil(respostas):
|
| 286 |
+
"""Calcula os percentuais do perfil DISC"""
|
| 287 |
+
contagem = {k: sum(1 for r in respostas if r and r.startswith(k)) for k in 'DISC'}
|
| 288 |
+
total = sum(contagem.values())
|
| 289 |
+
return {k: (v/total)*100 if total > 0 else 0 for k, v in contagem.items()}
|
| 290 |
+
|
| 291 |
+
def process_results(*answers):
|
| 292 |
+
"""Processa as respostas e gera resultados"""
|
| 293 |
+
if any(a is None for a in answers):
|
| 294 |
+
gr.Warning("Por favor, responda todas as questões antes de prosseguir.")
|
| 295 |
+
return None, None
|
| 296 |
+
|
| 297 |
+
respostas_processadas = [a.split(' - ')[0] if a else None for a in answers]
|
| 298 |
+
perfil = calcular_perfil(respostas_processadas)
|
| 299 |
+
plot = create_disc_plot(perfil)
|
| 300 |
+
report = generate_profile_analysis(perfil)
|
| 301 |
+
|
| 302 |
+
return plot, report
|
| 303 |
+
|
| 304 |
+
def create_interface():
|
| 305 |
+
"""Cria a interface do usuário"""
|
| 306 |
+
with gr.Blocks(theme=gr.themes.Soft(
|
| 307 |
+
primary_hue="blue",
|
| 308 |
+
secondary_hue="purple",
|
| 309 |
+
neutral_hue="slate",
|
| 310 |
+
font=["Inter", "ui-sans-serif", "system-ui"]
|
| 311 |
+
)) as iface:
|
| 312 |
+
gr.Markdown(
|
| 313 |
+
"""
|
| 314 |
+
# 🎯 Análise de Perfil DISC
|
| 315 |
+
### Descubra suas características comportamentais dominantes
|
| 316 |
+
|
| 317 |
+
Uma análise personalizada do seu perfil comportamental DISC:
|
| 318 |
+
- **D (Dominância)**: Foco em resultados e assertividade
|
| 319 |
+
- **I (Influência)**: Foco em relacionamentos e comunicação
|
| 320 |
+
- **S (Estabilidade)**: Foco em cooperação e consistência
|
| 321 |
+
- **C (Conformidade)**: Foco em qualidade e precisão
|
| 322 |
+
|
| 323 |
+
---
|
| 324 |
+
""")
|
| 325 |
+
|
| 326 |
+
with gr.Row():
|
| 327 |
+
with gr.Column(scale=2):
|
| 328 |
+
radios = []
|
| 329 |
+
for i, q in enumerate(DISC_QUESTIONS):
|
| 330 |
+
radio = gr.Radio(
|
| 331 |
+
choices=[f"{p} - {d}" for p, d in q['opcoes']],
|
| 332 |
+
label=f"{i+1}. {q['pergunta']}",
|
| 333 |
+
container=True,
|
| 334 |
+
scale=2
|
| 335 |
+
)
|
| 336 |
+
gr.Markdown("---")
|
| 337 |
+
radios.append(radio)
|
| 338 |
+
|
| 339 |
+
with gr.Row():
|
| 340 |
+
analyze_btn = gr.Button("📊 Analisar Perfil", size="lg", variant="primary")
|
| 341 |
+
reset_btn = gr.Button("🔄 Novo Teste", size="lg", variant="secondary")
|
| 342 |
+
|
| 343 |
+
with gr.Row():
|
| 344 |
+
plot = gr.Plot(label="Gráfico de Perfil DISC")
|
| 345 |
+
|
| 346 |
+
with gr.Row():
|
| 347 |
+
output = gr.Markdown()
|
| 348 |
+
|
| 349 |
+
analyze_btn.click(
|
| 350 |
+
fn=process_results,
|
| 351 |
+
inputs=radios,
|
| 352 |
+
outputs=[plot, output],
|
| 353 |
+
api_name="analyze"
|
| 354 |
+
)
|
| 355 |
+
|
| 356 |
+
reset_btn.click(
|
| 357 |
+
fn=lambda: [None]*(len(radios)+2),
|
| 358 |
+
outputs=radios+[plot, output],
|
| 359 |
+
api_name="reset"
|
| 360 |
+
)
|
| 361 |
+
|
| 362 |
+
gr.Markdown("""
|
| 363 |
+
---
|
| 364 |
+
### 📝 Informações Importantes
|
| 365 |
+
|
| 366 |
+
• O teste DISC é uma ferramenta de autoconhecimento e desenvolvimento profissional
|
| 367 |
+
• Os resultados refletem tendências comportamentais naturais
|
| 368 |
+
• Use as informações para desenvolvimento pessoal e melhor comunicação em equipe
|
| 369 |
+
|
| 370 |
+
© 2024 DISC Analysis Tool
|
| 371 |
+
""")
|
| 372 |
|
| 373 |
+
return iface
|
| 374 |
|
| 375 |
if __name__ == "__main__":
|
| 376 |
iface = create_interface()
|