API Reference: Conquistas

Base URL: /api/conquistas. Todos requerem autenticacao.

Endpoints

MetodoEndpointPermissaoDescricao
GET/api/conquistasAutenticadoListar todas as conquistas do nucleo
GET/api/conquistas/minhasAutenticadoMinhas conquistas (desbloqueadas + bloqueadas com progresso)
POST/api/conquistasAdminCriar nova conquista
PATCH/api/conquistas/:idAdminEditar conquista existente
POST/api/conquistas/verificarAdminVerificar e conceder conquistas a um usuario

Regras Dinamicas

Cada conquista possui uma regra dinamica definida por campos na tabela conquistas:

CampoTipoDescricao
regra_tipoenumTipo da regra que define o criterio de desbloqueio
regra_quantidadeintegerMeta numerica a ser atingida (ex: 5 eventos, 10 tarefas)
regra_campo_extratextCampo adicional para regras que precisam de parametro extra (ex: nome do plano)
progresso_visivelbooleanSe a barra de progresso e visivel para o membro (default: true)
regra_codigotextCodigo legado para conquistas padrao (ex: ENGAJADO, VETERANO). Mantido para compatibilidade.

Tipos de Regra (regra_tipo)

regra_tipoDescricaoregra_quantidaderegra_campo_extra
eventosParticipar de N eventos (check-in PRESENTE)N eventos--
tarefasCompletar N tarefas aprovadasN tarefas--
saldoAtingir saldo de N moedas do nucleoN moedas--
indicacoesTer N indicacoes aprovadasN indicacoes--
projetosParticipar de N projetosN projetos--
planoAssinar plano especifico--Nome do plano (ex: ONCA)
personalizadaConcedida manualmente pelo admin----

Progresso (getProgresso)

O metodo getProgresso(usuarioId, conquistaId) retorna o progresso do usuario em direcao a uma conquista:

{
  "atual": 3,
  "meta": 5,
  "percentual": 60
}
  • atual: valor atual do usuario para o criterio da regra
  • meta: valor de regra_quantidade da conquista
  • percentual: Math.min(100, Math.round((atual / meta) * 100))

Barra de Progresso na UI

Na pagina de conquistas do membro (/dashboard/conquistas), cada conquista bloqueada exibe:

  • Barra de progresso visual com percentual (quando progresso_visivel = true)
  • Texto indicativo: "3 de 5 eventos"
  • Conquistas desbloqueadas exibem o badge completo com data de desbloqueio
  • Conquistas com progresso_visivel = false exibem apenas o icone bloqueado sem barra

Conquistas Padrao (Legacy)

Conquistas migradas do sistema antigo que utilizam regra_codigo. Novas conquistas devem usar o sistema de regras dinamicas.

BadgeRegra CodigoEquivalente Dinamico
Primeiro PassoPRIMEIRO_PASSOpersonalizada (cadastro completo)
EngajadoENGAJADOeventos, quantidade: 5
VeteranoVETERANOeventos, quantidade: 20
Mao na MassaMAO_NA_MASSAtarefas, quantidade: 50
RecrutadorRECRUTADORindicacoes, quantidade: 5
Formador de OpiniaoFORMADOR_OPINIAOtarefas, quantidade: 10
Onca PintadaONCA_PINTADAplano, campo_extra: ONCA

Motor de Regras

O metodo verificarConquistas() avalia todas as regras pendentes para um usuario. E chamado automaticamente apos eventos relevantes (aprovar tarefa, check-in evento, aprovar cadastro, assinar plano). Ao desbloquear, gera notificacao e entrada no feed.

  • Verifica primeiro pelo regra_tipo dinamico
  • Fallback para regra_codigo legado se regra_tipo nao estiver definido
  • Conquistas do tipo personalizada sao ignoradas pelo motor automatico (concedidas manualmente)

Admin UI: Formulario Expandido

A tela de administracao de conquistas (/dashboard/admin/conquistas) possui um formulario expandido:

  • Select para regra_tipo com todas as opcoes disponiveis
  • Campo numerico para regra_quantidade (exibido condicionalmente para tipos que usam quantidade)
  • Campo texto para regra_campo_extra (exibido condicionalmente para tipos que usam campo extra)
  • Toggle para progresso_visivel
  • Upload de icone/badge da conquista
  • Preview visual do card da conquista antes de salvar