feat(onboarding): cadeia de pré-requisito Welcome => Squads (#351) - #475
Open
cristopherpds wants to merge 1 commit into
Open
feat(onboarding): cadeia de pré-requisito Welcome => Squads (#351)#475cristopherpds wants to merge 1 commit into
cristopherpds wants to merge 1 commit into
Conversation
SquadsOnboardingFlow::prerequisites() passa a declarar [Welcome] e StartOnboarding valida os pré-requisitos via OnboardingCompletionGate antes de qualquer escrita, lançando PrerequisiteNotMetException com o tipo bloqueado e o pré-requisito faltante como motivo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto
O onboarding
Squads(APTO) não pode ser iniciado por quem ainda não concluiu o onboardingWelcome— essa é a cadeia de pré-requisito inter-tipo prevista no PRD (#341). Até então,SquadsOnboardingFlow::prerequisites()retornava[](com umTO-DO: #351) e oStartOnboardingnão validava nada, permitindo iniciar o Squads sem o Welcome concluído.Este PR implementa a cadeia: o flow do Squads declara
[Welcome]como pré-requisito e oStartOnboardingvalida cada pré-requisito através do gate públicoOnboardingCompletionGate::isCompleted()(#349) antes de qualquer escrita. Quando o pré-requisito não estácompleted, o início é bloqueado com umaPrerequisiteNotMetExceptionque carrega o tipo bloqueado e o pré-requisito faltante como motivo — nenhum onboarding órfão é persistido.Alterações
src/Flows/SquadsOnboardingFlow.php—prerequisites()passa a retornar[OnboardingType::Welcome].src/Actions/StartOnboarding.php— recebe oOnboardingCompletionGatepor injeção e valida os pré-requisitos do flow antes da transação; classe agora éfinal readonly.src/Exceptions/PrerequisiteNotMetException.php— nova exception comtypeeprerequisitepúblicos (o motivo do bloqueio), no mesmo estilo daGateBlockedException.database/factories/OnboardingFactory.php— novo statecompleted()para os testes.tests/Feature/OnboardingPrerequisiteChainTest.php— novo teste cobrindo os cenários BDD da issue: Squads sem Welcome é bloqueado com o motivo (inclusive com Welcome apenasin_progress), Welcome concluído destrava o Squads, e Welcome segue sem pré-requisitos.tests/Feature/SquadsOnboardingFlowTest.php— atualizado:prerequisites()agora esperado como[Welcome]e os testes que iniciam Squads concluem o Welcome antes.Critérios de aceite
prerequisites()do Squads =[Welcome]Plano de Testes
make check(Rector, Pint e PHPStan passando)make test— módulo onboarding: 35/35 testes passandoMergeDuplicateDiscordProfilesTest(módulointegration-discord) e pré-existentes: reproduzem de forma idêntica na basefeat/squads(8ab4cce0) sem este commit. Este PR toca apenasapp-modules/onboarding, sem código compartilhado com esse testeIssues Relacionadas
Closes #351
Related to #341