Skip to content

fix(gamificacao): contributionKind separa contribuicao real de progresso de trilha - #110

Merged
leo-nardo merged 2 commits into
mainfrom
fix/submission-contribution-kind
Jul 30, 2026
Merged

leo-nardo merged 2 commits into
mainfrom
fix/submission-contribution-kind

Conversation

@leo-nardo

Copy link
Copy Markdown
Contributor

Resumo

Investigando por que um usuario (luizcarvalho) tinha o selo "Primeira Missao" mesmo tendo so pulado uma prova de trilha (test-out, 0 XP), achei que o criterio do selo contava QUALQUER Submission com status = APPROVED — incluindo test-out e provas de trilha aprovadas, que nao sao contribuicao real para a comunidade. O bug afeta pelo menos 5 perfis em producao (confirmado via query direta).

Mudancas

  • Nova coluna Submission.contributionKind (COMMUNITY_ACTIVITY | TRACK_PROGRESS) formalizando a distincao que antes so existia implicitamente via trackItemId nulo/preenchido.
  • badge-evaluator.service.ts: selos de contribuicao (submissions_approved) so contam COMMUNITY_ACTIVITY aprovada com isTestOut=false.
  • Migracao (1785424960820-AddSubmissionContributionKind) faz backfill da coluna e revoga os selos concedidos incorretamente (5 perfis confirmados sem contribuicao real por tras da concessao).
  • Novo endpoint publico GET /gamification-profiles/:id/course-reviews para o perfil publico exibir avaliacoes de curso como categoria propria.
  • docs/data-model.md atualizado.

Companion do PR do frontend que ajusta a timeline do perfil publico.

Test plan

  • npm run build
  • npx tsc --noEmit
  • npx jest — 184/184 passando
  • Apos merge, rodar a migration em producao e confirmar que os 5 perfis afetados perderam o selo indevido

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

leo-nardo and others added 2 commits July 30, 2026 14:17
…rilha

O selo "Primeira Missao" (e afins) contava qualquer Submission com status
APPROVED, incluindo test-out de marco de trilha (0 XP, sem nenhuma ajuda
real). Isso concedia o selo de "contribuicao" so por pular uma prova.

- nova coluna Submission.contributionKind (COMMUNITY_ACTIVITY | TRACK_PROGRESS),
  formalizando o que antes so existia implicitamente via trackItemId nulo
- badge-evaluator so conta submissoes COMMUNITY_ACTIVITY aprovadas e
  isTestOut=false pros selos de contribuicao
- migracao revoga "Primeira Missao"/"Colaborador"/"Herói da Comunidade" dos
  5 perfis que nao tinham contribuicao real por tras da concessao
- novo endpoint publico GET /gamification-profiles/:id/course-reviews pra
  timeline do perfil mostrar avaliacoes de curso como categoria propria

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI pegou: Postgres nao faz cast implicito de texto pra enum num UPDATE ...
CASE, mesmo com os literais batendo com os valores do enum.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@leo-nardo
leo-nardo merged commit ece3a10 into main Jul 30, 2026
3 checks passed
@leo-nardo
leo-nardo deleted the fix/submission-contribution-kind branch July 30, 2026 17:24
leo-nardo added a commit that referenced this pull request Aug 18, 2026
…sso de trilha (#110)

* fix(gamificacao): separa contribuicao de comunidade de progresso de trilha

O selo "Primeira Missao" (e afins) contava qualquer Submission com status
APPROVED, incluindo test-out de marco de trilha (0 XP, sem nenhuma ajuda
real). Isso concedia o selo de "contribuicao" so por pular uma prova.

- nova coluna Submission.contributionKind (COMMUNITY_ACTIVITY | TRACK_PROGRESS),
  formalizando o que antes so existia implicitamente via trackItemId nulo
- badge-evaluator so conta submissoes COMMUNITY_ACTIVITY aprovadas e
  isTestOut=false pros selos de contribuicao
- migracao revoga "Primeira Missao"/"Colaborador"/"Herói da Comunidade" dos
  5 perfis que nao tinham contribuicao real por tras da concessao
- novo endpoint publico GET /gamification-profiles/:id/course-reviews pra
  timeline do perfil mostrar avaliacoes de curso como categoria propria

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(migration): cast explicito pro enum contributionKind no backfill

CI pegou: Postgres nao faz cast implicito de texto pra enum num UPDATE ...
CASE, mesmo com os literais batendo com os valores do enum.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant