Skip to content

discussão: reintroduzir ganho de XP por contribuições no GitHub (PR, issue, commit, review, comentário) #556

Description

@hefeus

O que construir

  • Reintroduzir a concessão de XP (Character.experience) para contribuições do ecossistema GitHub — hoje IncrementExperience só cobre mensagem de texto e voz no Discord
  • Definir pesos de XP por ActivityType do GitHub (PrOpened, PrMerged, Review, ReviewComment, Comment, Commit, Issue)
  • Criar um consumidor (listener/Action) do evento InteractionTracked (ou de GithubContributionRecorded/Changed diretamente) que resolva o Character a partir do external_identity_id/user_id da Interaction e credite o XP correspondente

Critérios de aceite

  • Cada ActivityType do GitHub tem um valor de XP definido e documentado
  • Ao registrar uma Interaction de tipo elegível, o Character vinculado ao usuário recebe o XP correspondente
  • Reprocessar o mesmo evento de contribuição (ex: reentrega de webhook) não credita XP duas vezes
  • Contribuições sem Character/identidade vinculada não geram erro, apenas não creditam XP

Funcionalidade: Ganho de XP por contribuições no GitHub

# language: pt

  Cenário: Usuário ganha XP ao abrir um Pull Request
    Dado que um usuário possui um Character vinculado à sua identidade externa do GitHub
    E o tipo de contribuição "pr_opened" concede um valor de XP definido
    Quando uma Interaction do tipo "pr_opened" é registrada para esse usuário
    Então o Character do usuário deve receber o XP correspondente ao tipo "pr_opened"

  Cenário: Usuário ganha XP ao comentar em uma issue ou PR
    Dado que um usuário possui um Character vinculado à sua identidade externa do GitHub
    E o tipo de contribuição "comment" concede um valor de XP definido
    Quando uma Interaction do tipo "comment" é registrada para esse usuário
    Então o Character do usuário deve receber o XP correspondente ao tipo "comment"

  Cenário: Usuário ganha XP ao aprovar um Pull Request (review)
    Dado que um usuário possui um Character vinculado à sua identidade externa do GitHub
    E o tipo de contribuição "review" concede um valor de XP definido
    Quando uma Interaction do tipo "review" é registrada para esse usuário
    Então o Character do usuário deve receber o XP correspondente ao tipo "review"

  Cenário: Contribuição não deve gerar XP duplicado
    Dado que uma Interaction já teve XP creditado ao Character correspondente
    Quando o mesmo evento de contribuição é reprocessado
    Então nenhum XP adicional deve ser creditado ao Character

  Cenário: Contribuição sem Character vinculado não credita XP
    Dado que uma Interaction é registrada para uma identidade externa sem Character vinculado
    Quando o consumidor de XP processa essa Interaction
    Então nenhum XP deve ser creditado
    E nenhum erro deve ser lançado

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions