From b4ce8e45d0c0b3490c640aeea1f5cedaaa4c6733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Ign=C3=A1cio=20Fontoura=20Solla?= Date: Thu, 30 Jul 2026 04:02:30 -0300 Subject: [PATCH] docs: align B63 entry query param with B70 and record simplify deferrals. --- docs/plans/wizard-registro-sinal.md | 10 +++++++++- docs/roadmap.md | 2 +- tests/e2e/campaignHomeActions.e2e.spec.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/plans/wizard-registro-sinal.md b/docs/plans/wizard-registro-sinal.md index 51a86479..dfad3739 100644 --- a/docs/plans/wizard-registro-sinal.md +++ b/docs/plans/wizard-registro-sinal.md @@ -20,7 +20,7 @@ Responsável: — → WizardSignalBodyStep (textarea + Salvar) Query opcional (propagar entre passos): - ?entryAction=register-signal|update-votes|… + ?entry=register-signal|update-votes|… ``` Helpers em `src/lib/campaignActionRoutes.ts`: `WIZARD_SIGNAL_TYPE_QUERY_KEY`, `WIZARD_ENTRY_ACTION_QUERY_KEY`, `parseWizardEntryActionParam`, `resolveWizardSignalTypeParam`, `wizardSignalHref`. Skip: `shouldShowWizardSignalSkip` em `wizardSignalUi.ts` — oculto quando `entryAction` ausente ou `register-signal`; visível caso contrário (href → `/campanha` na v1). @@ -123,6 +123,14 @@ Componentes: - **Grid de tipos no Popover B26.** Revisitar se o select pós-B62 ainda gerar dúvida de classificação em campo. - **Copy longa revisada pela assessoria.** Revisitar no R6. +- **Fundir `wizardSignalHref` em `wizardActionHref`.** Revisitar quando B64+ compartilhar o mesmo builder de query (hoje são contratos distintos: `signalType` vs opções genéricas). + +## Já resolvido no simplify (não reabrir) + +- **B75 chrome:** `flowTitle`, `isEntryStep`, `skip` no `CampaignWizardShell` + `WizardSignalSkipTrailing` no desktop. +- **Skip DRY:** `resolveWizardSignalSkip` em `wizardSignalUi.ts` (substitui `wizardSignalSkipHref`). +- **Lookup O(1):** `municipalitySignalTypeMetaByType`; tiles com `` (prefetch) em vez de `router.push`. +- **URL `?entry=`** alinhada a B70/B77 (não `?entryAction=`). ## Referências diff --git a/docs/roadmap.md b/docs/roadmap.md index 0f1692d8..ed09d7a4 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -95,7 +95,7 @@ O discovery literatura→persona→entrevista ([relatório aprovado](research/re - **B76** ~~Corrigir coerência do wizard de ajuste de votos~~ — **entregue 2026-07-30** (`useEffect` preserva `violationEditedScenario` no jump ao cenário violado; limpa ao editar draft/atalho; unit `wizardExpectedVotesStep.unit.spec.ts`) · Depende de B61 ✓ · [plano](plans/corrigir-coerencia-wizard-ajuste-votos.md) · UX de três passos → **B77** - **B77** ~~Simplificar wizard ajuste de votos~~ — **entregue 2026-07-30** (`WizardExpectedVotesStep` reescrito: três cenários numa tela com `VoteEstimateScenarioInputs` compact + strip + atalhos no foco; validação só no confirm com `Alert` + highlight; POST batch inalterado; `?cenario=` legado redireciona para URL canônica; órfãos do ritual B61 removidos de `wizardVoteEstimate`/`campaignActionRoutes`) · Depende de B61 ✓ / B76 ✓ · soft ~~B75~~ ✓ · ~0,75–1d · Janela 1 · Impeccable B · [plano](plans/simplificar-ajuste-votos-wizard.md) - ~~**B62** Simplificar modelo de sinal~~ — **entregue 2026-07-29** (sinal = tipo + texto; migration drop `signal_source`/`triangulated`; labels mesa sem "broker" — `Rede esfriou`/`Adversário apareceu`/`Alguém pediu algo`; E11 sem dimensão triangulado: presença = confirmado, **triage 1**; forms/lista/detalhe/dossiê alinhados; e2e stale-B43 corrigido de bônus) · [plano](plans/simplificar-modelo-sinal.md) -- ~~**B63** Wizard registrar sinal (grid de tipos + Drawer info + texto + “Pular” se origem ≠ register-signal)~~ — **entregue 2026-07-30** (`WizardSignalTypeStep` + `WizardSignalBodyStep`; contrato `?signalType=` + `?entryAction=`; `municipalitySignalTypeMeta` + `wizardSignalUi`; write via `createMunicipalityListSignalFormAction`; standalone → Início + toast; sem migration) · Depende de B59 ✓ + B62 ✓ · soft B60 ✓ · ~1–1,25d · Janela 1 · Impeccable C · [plano](plans/wizard-registro-sinal.md) +- ~~**B63** Wizard registrar sinal (grid de tipos + Drawer info + texto + “Pular” se origem ≠ register-signal)~~ — **entregue 2026-07-30** (`WizardSignalTypeStep` + `WizardSignalBodyStep`; contrato `?signalType=` + `?entry=`; `municipalitySignalTypeMeta` + `wizardSignalUi`; write via `createMunicipalityListSignalFormAction`; standalone → Início + toast; sem migration) · Depende de B59 ✓ + B62 ✓ · soft B60 ✓ · ~1–1,25d · Janela 1 · Impeccable C · [plano](plans/wizard-registro-sinal.md) - **B64** Wizard mudar tendência (grid colorido ≠ atual + Drawer info + justificativa com prefill/Limpar/Salvar + “Pular” sempre) · Depende de B59 · soft B60 · soft B24 ✓ · ~1–1,25d · Janela 1 · Impeccable C · [plano](plans/wizard-mudar-tendencia.md) - ~~**B69** Simplificar modelo de liderança (`exclusive` default true; dropar setor/`consentNote`; **org fica** — ramificação política, decisão 2026-07-30)~~ ✓ (entregue 2026-07-30) · Depende de — · Janela 1 · [plano](plans/simplificar-modelo-lideranca.md) - ~~**B70** Wizard atualizar liderança (grid 2/3/4 + form curto + skip + Continuar dirty + focus)~~ — **entregue 2026-07-30** (`WizardLeadershipStep` + `WizardLeadershipForm`; `loadWizardLeadershipTiles`; `updateLeadershipWizard`/`createLeadershipWizard` com Contact+Leadership; `entryAction` em `campaignActionRoutes`; e2e smoke) · Depende de B59 + B69 ✓ · soft B60 ✓ · ~1,25–1,5d · Janela 1 · Impeccable C · [plano](plans/wizard-atualizar-lideranca.md) diff --git a/tests/e2e/campaignHomeActions.e2e.spec.ts b/tests/e2e/campaignHomeActions.e2e.spec.ts index 6398dc4e..27651b02 100644 --- a/tests/e2e/campaignHomeActions.e2e.spec.ts +++ b/tests/e2e/campaignHomeActions.e2e.spec.ts @@ -346,7 +346,7 @@ test.describe('Wizard — registrar sinal (B63)', () => { }) await campaign.login(page, coordinator.email!, coordinator.password) - await page.goto('/campanha/acoes/registrar-sinal?municipio=cairu&entryAction=update-votes') + await page.goto('/campanha/acoes/registrar-sinal?municipio=cairu&entry=update-votes') await expect(page.getByRole('link', { name: 'Pular registro de sinal' })).toBeVisible({ timeout: 15000,