feat(student-onboarding): tela de consentimento + gate de entrada (Onda B)#155
Open
renanfulas wants to merge 1 commit into
Open
feat(student-onboarding): tela de consentimento + gate de entrada (Onda B)#155renanfulas wants to merge 1 commit into
renanfulas wants to merge 1 commit into
Conversation
…da B) Gate unificado de waiver + PAR-Q pos-auth, atras da flag STUDENT_CONSENT_GATE_ENABLED (default OFF). Empilhado na Onda A. - gate (a) em StudentIdentityRequiredMixin.dispatch: redireciona para a tela de consentimento quando falta aceite da versao vigente; pula a propria rota (sem loop) - StudentConsentForm: waiver obrigatorio + PAR-Q em toggles Sim/Nao (default Nao), botao sempre habilitado, validacao no submit - consent_workflows: decisao clear/flagged fora de view/template; grava StudentConsent versionado (so o outcome do PAR-Q); flagged marca clearance_required no membership - funil: consent_step_viewed, parq_completed, parq_flagged, clearance_pending (waiver_accepted NAO emitido — placeholder nao-vinculante, B1) - UI mobile-first (screens/consent.css): waiver rolavel sem "role ate o fim" - consent_content: 7 perguntas canonicas do PAR-Q (dirigem os toggles) Validacao local (PG 5433): 20 passed (gate B + modelo A, --create-db --migrations); 3 dispatch-tests existentes passam (gate OFF e no-op, zero regressao). Ref: docs/plans/student-parq-waiver-entry-gate-corda.md (Onda B) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
Onda B — tela de consentimento + gate de entrada
Segunda onda do plano
docs/plans/student-parq-waiver-entry-gate-corda.md. Empilhada na Onda A (#153) — base aponta parafeat/student-consent-model. Tudo atrás da flagSTUDENT_CONSENT_GATE_ENABLED(default OFF) → zero efeito em produção até ligar.O que entra
StudentIdentityRequiredMixin.dispatch): se falta aceite da versão vigente → redireciona para a tela de consentimento; pula a própria rota (sem loop). Mesmo molde dos redirects já existentes.consent.html+StudentConsentForm) para os 3 corredores: waiver rolável + PAR-Q em toggles Sim/Não (default Não), botão sempre habilitado, validação no submit. Mobile-first (screens/consent.css, sem "role até o fim").consent_workflows.py):clear/flaggedfora de view/template; gravaStudentConsentversionado (só o outcome do PAR-Q); flagged marcaclearance_requiredno membership (a parede de bloqueio vem na Onda C).consent_step_viewed,parq_completed,parq_flagged,clearance_pending.Decisões honradas
waiver_acceptednão é emitido nem tratado como vinculante (placeholder até a Onda E). Há teste garantindo isso.dispatch; nada de check-in multi-superfície.clear/flaggedno público; as respostas do PAR-Q não são persistidas.Validação local (PG 5433)
pytest tests/test_student_consent_gate.py tests/test_student_consent_model.py --create-db --migrations→ 20 passed (inclui redirect real do gate com sessão forjada, form, workflow, e render 200 da tela).student_app→ passam (gate OFF é no-op, zero regressão).Próximo
Onda C: parede de clearance + gate (b) que efetivamente barra a entrada do flagged.
🤖 Generated with Claude Code