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
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
O que construir
Character.experience) para contribuições do ecossistema GitHub — hojeIncrementExperiencesó cobre mensagem de texto e voz no DiscordActivityTypedo GitHub (PrOpened,PrMerged,Review,ReviewComment,Comment,Commit,Issue)InteractionTracked(ou deGithubContributionRecorded/Changeddiretamente) que resolva oCharactera partir doexternal_identity_id/user_iddaInteractione credite o XP correspondenteCritérios de aceite
ActivityTypedo GitHub tem um valor de XP definido e documentadoInteractionde tipo elegível, oCharactervinculado ao usuário recebe o XP correspondenteCharacter/identidade vinculada não geram erro, apenas não creditam XPFuncionalidade: Ganho de XP por contribuições no GitHub