File size: 6,474 Bytes
fcc1cf1
ddd5e15
d10af90
fcc1cf1
aeb33b1
ddd5e15
d10af90
aeb33b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60d3016
aeb33b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ddd5e15
d10af90
aeb33b1
 
 
60d3016
aeb33b1
60d3016
 
 
aeb33b1
 
 
60d3016
 
 
 
aeb33b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60d3016
 
 
aeb33b1
 
60d3016
aeb33b1
 
 
 
 
d10af90
ddd5e15
aeb33b1
 
 
60d3016
 
aeb33b1
60d3016
 
 
 
 
 
 
 
 
 
aeb33b1
 
60d3016
 
 
 
aeb33b1
 
60d3016
aeb33b1
 
fcc1cf1
ddd5e15
 
1
2
3
4
5
6
7
8
9
10
11
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
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
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
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
import gradio as gr
from sentence_transformers import SentenceTransformer
import numpy as np

# Modelo para embeddings
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')

# Questionário DISC
disc_questions = [
    {
        "pergunta": "Em situações de trabalho em equipe, eu geralmente:",
        "opcoes": [
            ("D", "Assumo a liderança e tomo decisões rápidas"),
            ("I", "Motivo o grupo e mantenho o ambiente animado"),
            ("S", "Apoio os colegas e mantenho a harmonia"),
            ("C", "Analiso detalhadamente antes de agir")
        ]
    },
    {
        "pergunta": "Quando enfrento um problema, eu:",
        "opcoes": [
            ("D", "Enfrento diretamente e busco soluções imediatas"),
            ("I", "Discuto com outros e busco diferentes perspectivas"),
            ("S", "Mantenho a calma e sigo um processo estabelecido"),
            ("C", "Pesquiso todas as informações disponíveis primeiro")
        ]
    },
    {
        "pergunta": "Em reuniões, eu costumo:",
        "opcoes": [
            ("D", "Ir direto ao ponto e focar em resultados"),
            ("I", "Participar ativamente e compartilhar ideias"),
            ("S", "Ouvir atentamente e contribuir quando solicitado"),
            ("C", "Tomar notas e questionar os detalhes")
        ]
    }
]

perfis_caracteristicas = {
    'D': {
        'pontos_fortes': [
            "Capacidade de liderança",
            "Foco em resultados",
            "Tomada rápida de decisão",
            "Assertividade",
            "Iniciativa"
        ],
        'areas_desenvolvimento': [
            "Paciência com outros",
            "Sensibilidade às necessidades alheias",
            "Diplomacia",
            "Atenção aos detalhes"
        ],
        'ambiente_ideal': [
            "Competitivo",
            "Com autonomia",
            "Orientado a resultados",
            "Com desafios constantes"
        ]
    },
    'I': {
        'pontos_fortes': [
            "Comunicação",
            "Entusiasmo",
            "Networking",
            "Criatividade",
            "Persuasão"
        ],
        'areas_desenvolvimento': [
            "Organização",
            "Foco",
            "Conclusão de tarefas",
            "Atenção aos detalhes"
        ],
        'ambiente_ideal': [
            "Social",
            "Colaborativo",
            "Dinâmico",
            "Com reconhecimento público"
        ]
    },
    'S': {
        'pontos_fortes': [
            "Estabilidade",
            "Confiabilidade",
            "Trabalho em equipe",
            "Paciência",
            "Lealdade"
        ],
        'areas_desenvolvimento': [
            "Adaptação a mudanças",
            "Assertividade",
            "Iniciativa",
            "Tomada de decisão"
        ],
        'ambiente_ideal': [
            "Estável",
            "Previsível",
            "Cooperativo",
            "Com rotinas claras"
        ]
    },
    'C': {
        'pontos_fortes': [
            "Precisão",
            "Análise",
            "Organização",
            "Qualidade",
            "Planejamento"
        ],
        'areas_desenvolvimento': [
            "Flexibilidade",
            "Velocidade",
            "Expressão emocional",
            "Tomada de risco"
        ],
        'ambiente_ideal': [
            "Estruturado",
            "Com regras claras",
            "Focado em qualidade",
            "Com tempo para análise"
        ]
    }
}

def calcular_perfil(respostas):
    # Contar frequência de cada perfil
    contagem = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
    
    for resposta in respostas:
        if resposta:  # Verifica se a resposta não é None
            perfil = resposta.split()[0]  # Pega a primeira letra (D, I, S ou C)
            contagem[perfil] += 1
    
    # Calcular porcentagens
    total = sum(contagem.values())
    if total > 0:  # Evita divisão por zero
        percentuais = {k: (v/total) * 100 for k, v in contagem.items()}
    else:
        percentuais = {k: 0 for k in contagem.keys()}
    
    return percentuais

def gerar_relatorio(percentuais):
    # Ordenar perfis por porcentagem
    perfis_ordenados = dict(sorted(percentuais.items(), key=lambda x: x[1], reverse=True))
    perfil_dominante = list(perfis_ordenados.keys())[0]
    
    # Cabeçalho do relatório
    relatorio = "RELATÓRIO DE PERFIL COMPORTAMENTAL DISC\n\n"
    
    # Resultados percentuais
    relatorio += "DISTRIBUIÇÃO DOS PERFIS:\n"
    for perfil, porcentagem in perfis_ordenados.items():
        relatorio += f"{perfil}: {porcentagem:.1f}%\n"
    
    relatorio += f"\nPERFIL PREDOMINANTE: {perfil_dominante}\n\n"
    
    # Características do perfil dominante
    relatorio += "PONTOS FORTES:\n"
    for ponto in perfis_caracteristicas[perfil_dominante]['pontos_fortes']:
        relatorio += f"- {ponto}\n"
    
    relatorio += "\nÁREAS DE DESENVOLVIMENTO:\n"
    for area in perfis_caracteristicas[perfil_dominante]['areas_desenvolvimento']:
        relatorio += f"- {area}\n"
    
    relatorio += "\nAMBIENTE IDEAL DE TRABALHO:\n"
    for caracteristica in perfis_caracteristicas[perfil_dominante]['ambiente_ideal']:
        relatorio += f"- {caracteristica}\n"
    
    return relatorio

def processar_questionario(*args):
    # Recebe as respostas como argumentos individuais e converte para lista
    respostas = list(args)
    
    # Calcular percentuais
    percentuais = calcular_perfil(respostas)
    
    # Gerar relatório
    relatorio = gerar_relatorio(percentuais)
    
    return relatorio

# Interface Gradio
with gr.Blocks(title="Questionário DISC") as iface:
    gr.Markdown("# Análise de Perfil Comportamental DISC")
    
    # Lista para armazenar os componentes de rádio
    radio_components = []
    
    # Criar questões
    for i, questao in enumerate(disc_questions):
        gr.Markdown(f"### {questao['pergunta']}")
        radio = gr.Radio(
            choices=[f"{perfil} - {desc}" for perfil, desc in questao['opcoes']],
            label=f"Questão {i+1}"
        )
        radio_components.append(radio)
    
    # Saída
    output = gr.Textbox(label="Relatório", lines=20)
    
    # Botão
    btn = gr.Button("Gerar Relatório")
    
    # Conectar função aos componentes
    btn.click(
        fn=processar_questionario,
        inputs=radio_components,
        outputs=output
    )

# Iniciar a interface
iface.launch()