funifier-mcp 0.2.0 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/rules/funifier.mdc +91 -0
- package/.github/copilot-instructions.md +83 -0
- package/AGENTS.md +97 -0
- package/README.md +247 -78
- package/datasource-funifier-docs/knowledge/guides/aggregates.md +152 -152
- package/datasource-funifier-docs/knowledge/guides/database-access.md +132 -132
- package/datasource-funifier-docs/knowledge/guides/java-entities.md +373 -373
- package/datasource-funifier-docs/knowledge/guides/java-libraries.md +330 -330
- package/datasource-funifier-docs/knowledge/guides/java-managers.md +509 -509
- package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +271 -271
- package/datasource-funifier-docs/knowledge/index.md +121 -121
- package/datasource-funifier-docs/knowledge/modules/achievement.md +46 -46
- package/datasource-funifier-docs/knowledge/modules/action-log.md +88 -88
- package/datasource-funifier-docs/knowledge/modules/action.md +80 -80
- package/datasource-funifier-docs/knowledge/modules/auth.md +104 -104
- package/datasource-funifier-docs/knowledge/modules/avatar.md +28 -28
- package/datasource-funifier-docs/knowledge/modules/backup.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/challenge.md +91 -91
- package/datasource-funifier-docs/knowledge/modules/compact.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/competition.md +149 -149
- package/datasource-funifier-docs/knowledge/modules/crossword.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/csv-data.md +30 -30
- package/datasource-funifier-docs/knowledge/modules/custom-object.md +53 -53
- package/datasource-funifier-docs/knowledge/modules/database.md +241 -241
- package/datasource-funifier-docs/knowledge/modules/folder.md +111 -111
- package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +23 -23
- package/datasource-funifier-docs/knowledge/modules/lastmile.md +45 -45
- package/datasource-funifier-docs/knowledge/modules/leaderboard.md +98 -98
- package/datasource-funifier-docs/knowledge/modules/level.md +83 -83
- package/datasource-funifier-docs/knowledge/modules/lottery.md +112 -112
- package/datasource-funifier-docs/knowledge/modules/marketplace.md +27 -27
- package/datasource-funifier-docs/knowledge/modules/mystery.md +82 -82
- package/datasource-funifier-docs/knowledge/modules/notification.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/patterns.md +1096 -1096
- package/datasource-funifier-docs/knowledge/modules/player.md +101 -101
- package/datasource-funifier-docs/knowledge/modules/point.md +67 -67
- package/datasource-funifier-docs/knowledge/modules/public.md +253 -253
- package/datasource-funifier-docs/knowledge/modules/question.md +136 -136
- package/datasource-funifier-docs/knowledge/modules/quiz.md +163 -163
- package/datasource-funifier-docs/knowledge/modules/scheduler.md +58 -58
- package/datasource-funifier-docs/knowledge/modules/security.md +169 -169
- package/datasource-funifier-docs/knowledge/modules/staging.md +28 -28
- package/datasource-funifier-docs/knowledge/modules/static-repo.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/story.md +42 -42
- package/datasource-funifier-docs/knowledge/modules/studio-page.md +180 -180
- package/datasource-funifier-docs/knowledge/modules/swap.md +132 -132
- package/datasource-funifier-docs/knowledge/modules/team.md +75 -75
- package/datasource-funifier-docs/knowledge/modules/trigger.md +189 -189
- package/datasource-funifier-docs/knowledge/modules/upload.md +155 -155
- package/datasource-funifier-docs/knowledge/modules/virtual-good.md +99 -99
- package/datasource-funifier-docs/knowledge/modules/webhook.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/websocket.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/widget.md +42 -42
- package/datasource-funifier-docs/process-gtm-saas.md +143 -143
- package/datasource-funifier-docs/process-instagram.md +88 -88
- package/datasource-funifier-docs/process.md +1826 -1826
- package/datasource-funifier-docs/readme.md +132 -132
- package/dist/cli/config-writers.js +11 -11
- package/dist/mcp/bundle.js +82 -77
- package/package.json +70 -67
- package/skills/funifier-create-aggregate/SKILL.md +126 -126
- package/skills/funifier-create-custom-page/SKILL.md +126 -126
- package/skills/funifier-create-scheduler/SKILL.md +126 -126
- package/skills/funifier-create-trigger/SKILL.md +127 -127
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
# Question (Pergunta)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/question`
|
|
4
|
-
**API Endpoint:** `/v3/question`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Configuração de perguntas e respostas para os jogadores. Permite criar perguntas em diferentes formatos (múltipla escolha, verdadeiro/falso, com mídia), definir respostas corretas ou colher opiniões, e aplicar pesos diferentes para as perguntas. A apresentação pode ser no formato tradicional ou em mini games como caça-palavras e cruzadinhas.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para criar quizzes e avaliações
|
|
13
|
-
- Para pesquisas de opinião
|
|
14
|
-
- Para treinamentos e capacitação
|
|
15
|
-
- Para mini games educativos
|
|
16
|
-
|
|
17
|
-
## Checklist de Configuração no Studio
|
|
18
|
-
|
|
19
|
-
- [ ] Definir tipo da pergunta (MULTIPLE_CHOICE, TRUE_FALSE, etc.)
|
|
20
|
-
- [ ] Definir título e texto da pergunta
|
|
21
|
-
- [ ] Criar opções de resposta com grades (pontuação)
|
|
22
|
-
- [ ] Definir se permite uma ou múltiplas respostas (select)
|
|
23
|
-
- [ ] Configurar embaralhamento (shuffle)
|
|
24
|
-
- [ ] Definir peso/grade da pergunta
|
|
25
|
-
|
|
26
|
-
## API Endpoints
|
|
27
|
-
|
|
28
|
-
### Listar Perguntas
|
|
29
|
-
**Método:** GET
|
|
30
|
-
**Endpoint:** `/v3/question`
|
|
31
|
-
|
|
32
|
-
### Criar Pergunta
|
|
33
|
-
**Método:** POST
|
|
34
|
-
**Endpoint:** `/v3/question`
|
|
35
|
-
|
|
36
|
-
**Exemplo de Body:**
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"_id": "64a5b2c2d8dcca49bcf7eb6e",
|
|
40
|
-
"type": "MULTIPLE_CHOICE",
|
|
41
|
-
"title": "Visual Components",
|
|
42
|
-
"question": "In Funifier, what is the small visual components that can be added to a web page to display feedbacks?",
|
|
43
|
-
"grade": 1,
|
|
44
|
-
"choices": [
|
|
45
|
-
{ "answer": "1", "label": "Points", "grade": 0, "extra": {} },
|
|
46
|
-
{ "answer": "2", "label": "Badges", "grade": 0, "extra": {} },
|
|
47
|
-
{ "answer": "3", "label": "Challenges", "grade": 0, "extra": {} },
|
|
48
|
-
{ "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {} },
|
|
49
|
-
{ "answer": "5", "label": "Widgets", "grade": 1, "extra": {} }
|
|
50
|
-
],
|
|
51
|
-
"techniques": ["GT05"],
|
|
52
|
-
"select": "one_answer",
|
|
53
|
-
"answerNumbering": "uppercase_letters",
|
|
54
|
-
"shuffle": false,
|
|
55
|
-
"feedbacks": [],
|
|
56
|
-
"extra": {}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Deletar Pergunta
|
|
61
|
-
**Método:** DELETE
|
|
62
|
-
**Endpoint:** `/v3/question/:id`
|
|
63
|
-
|
|
64
|
-
### Listar Respostas de Jogadores
|
|
65
|
-
**Método:** GET
|
|
66
|
-
**Endpoint:** `/v3/question/log?question=:id`
|
|
67
|
-
|
|
68
|
-
### Criar Resposta de Jogador
|
|
69
|
-
**Método:** POST
|
|
70
|
-
**Endpoint:** `/v3/question/log`
|
|
71
|
-
|
|
72
|
-
**Exemplo de Body:**
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"question": "64a5b2c2d8dcca49bcf7eb6e",
|
|
76
|
-
"answer": ["5"],
|
|
77
|
-
"player": "tom"
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Deletar Resposta
|
|
82
|
-
**Método:** DELETE
|
|
83
|
-
**Endpoint:** `/v3/question/log/:id`
|
|
84
|
-
|
|
85
|
-
## Tipos de Pergunta
|
|
86
|
-
|
|
87
|
-
| Tipo | Descrição |
|
|
88
|
-
|------|-----------|
|
|
89
|
-
| `MULTIPLE_CHOICE` | Múltipla escolha (uma ou várias respostas) |
|
|
90
|
-
| `TRUE_FALSE` | Verdadeiro ou Falso |
|
|
91
|
-
| `ESSAY` | Dissertativa (resposta livre) |
|
|
92
|
-
| `CROSSWORD` | Caça-palavras (mini game) |
|
|
93
|
-
| `WORD_SEARCH` | Cruzadinha (mini game) |
|
|
94
|
-
|
|
95
|
-
## Campos Importantes
|
|
96
|
-
|
|
97
|
-
| Campo | Tipo | Descrição |
|
|
98
|
-
|-------|------|-----------|
|
|
99
|
-
| `quiz` | String | ID do quiz pai (vincula pergunta ao quiz) |
|
|
100
|
-
| `type` | String | Tipo da pergunta (ver tabela acima) |
|
|
101
|
-
| `question` | String | Texto da pergunta |
|
|
102
|
-
| `grade` | Number | Peso/pontuação da pergunta |
|
|
103
|
-
| `choices` | Array | Opções de resposta (ver estrutura abaixo) |
|
|
104
|
-
| `select` | String | `one_answer` ou `multiple_answers` |
|
|
105
|
-
| `shuffle` | Boolean | Embaralhar opções |
|
|
106
|
-
| `techniques` | Array | IDs de técnicas de jogos vinculadas |
|
|
107
|
-
|
|
108
|
-
### Estrutura de Choice (Opção de Resposta)
|
|
109
|
-
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"answer": "1", // identificador único da opção
|
|
113
|
-
"label": "Funifier", // texto exibido
|
|
114
|
-
"grade": 1, // pontuação se escolhida (0 = errada)
|
|
115
|
-
"gradePercent": 100, // percentual de acerto
|
|
116
|
-
"gradeCheck": true, // indica se é resposta correta
|
|
117
|
-
"extra": {} // metadados adicionais
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Formatos de Apresentação
|
|
122
|
-
|
|
123
|
-
Perguntas podem incluir conteúdo rico:
|
|
124
|
-
- Texto com HTML
|
|
125
|
-
- Imagens (campo `image`)
|
|
126
|
-
- Vídeos e áudio (via `extra`)
|
|
127
|
-
- Mini games (caça-palavras, cruzadinha)
|
|
128
|
-
|
|
129
|
-
## Validações e Testes
|
|
130
|
-
|
|
131
|
-
- [ ] Pergunta aparece na lista GET /v3/question
|
|
132
|
-
- [ ] Resposta do jogador é registrada corretamente (POST /v3/question/log)
|
|
133
|
-
- [ ] Grade é calculada com base na resposta
|
|
134
|
-
- [ ] Opções de resposta estão corretas
|
|
135
|
-
- [ ] Vinculação com quiz funciona (campo `quiz`)
|
|
136
|
-
- [ ] Registro em lote funciona (POST /v3/question/log/bulk)
|
|
1
|
+
# Question (Pergunta)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/question`
|
|
4
|
+
**API Endpoint:** `/v3/question`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Configuração de perguntas e respostas para os jogadores. Permite criar perguntas em diferentes formatos (múltipla escolha, verdadeiro/falso, com mídia), definir respostas corretas ou colher opiniões, e aplicar pesos diferentes para as perguntas. A apresentação pode ser no formato tradicional ou em mini games como caça-palavras e cruzadinhas.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para criar quizzes e avaliações
|
|
13
|
+
- Para pesquisas de opinião
|
|
14
|
+
- Para treinamentos e capacitação
|
|
15
|
+
- Para mini games educativos
|
|
16
|
+
|
|
17
|
+
## Checklist de Configuração no Studio
|
|
18
|
+
|
|
19
|
+
- [ ] Definir tipo da pergunta (MULTIPLE_CHOICE, TRUE_FALSE, etc.)
|
|
20
|
+
- [ ] Definir título e texto da pergunta
|
|
21
|
+
- [ ] Criar opções de resposta com grades (pontuação)
|
|
22
|
+
- [ ] Definir se permite uma ou múltiplas respostas (select)
|
|
23
|
+
- [ ] Configurar embaralhamento (shuffle)
|
|
24
|
+
- [ ] Definir peso/grade da pergunta
|
|
25
|
+
|
|
26
|
+
## API Endpoints
|
|
27
|
+
|
|
28
|
+
### Listar Perguntas
|
|
29
|
+
**Método:** GET
|
|
30
|
+
**Endpoint:** `/v3/question`
|
|
31
|
+
|
|
32
|
+
### Criar Pergunta
|
|
33
|
+
**Método:** POST
|
|
34
|
+
**Endpoint:** `/v3/question`
|
|
35
|
+
|
|
36
|
+
**Exemplo de Body:**
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"_id": "64a5b2c2d8dcca49bcf7eb6e",
|
|
40
|
+
"type": "MULTIPLE_CHOICE",
|
|
41
|
+
"title": "Visual Components",
|
|
42
|
+
"question": "In Funifier, what is the small visual components that can be added to a web page to display feedbacks?",
|
|
43
|
+
"grade": 1,
|
|
44
|
+
"choices": [
|
|
45
|
+
{ "answer": "1", "label": "Points", "grade": 0, "extra": {} },
|
|
46
|
+
{ "answer": "2", "label": "Badges", "grade": 0, "extra": {} },
|
|
47
|
+
{ "answer": "3", "label": "Challenges", "grade": 0, "extra": {} },
|
|
48
|
+
{ "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {} },
|
|
49
|
+
{ "answer": "5", "label": "Widgets", "grade": 1, "extra": {} }
|
|
50
|
+
],
|
|
51
|
+
"techniques": ["GT05"],
|
|
52
|
+
"select": "one_answer",
|
|
53
|
+
"answerNumbering": "uppercase_letters",
|
|
54
|
+
"shuffle": false,
|
|
55
|
+
"feedbacks": [],
|
|
56
|
+
"extra": {}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Deletar Pergunta
|
|
61
|
+
**Método:** DELETE
|
|
62
|
+
**Endpoint:** `/v3/question/:id`
|
|
63
|
+
|
|
64
|
+
### Listar Respostas de Jogadores
|
|
65
|
+
**Método:** GET
|
|
66
|
+
**Endpoint:** `/v3/question/log?question=:id`
|
|
67
|
+
|
|
68
|
+
### Criar Resposta de Jogador
|
|
69
|
+
**Método:** POST
|
|
70
|
+
**Endpoint:** `/v3/question/log`
|
|
71
|
+
|
|
72
|
+
**Exemplo de Body:**
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"question": "64a5b2c2d8dcca49bcf7eb6e",
|
|
76
|
+
"answer": ["5"],
|
|
77
|
+
"player": "tom"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Deletar Resposta
|
|
82
|
+
**Método:** DELETE
|
|
83
|
+
**Endpoint:** `/v3/question/log/:id`
|
|
84
|
+
|
|
85
|
+
## Tipos de Pergunta
|
|
86
|
+
|
|
87
|
+
| Tipo | Descrição |
|
|
88
|
+
|------|-----------|
|
|
89
|
+
| `MULTIPLE_CHOICE` | Múltipla escolha (uma ou várias respostas) |
|
|
90
|
+
| `TRUE_FALSE` | Verdadeiro ou Falso |
|
|
91
|
+
| `ESSAY` | Dissertativa (resposta livre) |
|
|
92
|
+
| `CROSSWORD` | Caça-palavras (mini game) |
|
|
93
|
+
| `WORD_SEARCH` | Cruzadinha (mini game) |
|
|
94
|
+
|
|
95
|
+
## Campos Importantes
|
|
96
|
+
|
|
97
|
+
| Campo | Tipo | Descrição |
|
|
98
|
+
|-------|------|-----------|
|
|
99
|
+
| `quiz` | String | ID do quiz pai (vincula pergunta ao quiz) |
|
|
100
|
+
| `type` | String | Tipo da pergunta (ver tabela acima) |
|
|
101
|
+
| `question` | String | Texto da pergunta |
|
|
102
|
+
| `grade` | Number | Peso/pontuação da pergunta |
|
|
103
|
+
| `choices` | Array | Opções de resposta (ver estrutura abaixo) |
|
|
104
|
+
| `select` | String | `one_answer` ou `multiple_answers` |
|
|
105
|
+
| `shuffle` | Boolean | Embaralhar opções |
|
|
106
|
+
| `techniques` | Array | IDs de técnicas de jogos vinculadas |
|
|
107
|
+
|
|
108
|
+
### Estrutura de Choice (Opção de Resposta)
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"answer": "1", // identificador único da opção
|
|
113
|
+
"label": "Funifier", // texto exibido
|
|
114
|
+
"grade": 1, // pontuação se escolhida (0 = errada)
|
|
115
|
+
"gradePercent": 100, // percentual de acerto
|
|
116
|
+
"gradeCheck": true, // indica se é resposta correta
|
|
117
|
+
"extra": {} // metadados adicionais
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Formatos de Apresentação
|
|
122
|
+
|
|
123
|
+
Perguntas podem incluir conteúdo rico:
|
|
124
|
+
- Texto com HTML
|
|
125
|
+
- Imagens (campo `image`)
|
|
126
|
+
- Vídeos e áudio (via `extra`)
|
|
127
|
+
- Mini games (caça-palavras, cruzadinha)
|
|
128
|
+
|
|
129
|
+
## Validações e Testes
|
|
130
|
+
|
|
131
|
+
- [ ] Pergunta aparece na lista GET /v3/question
|
|
132
|
+
- [ ] Resposta do jogador é registrada corretamente (POST /v3/question/log)
|
|
133
|
+
- [ ] Grade é calculada com base na resposta
|
|
134
|
+
- [ ] Opções de resposta estão corretas
|
|
135
|
+
- [ ] Vinculação com quiz funciona (campo `quiz`)
|
|
136
|
+
- [ ] Registro em lote funciona (POST /v3/question/log/bulk)
|
|
@@ -1,163 +1,163 @@
|
|
|
1
|
-
# Quiz (Quiz)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/quiz`
|
|
4
|
-
**API Endpoint:** `/v3/quiz`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Agrupamento de perguntas em formato de prova ou simulado. Permite criar provas compostas por perguntas, definir nota total, controlar tentativas e embaralhar questões para cada jogador. Os quizzes podem ser apresentados como mini games.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para criar provas e avaliações
|
|
13
|
-
- Para simulados com nota
|
|
14
|
-
- Para treinamentos com pontuação
|
|
15
|
-
- Para concursos de conhecimento
|
|
16
|
-
|
|
17
|
-
## Dependências
|
|
18
|
-
|
|
19
|
-
- **Question**: perguntas devem ser criadas para compor o quiz
|
|
20
|
-
|
|
21
|
-
## Checklist de Configuração no Studio
|
|
22
|
-
|
|
23
|
-
- [ ] Definir título e descrição do quiz
|
|
24
|
-
- [ ] Definir nota total (grade)
|
|
25
|
-
- [ ] Criar perguntas associadas ao quiz
|
|
26
|
-
- [ ] Configurar embaralhamento (shuffle)
|
|
27
|
-
- [ ] Definir se mostra nota antes de finalizar (showGradeBeforeFinish)
|
|
28
|
-
- [ ] Configurar numeração das questões (questionNumbering)
|
|
29
|
-
|
|
30
|
-
## API Endpoints
|
|
31
|
-
|
|
32
|
-
### Listar Quizzes
|
|
33
|
-
**Método:** GET
|
|
34
|
-
**Endpoint:** `/v3/database/quiz`
|
|
35
|
-
|
|
36
|
-
### Criar Quiz
|
|
37
|
-
**Método:** POST
|
|
38
|
-
**Endpoint:** `/v3/quiz`
|
|
39
|
-
|
|
40
|
-
**Exemplo de Body:**
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"_id": "650c82fe832",
|
|
44
|
-
"title": "Funifier Exam",
|
|
45
|
-
"description": "Test your knowledge about the best gamification platform in the world.",
|
|
46
|
-
"grade": 10,
|
|
47
|
-
"i18n": {},
|
|
48
|
-
"extra": {},
|
|
49
|
-
"feedbacks": [],
|
|
50
|
-
"questionNumbering": "uppercase_letters",
|
|
51
|
-
"showGradeBeforeFinish": false,
|
|
52
|
-
"shuffle": false
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Deletar Quiz
|
|
57
|
-
**Método:** DELETE
|
|
58
|
-
**Endpoint:** `/v3/quiz/:id`
|
|
59
|
-
|
|
60
|
-
### Listar Perguntas de um Quiz
|
|
61
|
-
**Método:** GET
|
|
62
|
-
**Endpoint:** `/v3/quiz/:id/question`
|
|
63
|
-
|
|
64
|
-
### Criar Pergunta para um Quiz
|
|
65
|
-
**Método:** POST
|
|
66
|
-
**Endpoint:** `/v3/question`
|
|
67
|
-
|
|
68
|
-
**Exemplo de Body:**
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"quiz": "650c82fe832",
|
|
72
|
-
"type": "MULTIPLE_CHOICE",
|
|
73
|
-
"title": "Best Platform",
|
|
74
|
-
"question": "What is the best gamification platform?",
|
|
75
|
-
"grade": 1,
|
|
76
|
-
"choices": [
|
|
77
|
-
{ "answer": "1", "label": "Funifier", "grade": 1, "extra": {}, "gradePercent": 100, "gradeCheck": true },
|
|
78
|
-
{ "answer": "2", "label": "Points", "grade": 0, "extra": {}, "gradePercent": 0 },
|
|
79
|
-
{ "answer": "3", "label": "Badges", "grade": 0, "extra": {}, "gradePercent": 0 },
|
|
80
|
-
{ "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {}, "gradePercent": 0 }
|
|
81
|
-
],
|
|
82
|
-
"i18n": {},
|
|
83
|
-
"select": "one_answer",
|
|
84
|
-
"shuffle": false
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Iniciar Quiz
|
|
89
|
-
**Método:** POST
|
|
90
|
-
**Endpoint:** `/v3/quiz/start`
|
|
91
|
-
|
|
92
|
-
**Exemplo de Body:**
|
|
93
|
-
```json
|
|
94
|
-
{
|
|
95
|
-
"quiz": "650c82fe832",
|
|
96
|
-
"player": "tom"
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Registrar Respostas em Lote
|
|
101
|
-
**Método:** POST
|
|
102
|
-
**Endpoint:** `/v3/question/log/bulk`
|
|
103
|
-
|
|
104
|
-
**Exemplo de Body:**
|
|
105
|
-
```json
|
|
106
|
-
[
|
|
107
|
-
{
|
|
108
|
-
"quiz": "650c82fe832",
|
|
109
|
-
"quiz_log": "650dc6168325771ffaa94098",
|
|
110
|
-
"question": "650dc4d98325771ffaa93e5e",
|
|
111
|
-
"answer": ["1"],
|
|
112
|
-
"player": "tom"
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Finalizar Quiz
|
|
118
|
-
**Método:** POST
|
|
119
|
-
**Endpoint:** `/v3/quiz/finish`
|
|
120
|
-
|
|
121
|
-
**Exemplo de Body:**
|
|
122
|
-
```json
|
|
123
|
-
{
|
|
124
|
-
"quiz_log": "650dc6168325771ffaa94098"
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Fluxo Completo do Quiz
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
1. Admin cria Quiz (POST /v3/quiz)
|
|
132
|
-
2. Admin cria Questions vinculadas ao Quiz (POST /v3/question com "quiz": "quiz_id")
|
|
133
|
-
3. Jogador inicia Quiz (POST /v3/quiz/start → retorna quiz_log_id)
|
|
134
|
-
4. Jogador responde questões (POST /v3/question/log/bulk com quiz_log_id)
|
|
135
|
-
5. Jogador finaliza Quiz (POST /v3/quiz/finish → calcula nota)
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## Campos Importantes
|
|
139
|
-
|
|
140
|
-
| Campo | Tipo | Descrição |
|
|
141
|
-
|-------|------|-----------|
|
|
142
|
-
| `grade` | Number | Nota total do quiz (ex: 10) |
|
|
143
|
-
| `shuffle` | Boolean | Embaralhar ordem das perguntas |
|
|
144
|
-
| `showGradeBeforeFinish` | Boolean | Mostrar nota parcial antes de finalizar |
|
|
145
|
-
| `questionNumbering` | String | Formato numeração (`uppercase_letters`, `numbers`, etc.) |
|
|
146
|
-
| `feedbacks` | Array | Mensagens de feedback por faixa de nota |
|
|
147
|
-
|
|
148
|
-
## Apresentação como Mini Game
|
|
149
|
-
|
|
150
|
-
Quizzes podem ser apresentados em formatos de mini games:
|
|
151
|
-
- Corrida espacial
|
|
152
|
-
- Quiz tradicional com timer
|
|
153
|
-
- Formato personalizado via widget/frontend
|
|
154
|
-
|
|
155
|
-
## Validações e Testes
|
|
156
|
-
|
|
157
|
-
- [ ] Quiz aparece na lista GET /v3/database/quiz
|
|
158
|
-
- [ ] Perguntas estão associadas ao quiz
|
|
159
|
-
- [ ] Jogador consegue iniciar quiz (POST /v3/quiz/start)
|
|
160
|
-
- [ ] Respostas são registradas corretamente (POST /v3/question/log/bulk)
|
|
161
|
-
- [ ] Ao finalizar, nota é calculada (POST /v3/quiz/finish)
|
|
162
|
-
- [ ] Embaralhamento funciona (se ativado)
|
|
163
|
-
- [ ] Feedbacks aparecem conforme faixa de nota
|
|
1
|
+
# Quiz (Quiz)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/quiz`
|
|
4
|
+
**API Endpoint:** `/v3/quiz`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Agrupamento de perguntas em formato de prova ou simulado. Permite criar provas compostas por perguntas, definir nota total, controlar tentativas e embaralhar questões para cada jogador. Os quizzes podem ser apresentados como mini games.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para criar provas e avaliações
|
|
13
|
+
- Para simulados com nota
|
|
14
|
+
- Para treinamentos com pontuação
|
|
15
|
+
- Para concursos de conhecimento
|
|
16
|
+
|
|
17
|
+
## Dependências
|
|
18
|
+
|
|
19
|
+
- **Question**: perguntas devem ser criadas para compor o quiz
|
|
20
|
+
|
|
21
|
+
## Checklist de Configuração no Studio
|
|
22
|
+
|
|
23
|
+
- [ ] Definir título e descrição do quiz
|
|
24
|
+
- [ ] Definir nota total (grade)
|
|
25
|
+
- [ ] Criar perguntas associadas ao quiz
|
|
26
|
+
- [ ] Configurar embaralhamento (shuffle)
|
|
27
|
+
- [ ] Definir se mostra nota antes de finalizar (showGradeBeforeFinish)
|
|
28
|
+
- [ ] Configurar numeração das questões (questionNumbering)
|
|
29
|
+
|
|
30
|
+
## API Endpoints
|
|
31
|
+
|
|
32
|
+
### Listar Quizzes
|
|
33
|
+
**Método:** GET
|
|
34
|
+
**Endpoint:** `/v3/database/quiz`
|
|
35
|
+
|
|
36
|
+
### Criar Quiz
|
|
37
|
+
**Método:** POST
|
|
38
|
+
**Endpoint:** `/v3/quiz`
|
|
39
|
+
|
|
40
|
+
**Exemplo de Body:**
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"_id": "650c82fe832",
|
|
44
|
+
"title": "Funifier Exam",
|
|
45
|
+
"description": "Test your knowledge about the best gamification platform in the world.",
|
|
46
|
+
"grade": 10,
|
|
47
|
+
"i18n": {},
|
|
48
|
+
"extra": {},
|
|
49
|
+
"feedbacks": [],
|
|
50
|
+
"questionNumbering": "uppercase_letters",
|
|
51
|
+
"showGradeBeforeFinish": false,
|
|
52
|
+
"shuffle": false
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Deletar Quiz
|
|
57
|
+
**Método:** DELETE
|
|
58
|
+
**Endpoint:** `/v3/quiz/:id`
|
|
59
|
+
|
|
60
|
+
### Listar Perguntas de um Quiz
|
|
61
|
+
**Método:** GET
|
|
62
|
+
**Endpoint:** `/v3/quiz/:id/question`
|
|
63
|
+
|
|
64
|
+
### Criar Pergunta para um Quiz
|
|
65
|
+
**Método:** POST
|
|
66
|
+
**Endpoint:** `/v3/question`
|
|
67
|
+
|
|
68
|
+
**Exemplo de Body:**
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"quiz": "650c82fe832",
|
|
72
|
+
"type": "MULTIPLE_CHOICE",
|
|
73
|
+
"title": "Best Platform",
|
|
74
|
+
"question": "What is the best gamification platform?",
|
|
75
|
+
"grade": 1,
|
|
76
|
+
"choices": [
|
|
77
|
+
{ "answer": "1", "label": "Funifier", "grade": 1, "extra": {}, "gradePercent": 100, "gradeCheck": true },
|
|
78
|
+
{ "answer": "2", "label": "Points", "grade": 0, "extra": {}, "gradePercent": 0 },
|
|
79
|
+
{ "answer": "3", "label": "Badges", "grade": 0, "extra": {}, "gradePercent": 0 },
|
|
80
|
+
{ "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {}, "gradePercent": 0 }
|
|
81
|
+
],
|
|
82
|
+
"i18n": {},
|
|
83
|
+
"select": "one_answer",
|
|
84
|
+
"shuffle": false
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Iniciar Quiz
|
|
89
|
+
**Método:** POST
|
|
90
|
+
**Endpoint:** `/v3/quiz/start`
|
|
91
|
+
|
|
92
|
+
**Exemplo de Body:**
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"quiz": "650c82fe832",
|
|
96
|
+
"player": "tom"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Registrar Respostas em Lote
|
|
101
|
+
**Método:** POST
|
|
102
|
+
**Endpoint:** `/v3/question/log/bulk`
|
|
103
|
+
|
|
104
|
+
**Exemplo de Body:**
|
|
105
|
+
```json
|
|
106
|
+
[
|
|
107
|
+
{
|
|
108
|
+
"quiz": "650c82fe832",
|
|
109
|
+
"quiz_log": "650dc6168325771ffaa94098",
|
|
110
|
+
"question": "650dc4d98325771ffaa93e5e",
|
|
111
|
+
"answer": ["1"],
|
|
112
|
+
"player": "tom"
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Finalizar Quiz
|
|
118
|
+
**Método:** POST
|
|
119
|
+
**Endpoint:** `/v3/quiz/finish`
|
|
120
|
+
|
|
121
|
+
**Exemplo de Body:**
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"quiz_log": "650dc6168325771ffaa94098"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Fluxo Completo do Quiz
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
1. Admin cria Quiz (POST /v3/quiz)
|
|
132
|
+
2. Admin cria Questions vinculadas ao Quiz (POST /v3/question com "quiz": "quiz_id")
|
|
133
|
+
3. Jogador inicia Quiz (POST /v3/quiz/start → retorna quiz_log_id)
|
|
134
|
+
4. Jogador responde questões (POST /v3/question/log/bulk com quiz_log_id)
|
|
135
|
+
5. Jogador finaliza Quiz (POST /v3/quiz/finish → calcula nota)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Campos Importantes
|
|
139
|
+
|
|
140
|
+
| Campo | Tipo | Descrição |
|
|
141
|
+
|-------|------|-----------|
|
|
142
|
+
| `grade` | Number | Nota total do quiz (ex: 10) |
|
|
143
|
+
| `shuffle` | Boolean | Embaralhar ordem das perguntas |
|
|
144
|
+
| `showGradeBeforeFinish` | Boolean | Mostrar nota parcial antes de finalizar |
|
|
145
|
+
| `questionNumbering` | String | Formato numeração (`uppercase_letters`, `numbers`, etc.) |
|
|
146
|
+
| `feedbacks` | Array | Mensagens de feedback por faixa de nota |
|
|
147
|
+
|
|
148
|
+
## Apresentação como Mini Game
|
|
149
|
+
|
|
150
|
+
Quizzes podem ser apresentados em formatos de mini games:
|
|
151
|
+
- Corrida espacial
|
|
152
|
+
- Quiz tradicional com timer
|
|
153
|
+
- Formato personalizado via widget/frontend
|
|
154
|
+
|
|
155
|
+
## Validações e Testes
|
|
156
|
+
|
|
157
|
+
- [ ] Quiz aparece na lista GET /v3/database/quiz
|
|
158
|
+
- [ ] Perguntas estão associadas ao quiz
|
|
159
|
+
- [ ] Jogador consegue iniciar quiz (POST /v3/quiz/start)
|
|
160
|
+
- [ ] Respostas são registradas corretamente (POST /v3/question/log/bulk)
|
|
161
|
+
- [ ] Ao finalizar, nota é calculada (POST /v3/quiz/finish)
|
|
162
|
+
- [ ] Embaralhamento funciona (se ativado)
|
|
163
|
+
- [ ] Feedbacks aparecem conforme faixa de nota
|