DHEIVER commited on
Commit
ea388f3
·
verified ·
1 Parent(s): 12026ba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +255 -262
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
- # Inicializar o modelo
7
  model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
8
 
9
- # Base de conhecimento para análise
10
- DISC_BASE = {
11
  'D': {
12
- 'caracteristicas_principais': [
13
- "liderança natural",
14
- "foco em resultados",
15
- "tomada rápida de decisão",
16
- "assertividade",
17
- "orientação para desafios"
18
- ],
19
- 'pontos_fortes': [
20
- "determinação",
21
- "eficiência",
22
- "iniciativa",
23
- "coragem",
24
- "competitividade"
25
- ],
26
- 'areas_desenvolvimento': [
27
- "paciência",
28
- "empatia",
29
- "diplomacia",
30
- "escuta ativa",
31
- "trabalho em equipe"
32
- ],
33
- 'ambiente_ideal': [
34
- "dinâmico",
35
- "desafiador",
36
- "com autonomia",
37
- "orientado a resultados",
38
- "competitivo"
39
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  },
41
  'I': {
42
- 'caracteristicas_principais': [
43
- "comunicação expressiva",
44
- "entusiasmo",
45
- "sociabilidade",
46
- "otimismo",
47
- "persuasão"
48
- ],
49
- 'pontos_fortes': [
50
- "carisma",
51
- "networking",
52
- "criatividade",
53
- "motivação",
54
- "adaptabilidade social"
55
- ],
56
- 'areas_desenvolvimento': [
57
- "organização",
58
- "foco",
59
- "gestão do tempo",
60
- "atenção a detalhes",
61
- "conclusão de tarefas"
62
- ],
63
- 'ambiente_ideal': [
64
- "social",
65
- "colaborativo",
66
- "dinâmico",
67
- "com reconhecimento",
68
- "flexível"
69
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  },
71
  'S': {
72
- 'caracteristicas_principais': [
73
- "estabilidade",
74
- "cooperação",
75
- "paciência",
76
- "lealdade",
77
- "consistência"
78
- ],
79
- 'pontos_fortes': [
80
- "confiabilidade",
81
- "mediação",
82
- "suporte",
83
- "harmonia",
84
- "trabalho em equipe"
85
- ],
86
- 'areas_desenvolvimento': [
87
- "proatividade",
88
- "assertividade",
89
- "adaptação a mudanças",
90
- "tomada de decisão",
91
- "expressão de opiniões"
92
- ],
93
- 'ambiente_ideal': [
94
- "estável",
95
- "previsível",
96
- "harmonioso",
97
- "colaborativo",
98
- "estruturado"
99
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  },
101
  'C': {
102
- 'caracteristicas_principais': [
103
- "análise",
104
- "precisão",
105
- "organização",
106
- "sistemático",
107
- "atenção a detalhes"
108
- ],
109
- 'pontos_fortes': [
110
- "qualidade",
111
- "planejamento",
112
- "metodologia",
113
- "processos",
114
- "compliance"
115
- ],
116
- 'areas_desenvolvimento': [
117
- "flexibilidade",
118
- "rapidez decisória",
119
- "relacionamentos",
120
- "expressão emocional",
121
- "tolerância a riscos"
122
- ],
123
- 'ambiente_ideal': [
124
- "estruturado",
125
- "organizado",
126
- "com regras claras",
127
- "focado em qualidade",
128
- "metódico"
129
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  }
131
  }
132
 
133
- # Questionário DISC
134
- DISC_QUESTIONS = [
135
- {
136
- "pergunta": "Em situações de trabalho em equipe, eu geralmente:",
137
- "opcoes": [
138
- ("D", "Assumo a liderança e tomo decisões rápidas"),
139
- ("I", "Motivo o grupo e mantenho o ambiente animado"),
140
- ("S", "Apoio os colegas e mantenho a harmonia"),
141
- ("C", "Analiso detalhadamente antes de agir")
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 calcular_perfil(respostas):
237
- """Calcula os percentuais de cada perfil DISC."""
238
- contagem = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
239
-
240
- for resposta in respostas:
241
- if resposta:
242
- perfil = resposta.split()[0]
243
- contagem[perfil] += 1
244
 
245
- total = sum(contagem.values())
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 percentuais
 
 
 
 
 
 
252
 
253
- def gerar_relatorio(percentuais):
254
- """Gera o relatório completo baseado nos percentuais DISC."""
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 embedding para análise personalizada
260
- texto_base = f"""
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
- p2 = f"""Seus principais pontos fortes incluem {get_pontos_fortes(perfil_dominante)}.
275
- Você tende a se destacar em ambientes que sejam {get_contextos_ideais(perfil_dominante)},
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
- p3 = f"""Para potencializar seu desenvolvimento, considere focar em {get_areas_desenvolvimento(perfil_dominante)}.
280
- Recomenda-se atenção especial ao {get_estrategias_desenvolvimento(perfil_dominante)},
281
- buscando um {get_recomendacoes_praticas(perfil_dominante, perfil_secundario)}."""
 
282
 
283
- return f"""RELATÓRIO DE ANÁLISE COMPORTAMENTAL DISC
 
 
 
284
 
285
- {p1}
 
 
 
286
 
287
- {p2}
 
288
 
289
- {p3}
290
 
291
- Distribuição completa dos perfis DISC:
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 gerar_relatorio(percentuais)
 
 
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: