Skip to content

feat(onboarding): conclusão do git_challenge libera o gate APTO (#352) - #488

Open
sirelves wants to merge 1 commit into
feat/squadsfrom
story/352-git-challenge-apto
Open

feat(onboarding): conclusão do git_challenge libera o gate APTO (#352)#488
sirelves wants to merge 1 commit into
feat/squadsfrom
story/352-git-challenge-apto

Conversation

@sirelves

Copy link
Copy Markdown
Contributor

Contexto

O step git_challenge já estava declarado no SquadsOnboardingFlow desde a #348, e o gate de GitHub vinculado entrou na #350. Só que ninguém conseguia concluir esse step: o stepDto() só conhecia o form e caía no default => throw, então qualquer tentativa de avançar pelo AdvanceStep morria com InvalidArgumentException: Step não suportado: git_challenge.

Este PR fecha essa ponta. Com o DTO no lugar, concluir o desafio marca o step como done, o isComplete() passa a ser verdadeiro, o onboarding Squads vira completed e o gate isCompleted($user, Squads) começa a devolver true, que é o que o domínio chama de APTO.

Vale dizer o que este PR não faz: a ligação automática com a aprovação do PR no GitHub é a #353. Aqui a conclusão acontece por avanço manual, via action interna.

Sobre o payload: o GitChallengeDTO aceita data opcional. O git_challenge não tem formulário pra preencher, quem conclui é um humano dizendo que aprovou, então exigir payload obrigatório travaria justamente o avanço manual que a issue pede. Quando a #353 trouxer o evento GithubPullRequestApproved, ela aperta esse contrato com os campos reais do PR.

Um detalhe pra quem for revisar: o critério de aceite da issue fala em isCompleted(user, tenant, Squads), mas o gate entregue na #349 é isCompleted(User, OnboardingType) e a tabela onboardings não tem tenant_id. Segui o código, não o texto.

Alterações

  • src/DTOs/GitChallengeDTO.php: novo DTO do payload do desafio, seguindo a mesma forma do WelcomeFormDTO, com data opcional
  • src/Flows/SquadsOnboardingFlow.php: registra o DTO no match do stepDto()
  • tests/Feature/SquadsOnboardingFlowTest.php: dois cenários novos, concluindo pelo AdvanceStep

Plano de Testes

  • Executar make check (rector, pint e phpstan sem erro)
  • Executar make test (959 testes, 3043 asserções, tudo verde)
  • Concluir o git_challenge pelo AdvanceStep e conferir step done + completed_at preenchido
  • Conferir que o onboarding Squads vai pra completed e o gate passa a devolver APTO
  • Conferir que só o form concluído não torna ninguém APTO

Issues Relacionadas

Closes #352
Related to #341
Related to #353

@sirelves
sirelves requested a review from a team August 15, 2026 12:07
@PJJunio

PJJunio commented Aug 15, 2026

Copy link
Copy Markdown

So dá uma olhada no que está impossibilitando o merge e ta pronto.

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.

2 participants