funifier-mcp 0.2.0 → 0.2.3
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 +55 -52
- 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,91 +1,91 @@
|
|
|
1
|
-
# Challenge (Desafio)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/challenge`
|
|
4
|
-
**API Endpoint:** `/v3/challenge`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Configuração de desafios a serem completados por jogadores ou equipes. Permite criar desafios personalizados, definindo ações que o jogador precisa realizar e recompensas que receberá. Os desafios podem variar de simples tarefas a missões complexas compostas por múltiplas ações ou etapas.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Em quase todo projeto de gamificação
|
|
13
|
-
- Para definir missões e objetivos para jogadores
|
|
14
|
-
- Para vincular ações a recompensas (pontos, itens, etc.)
|
|
15
|
-
- Para criar progressão e senso de conquista
|
|
16
|
-
|
|
17
|
-
## Dependências
|
|
18
|
-
|
|
19
|
-
- **Point**: tipos de ponto devem existir antes de criar challenges que os recompensam
|
|
20
|
-
- **Action**: ações devem existir antes de criar challenges que as referenciam
|
|
21
|
-
|
|
22
|
-
## Checklist de Configuração no Studio
|
|
23
|
-
|
|
24
|
-
- [ ] Definir título e descrição do desafio
|
|
25
|
-
- [ ] Definir regras (rules): qual ação, quantas vezes, filtros por atributo
|
|
26
|
-
- [ ] Definir recompensas (points): tipo de ponto e quantidade
|
|
27
|
-
- [ ] Definir frequência (uma vez, diário, semanal, ilimitado)
|
|
28
|
-
- [ ] Definir desbloqueio (quando fica disponível)
|
|
29
|
-
- [ ] Configurar notificações de conclusão
|
|
30
|
-
- [ ] Vincular técnicas de jogo (techniques)
|
|
31
|
-
|
|
32
|
-
## API Endpoints
|
|
33
|
-
|
|
34
|
-
### Listar Desafios
|
|
35
|
-
**Método:** GET
|
|
36
|
-
**Endpoint:** `/v3/challenge`
|
|
37
|
-
|
|
38
|
-
**Exemplo de Resposta:**
|
|
39
|
-
```json
|
|
40
|
-
[
|
|
41
|
-
{
|
|
42
|
-
"challenge": "Sell 10 books",
|
|
43
|
-
"description": "Sell 10 books to earn 25 xp and 5 coins",
|
|
44
|
-
"rules": [
|
|
45
|
-
{
|
|
46
|
-
"actionId": "sell",
|
|
47
|
-
"filters": [
|
|
48
|
-
{ "value": "book", "operator": 1, "param": "product" }
|
|
49
|
-
],
|
|
50
|
-
"total": 10
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
"points": [
|
|
54
|
-
{ "total": 25, "category": "xp" },
|
|
55
|
-
{ "total": 5, "category": "coin" }
|
|
56
|
-
],
|
|
57
|
-
"_id": "DTkhJHV"
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Criar Desafio
|
|
63
|
-
**Método:** POST
|
|
64
|
-
**Endpoint:** `/v3/challenge`
|
|
65
|
-
|
|
66
|
-
**Exemplo de Body:**
|
|
67
|
-
```json
|
|
68
|
-
{
|
|
69
|
-
"challenge": "Watch Video",
|
|
70
|
-
"description": "Complete this challenge by watching a video, and earn 10 xp",
|
|
71
|
-
"rules": [
|
|
72
|
-
{ "actionId": "watch_video", "operator": 5, "total": 0 }
|
|
73
|
-
],
|
|
74
|
-
"points": [
|
|
75
|
-
{ "total": 10.0, "category": "xp", "operation": 0 }
|
|
76
|
-
],
|
|
77
|
-
"techniques": ["GT35"]
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Excluir Desafio
|
|
82
|
-
**Método:** DELETE
|
|
83
|
-
**Endpoint:** `/v3/challenge/:id`
|
|
84
|
-
|
|
85
|
-
## Validações e Testes
|
|
86
|
-
|
|
87
|
-
- [ ] Desafio aparece na lista GET /v3/challenge
|
|
88
|
-
- [ ] Ações referenciadas nas rules existem (GET /v3/action)
|
|
89
|
-
- [ ] Pontos referenciados nas recompensas existem (GET /v3/point)
|
|
90
|
-
- [ ] Ao registrar ação (POST /v3/action/log), o desafio progride corretamente
|
|
91
|
-
- [ ] Ao completar o desafio, jogador recebe os pontos definidos
|
|
1
|
+
# Challenge (Desafio)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/challenge`
|
|
4
|
+
**API Endpoint:** `/v3/challenge`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Configuração de desafios a serem completados por jogadores ou equipes. Permite criar desafios personalizados, definindo ações que o jogador precisa realizar e recompensas que receberá. Os desafios podem variar de simples tarefas a missões complexas compostas por múltiplas ações ou etapas.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Em quase todo projeto de gamificação
|
|
13
|
+
- Para definir missões e objetivos para jogadores
|
|
14
|
+
- Para vincular ações a recompensas (pontos, itens, etc.)
|
|
15
|
+
- Para criar progressão e senso de conquista
|
|
16
|
+
|
|
17
|
+
## Dependências
|
|
18
|
+
|
|
19
|
+
- **Point**: tipos de ponto devem existir antes de criar challenges que os recompensam
|
|
20
|
+
- **Action**: ações devem existir antes de criar challenges que as referenciam
|
|
21
|
+
|
|
22
|
+
## Checklist de Configuração no Studio
|
|
23
|
+
|
|
24
|
+
- [ ] Definir título e descrição do desafio
|
|
25
|
+
- [ ] Definir regras (rules): qual ação, quantas vezes, filtros por atributo
|
|
26
|
+
- [ ] Definir recompensas (points): tipo de ponto e quantidade
|
|
27
|
+
- [ ] Definir frequência (uma vez, diário, semanal, ilimitado)
|
|
28
|
+
- [ ] Definir desbloqueio (quando fica disponível)
|
|
29
|
+
- [ ] Configurar notificações de conclusão
|
|
30
|
+
- [ ] Vincular técnicas de jogo (techniques)
|
|
31
|
+
|
|
32
|
+
## API Endpoints
|
|
33
|
+
|
|
34
|
+
### Listar Desafios
|
|
35
|
+
**Método:** GET
|
|
36
|
+
**Endpoint:** `/v3/challenge`
|
|
37
|
+
|
|
38
|
+
**Exemplo de Resposta:**
|
|
39
|
+
```json
|
|
40
|
+
[
|
|
41
|
+
{
|
|
42
|
+
"challenge": "Sell 10 books",
|
|
43
|
+
"description": "Sell 10 books to earn 25 xp and 5 coins",
|
|
44
|
+
"rules": [
|
|
45
|
+
{
|
|
46
|
+
"actionId": "sell",
|
|
47
|
+
"filters": [
|
|
48
|
+
{ "value": "book", "operator": 1, "param": "product" }
|
|
49
|
+
],
|
|
50
|
+
"total": 10
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"points": [
|
|
54
|
+
{ "total": 25, "category": "xp" },
|
|
55
|
+
{ "total": 5, "category": "coin" }
|
|
56
|
+
],
|
|
57
|
+
"_id": "DTkhJHV"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Criar Desafio
|
|
63
|
+
**Método:** POST
|
|
64
|
+
**Endpoint:** `/v3/challenge`
|
|
65
|
+
|
|
66
|
+
**Exemplo de Body:**
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"challenge": "Watch Video",
|
|
70
|
+
"description": "Complete this challenge by watching a video, and earn 10 xp",
|
|
71
|
+
"rules": [
|
|
72
|
+
{ "actionId": "watch_video", "operator": 5, "total": 0 }
|
|
73
|
+
],
|
|
74
|
+
"points": [
|
|
75
|
+
{ "total": 10.0, "category": "xp", "operation": 0 }
|
|
76
|
+
],
|
|
77
|
+
"techniques": ["GT35"]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Excluir Desafio
|
|
82
|
+
**Método:** DELETE
|
|
83
|
+
**Endpoint:** `/v3/challenge/:id`
|
|
84
|
+
|
|
85
|
+
## Validações e Testes
|
|
86
|
+
|
|
87
|
+
- [ ] Desafio aparece na lista GET /v3/challenge
|
|
88
|
+
- [ ] Ações referenciadas nas rules existem (GET /v3/action)
|
|
89
|
+
- [ ] Pontos referenciados nas recompensas existem (GET /v3/point)
|
|
90
|
+
- [ ] Ao registrar ação (POST /v3/action/log), o desafio progride corretamente
|
|
91
|
+
- [ ] Ao completar o desafio, jogador recebe os pontos definidos
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# Compact (Compactação)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/compact`
|
|
4
|
-
**API Endpoint:** `/v3/compact`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Compactação e otimização do armazenamento de dados. Configura rotinas para agrupar registros e reduzir o espaço ocupado por dados históricos, como achievements ou logs, melhorando o tempo de resposta das consultas e a performance geral.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para compactar registros de achievements acumulados
|
|
13
|
-
- Para otimizar coleções de acesso rápido
|
|
14
|
-
- Para reduzir volume de dados históricos
|
|
15
|
-
|
|
16
|
-
## Checklist de Configuração no Studio
|
|
17
|
-
|
|
18
|
-
- [ ] Definir coleções a compactar
|
|
19
|
-
- [ ] Configurar critérios de agrupamento
|
|
20
|
-
- [ ] Testar impacto na performance
|
|
21
|
-
|
|
22
|
-
## API Endpoints
|
|
23
|
-
|
|
24
|
-
### Listar Compactações
|
|
25
|
-
**Método:** GET
|
|
26
|
-
**Endpoint:** `/v3/compact`
|
|
27
|
-
|
|
28
|
-
### Criar Compactação
|
|
29
|
-
**Método:** POST
|
|
30
|
-
**Endpoint:** `/v3/compact`
|
|
31
|
-
|
|
32
|
-
### Deletar Compactação
|
|
33
|
-
**Método:** DELETE
|
|
34
|
-
**Endpoint:** `/v3/compact/:id`
|
|
35
|
-
|
|
36
|
-
## Validações e Testes
|
|
37
|
-
|
|
38
|
-
- [ ] Compactação é executada sem perda de dados
|
|
39
|
-
- [ ] Volume de dados é reduzido
|
|
40
|
-
- [ ] Consultas mantêm resultados corretos após compactação
|
|
1
|
+
# Compact (Compactação)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/compact`
|
|
4
|
+
**API Endpoint:** `/v3/compact`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Compactação e otimização do armazenamento de dados. Configura rotinas para agrupar registros e reduzir o espaço ocupado por dados históricos, como achievements ou logs, melhorando o tempo de resposta das consultas e a performance geral.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para compactar registros de achievements acumulados
|
|
13
|
+
- Para otimizar coleções de acesso rápido
|
|
14
|
+
- Para reduzir volume de dados históricos
|
|
15
|
+
|
|
16
|
+
## Checklist de Configuração no Studio
|
|
17
|
+
|
|
18
|
+
- [ ] Definir coleções a compactar
|
|
19
|
+
- [ ] Configurar critérios de agrupamento
|
|
20
|
+
- [ ] Testar impacto na performance
|
|
21
|
+
|
|
22
|
+
## API Endpoints
|
|
23
|
+
|
|
24
|
+
### Listar Compactações
|
|
25
|
+
**Método:** GET
|
|
26
|
+
**Endpoint:** `/v3/compact`
|
|
27
|
+
|
|
28
|
+
### Criar Compactação
|
|
29
|
+
**Método:** POST
|
|
30
|
+
**Endpoint:** `/v3/compact`
|
|
31
|
+
|
|
32
|
+
### Deletar Compactação
|
|
33
|
+
**Método:** DELETE
|
|
34
|
+
**Endpoint:** `/v3/compact/:id`
|
|
35
|
+
|
|
36
|
+
## Validações e Testes
|
|
37
|
+
|
|
38
|
+
- [ ] Compactação é executada sem perda de dados
|
|
39
|
+
- [ ] Volume de dados é reduzido
|
|
40
|
+
- [ ] Consultas mantêm resultados corretos após compactação
|
|
@@ -1,149 +1,149 @@
|
|
|
1
|
-
# Competition (Competição)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/competition`
|
|
4
|
-
**API Endpoint:** `/v3/competition`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Configuração de disputas diretas entre jogadores ou equipes. Permite criar competições com regras próprias, prêmios para diferentes posições e critérios de apuração customizáveis. Geralmente, o jogador ou equipe precisa se inscrever para participar.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para criar disputas temporais (ex: competição de vendas mensal)
|
|
13
|
-
- Para premiar os melhores colocados em um período
|
|
14
|
-
- Para engajar equipes com competições internas
|
|
15
|
-
|
|
16
|
-
## Dependências
|
|
17
|
-
|
|
18
|
-
- **Point** ou **Action**: métrica de avaliação deve existir
|
|
19
|
-
- **Player** ou **Team**: participantes devem existir
|
|
20
|
-
|
|
21
|
-
## Checklist de Configuração no Studio
|
|
22
|
-
|
|
23
|
-
- [ ] Definir título e descrição
|
|
24
|
-
- [ ] Definir período de apuração (period.expression)
|
|
25
|
-
- [ ] Definir número máximo de vencedores (maxWinners)
|
|
26
|
-
- [ ] Definir número máximo de participantes (maxPlayers)
|
|
27
|
-
- [ ] Definir critério de ranking (operation: tipo, item, ordenação)
|
|
28
|
-
- [ ] Definir custo de inscrição (requires) se aplicável
|
|
29
|
-
- [ ] Definir recompensas por posição (rewards com position_start/position_ends)
|
|
30
|
-
- [ ] Definir se é competição de equipes (teamCompetition)
|
|
31
|
-
- [ ] Ativar competição (active: true)
|
|
32
|
-
- [ ] Definir execução automática (autoExecute)
|
|
33
|
-
|
|
34
|
-
## API Endpoints
|
|
35
|
-
|
|
36
|
-
### Listar Competições
|
|
37
|
-
**Método:** GET
|
|
38
|
-
**Endpoint:** `/v3/competition`
|
|
39
|
-
|
|
40
|
-
### Criar Competição
|
|
41
|
-
**Método:** POST
|
|
42
|
-
**Endpoint:** `/v3/competition`
|
|
43
|
-
|
|
44
|
-
**Exemplo de Body:**
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"title": "Sales Race",
|
|
48
|
-
"description": "Leads the competition who has the highest amount of closed sales in the month.",
|
|
49
|
-
"period": {
|
|
50
|
-
"expression": "-0M-;+1M+"
|
|
51
|
-
},
|
|
52
|
-
"maxWinners": 1,
|
|
53
|
-
"maxPlayers": 100,
|
|
54
|
-
"minScore": 0,
|
|
55
|
-
"operation": {
|
|
56
|
-
"type": 1,
|
|
57
|
-
"achievement_type": 0,
|
|
58
|
-
"item": "sell",
|
|
59
|
-
"filters": [],
|
|
60
|
-
"sort": -1,
|
|
61
|
-
"sub": false
|
|
62
|
-
},
|
|
63
|
-
"requires": [
|
|
64
|
-
{
|
|
65
|
-
"total": 10,
|
|
66
|
-
"type": 0,
|
|
67
|
-
"item": "coin",
|
|
68
|
-
"operation": 1,
|
|
69
|
-
"extra": {},
|
|
70
|
-
"restrict": false,
|
|
71
|
-
"perPlayer": false
|
|
72
|
-
}
|
|
73
|
-
],
|
|
74
|
-
"rewards": [
|
|
75
|
-
{
|
|
76
|
-
"total": 100,
|
|
77
|
-
"type": 0,
|
|
78
|
-
"item": "xp",
|
|
79
|
-
"operation": 0,
|
|
80
|
-
"extra": {
|
|
81
|
-
"position_start": 1,
|
|
82
|
-
"position_ends": 3
|
|
83
|
-
},
|
|
84
|
-
"restrict": false,
|
|
85
|
-
"perPlayer": false
|
|
86
|
-
}
|
|
87
|
-
],
|
|
88
|
-
"notifications": [],
|
|
89
|
-
"active": true,
|
|
90
|
-
"teamCompetition": false,
|
|
91
|
-
"autoExecute": true,
|
|
92
|
-
"extra": {},
|
|
93
|
-
"techniques": ["GT26"],
|
|
94
|
-
"_id": "race"
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Deletar Competição
|
|
99
|
-
**Método:** DELETE
|
|
100
|
-
**Endpoint:** `/v3/competition/:id`
|
|
101
|
-
|
|
102
|
-
### Listar Participações (Joins)
|
|
103
|
-
**Método:** GET
|
|
104
|
-
**Endpoint:** `/v3/competition/join?competition=:id`
|
|
105
|
-
|
|
106
|
-
### Criar Participação (Join)
|
|
107
|
-
**Método:** POST
|
|
108
|
-
**Endpoint:** `/v3/competition/join`
|
|
109
|
-
|
|
110
|
-
**Exemplo de Body:**
|
|
111
|
-
```json
|
|
112
|
-
{
|
|
113
|
-
"competition": "race",
|
|
114
|
-
"player": "jerry"
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Deletar Participação
|
|
119
|
-
**Método:** DELETE
|
|
120
|
-
**Endpoint:** `/v3/competition/join`
|
|
121
|
-
|
|
122
|
-
**Exemplo de Body:**
|
|
123
|
-
```json
|
|
124
|
-
{
|
|
125
|
-
"competition": "race",
|
|
126
|
-
"player": "tom"
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Listar Líderes da Competição
|
|
131
|
-
**Método:** POST
|
|
132
|
-
**Endpoint:** `/v3/competition/leader/aggregate?id=:id`
|
|
133
|
-
|
|
134
|
-
### Executar Competição
|
|
135
|
-
**Método:** GET
|
|
136
|
-
**Endpoint:** `/v3/competition/:id/execute`
|
|
137
|
-
**Descrição:** Finaliza a competição, calcula resultados e premia os vencedores.
|
|
138
|
-
|
|
139
|
-
### Reverter Execução
|
|
140
|
-
**Método:** DELETE
|
|
141
|
-
**Endpoint:** `/v3/competition/:id/execute`
|
|
142
|
-
|
|
143
|
-
## Validações e Testes
|
|
144
|
-
|
|
145
|
-
- [ ] Competição aparece na lista GET /v3/competition
|
|
146
|
-
- [ ] Jogador consegue se inscrever (join)
|
|
147
|
-
- [ ] Lista de líderes retorna dados ordenados
|
|
148
|
-
- [ ] Ao executar, vencedores recebem recompensas
|
|
149
|
-
- [ ] Custo de inscrição é debitado corretamente
|
|
1
|
+
# Competition (Competição)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/competition`
|
|
4
|
+
**API Endpoint:** `/v3/competition`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Configuração de disputas diretas entre jogadores ou equipes. Permite criar competições com regras próprias, prêmios para diferentes posições e critérios de apuração customizáveis. Geralmente, o jogador ou equipe precisa se inscrever para participar.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para criar disputas temporais (ex: competição de vendas mensal)
|
|
13
|
+
- Para premiar os melhores colocados em um período
|
|
14
|
+
- Para engajar equipes com competições internas
|
|
15
|
+
|
|
16
|
+
## Dependências
|
|
17
|
+
|
|
18
|
+
- **Point** ou **Action**: métrica de avaliação deve existir
|
|
19
|
+
- **Player** ou **Team**: participantes devem existir
|
|
20
|
+
|
|
21
|
+
## Checklist de Configuração no Studio
|
|
22
|
+
|
|
23
|
+
- [ ] Definir título e descrição
|
|
24
|
+
- [ ] Definir período de apuração (period.expression)
|
|
25
|
+
- [ ] Definir número máximo de vencedores (maxWinners)
|
|
26
|
+
- [ ] Definir número máximo de participantes (maxPlayers)
|
|
27
|
+
- [ ] Definir critério de ranking (operation: tipo, item, ordenação)
|
|
28
|
+
- [ ] Definir custo de inscrição (requires) se aplicável
|
|
29
|
+
- [ ] Definir recompensas por posição (rewards com position_start/position_ends)
|
|
30
|
+
- [ ] Definir se é competição de equipes (teamCompetition)
|
|
31
|
+
- [ ] Ativar competição (active: true)
|
|
32
|
+
- [ ] Definir execução automática (autoExecute)
|
|
33
|
+
|
|
34
|
+
## API Endpoints
|
|
35
|
+
|
|
36
|
+
### Listar Competições
|
|
37
|
+
**Método:** GET
|
|
38
|
+
**Endpoint:** `/v3/competition`
|
|
39
|
+
|
|
40
|
+
### Criar Competição
|
|
41
|
+
**Método:** POST
|
|
42
|
+
**Endpoint:** `/v3/competition`
|
|
43
|
+
|
|
44
|
+
**Exemplo de Body:**
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"title": "Sales Race",
|
|
48
|
+
"description": "Leads the competition who has the highest amount of closed sales in the month.",
|
|
49
|
+
"period": {
|
|
50
|
+
"expression": "-0M-;+1M+"
|
|
51
|
+
},
|
|
52
|
+
"maxWinners": 1,
|
|
53
|
+
"maxPlayers": 100,
|
|
54
|
+
"minScore": 0,
|
|
55
|
+
"operation": {
|
|
56
|
+
"type": 1,
|
|
57
|
+
"achievement_type": 0,
|
|
58
|
+
"item": "sell",
|
|
59
|
+
"filters": [],
|
|
60
|
+
"sort": -1,
|
|
61
|
+
"sub": false
|
|
62
|
+
},
|
|
63
|
+
"requires": [
|
|
64
|
+
{
|
|
65
|
+
"total": 10,
|
|
66
|
+
"type": 0,
|
|
67
|
+
"item": "coin",
|
|
68
|
+
"operation": 1,
|
|
69
|
+
"extra": {},
|
|
70
|
+
"restrict": false,
|
|
71
|
+
"perPlayer": false
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"rewards": [
|
|
75
|
+
{
|
|
76
|
+
"total": 100,
|
|
77
|
+
"type": 0,
|
|
78
|
+
"item": "xp",
|
|
79
|
+
"operation": 0,
|
|
80
|
+
"extra": {
|
|
81
|
+
"position_start": 1,
|
|
82
|
+
"position_ends": 3
|
|
83
|
+
},
|
|
84
|
+
"restrict": false,
|
|
85
|
+
"perPlayer": false
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"notifications": [],
|
|
89
|
+
"active": true,
|
|
90
|
+
"teamCompetition": false,
|
|
91
|
+
"autoExecute": true,
|
|
92
|
+
"extra": {},
|
|
93
|
+
"techniques": ["GT26"],
|
|
94
|
+
"_id": "race"
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Deletar Competição
|
|
99
|
+
**Método:** DELETE
|
|
100
|
+
**Endpoint:** `/v3/competition/:id`
|
|
101
|
+
|
|
102
|
+
### Listar Participações (Joins)
|
|
103
|
+
**Método:** GET
|
|
104
|
+
**Endpoint:** `/v3/competition/join?competition=:id`
|
|
105
|
+
|
|
106
|
+
### Criar Participação (Join)
|
|
107
|
+
**Método:** POST
|
|
108
|
+
**Endpoint:** `/v3/competition/join`
|
|
109
|
+
|
|
110
|
+
**Exemplo de Body:**
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"competition": "race",
|
|
114
|
+
"player": "jerry"
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Deletar Participação
|
|
119
|
+
**Método:** DELETE
|
|
120
|
+
**Endpoint:** `/v3/competition/join`
|
|
121
|
+
|
|
122
|
+
**Exemplo de Body:**
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"competition": "race",
|
|
126
|
+
"player": "tom"
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Listar Líderes da Competição
|
|
131
|
+
**Método:** POST
|
|
132
|
+
**Endpoint:** `/v3/competition/leader/aggregate?id=:id`
|
|
133
|
+
|
|
134
|
+
### Executar Competição
|
|
135
|
+
**Método:** GET
|
|
136
|
+
**Endpoint:** `/v3/competition/:id/execute`
|
|
137
|
+
**Descrição:** Finaliza a competição, calcula resultados e premia os vencedores.
|
|
138
|
+
|
|
139
|
+
### Reverter Execução
|
|
140
|
+
**Método:** DELETE
|
|
141
|
+
**Endpoint:** `/v3/competition/:id/execute`
|
|
142
|
+
|
|
143
|
+
## Validações e Testes
|
|
144
|
+
|
|
145
|
+
- [ ] Competição aparece na lista GET /v3/competition
|
|
146
|
+
- [ ] Jogador consegue se inscrever (join)
|
|
147
|
+
- [ ] Lista de líderes retorna dados ordenados
|
|
148
|
+
- [ ] Ao executar, vencedores recebem recompensas
|
|
149
|
+
- [ ] Custo de inscrição é debitado corretamente
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# Crossword (Palavras Cruzadas)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/crossword`
|
|
4
|
-
**API Endpoint:** `/v3/crossword`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Configuração de jogos de palavras cruzadas. Permite criar jogos customizados, com dicas, posições e temas específicos para diferentes objetivos educacionais ou promocionais.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para onboarding de funcionários com termos técnicos
|
|
13
|
-
- Para campanhas de marketing temáticas
|
|
14
|
-
- Para jogos educacionais
|
|
15
|
-
- Para engajamento com vocabulário específico
|
|
16
|
-
|
|
17
|
-
## Checklist de Configuração no Studio
|
|
18
|
-
|
|
19
|
-
- [ ] Definir título do jogo
|
|
20
|
-
- [ ] Criar palavras com dicas e posições
|
|
21
|
-
- [ ] Configurar tema visual
|
|
22
|
-
|
|
23
|
-
## API Endpoints
|
|
24
|
-
|
|
25
|
-
### Listar Crosswords
|
|
26
|
-
**Método:** GET
|
|
27
|
-
**Endpoint:** `/v3/crossword`
|
|
28
|
-
|
|
29
|
-
### Criar Crossword
|
|
30
|
-
**Método:** POST
|
|
31
|
-
**Endpoint:** `/v3/crossword`
|
|
32
|
-
|
|
33
|
-
### Deletar Crossword
|
|
34
|
-
**Método:** DELETE
|
|
35
|
-
**Endpoint:** `/v3/crossword/:id`
|
|
36
|
-
|
|
37
|
-
## Validações e Testes
|
|
38
|
-
|
|
39
|
-
- [ ] Crossword aparece na lista
|
|
40
|
-
- [ ] Palavras e dicas estão corretas
|
|
41
|
-
- [ ] Jogador consegue interagir com o jogo
|
|
1
|
+
# Crossword (Palavras Cruzadas)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/crossword`
|
|
4
|
+
**API Endpoint:** `/v3/crossword`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Configuração de jogos de palavras cruzadas. Permite criar jogos customizados, com dicas, posições e temas específicos para diferentes objetivos educacionais ou promocionais.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para onboarding de funcionários com termos técnicos
|
|
13
|
+
- Para campanhas de marketing temáticas
|
|
14
|
+
- Para jogos educacionais
|
|
15
|
+
- Para engajamento com vocabulário específico
|
|
16
|
+
|
|
17
|
+
## Checklist de Configuração no Studio
|
|
18
|
+
|
|
19
|
+
- [ ] Definir título do jogo
|
|
20
|
+
- [ ] Criar palavras com dicas e posições
|
|
21
|
+
- [ ] Configurar tema visual
|
|
22
|
+
|
|
23
|
+
## API Endpoints
|
|
24
|
+
|
|
25
|
+
### Listar Crosswords
|
|
26
|
+
**Método:** GET
|
|
27
|
+
**Endpoint:** `/v3/crossword`
|
|
28
|
+
|
|
29
|
+
### Criar Crossword
|
|
30
|
+
**Método:** POST
|
|
31
|
+
**Endpoint:** `/v3/crossword`
|
|
32
|
+
|
|
33
|
+
### Deletar Crossword
|
|
34
|
+
**Método:** DELETE
|
|
35
|
+
**Endpoint:** `/v3/crossword/:id`
|
|
36
|
+
|
|
37
|
+
## Validações e Testes
|
|
38
|
+
|
|
39
|
+
- [ ] Crossword aparece na lista
|
|
40
|
+
- [ ] Palavras e dicas estão corretas
|
|
41
|
+
- [ ] Jogador consegue interagir com o jogo
|