From 9b30fef2ad39886f98a90d48258d7b31f0d6c766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Ign=C3=A1cio=20Fontoura=20Solla?= Date: Sun, 2 Aug 2026 19:40:40 -0300 Subject: [PATCH 1/2] =?UTF-8?q?docs(plans):=20inten=C3=A7=C3=A3o=20B144=20?= =?UTF-8?q?=E2=80=94=20sidebar=20Organiza=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A lista já existe; falta só o item de navegação no staffNav. --- docs/plans/sidebar-organizacoes.md | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/plans/sidebar-organizacoes.md diff --git a/docs/plans/sidebar-organizacoes.md b/docs/plans/sidebar-organizacoes.md new file mode 100644 index 00000000..b2b55190 --- /dev/null +++ b/docs/plans/sidebar-organizacoes.md @@ -0,0 +1,74 @@ +# Sidebar — entrada para Organizações + +Status: registrado +Atualizado em: 2026-08-02 +Issue: #313 +Priority: P2 +Model: composer-2.5 +Impeccable: B — encaixe no shell da sidebar (mesmo padrão dos demais destinos staff) +Appetite: ~0,25 dia eng; um item de navegação; sem migration +Responsável: — + +## Intenção + +A lista de organizações **já existe** em `/campanha/organizacoes` (lista, detalhe, nova, ações rápidas, omnibox). Agentes e docs falavam dela como se fosse descoberta pela sidebar — e não é: `staffNav` omite o destino. Staff que não cai na busca global / FAB / link cruzado simplesmente não acha a vertical. Pedido: se a lista existe, ela precisa de item na sidebar. + +## Persona e fluxo + +- **Persona / contexto:** coordenador / assessor / candidato na mesa, navegando o shell de `/campanha` +- **Job principal:** ir à lista de organizações pelo mesmo caminho que usa para Lideranças, Demandas, etc. +- **Fluxo desejado:** abre a sidebar (desktop ou Sheet mobile) → vê **Organizações** entre os destinos de trabalho → toca → chega em `/campanha/organizacoes` +- **Anti-goals de produto:** não redesenhar a sidebar; não inventar segunda lista; não expor o destino a liderança (lockdown) + +### Esboço de fluxo (B) + +```text +[sidebar staff] → toca "Organizações" → [/campanha/organizacoes] → lista que já existe +``` + +## Objetivo e aceite + +- Item **Organizações** visível na navegação estrutural staff (sidebar desktop + Sheet mobile que consome o mesmo `getCampaignNav`) +- Href aponta para a lista existente `/campanha/organizacoes` +- Liderança **não** vê o item (mesma barreira de staff-only das outras verticais de trabalho) +- Destino ativo quando a pessoa está na lista, no detalhe ou em `/nova` (mesmo contrato `isCampaignNavActive` dos demais itens) + +## Dados (intenção) + +- **Vou apresentar dados?** Não +- **Decisões desbloqueadas:** N/A — só descoberta de uma superfície que já existe +- **Forma:** *adiada* — N/A + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** `src/components/campaign/shell/nav.ts` (`staffNav` / `getCampaignNav`); consumidores já existentes (`CampaignSidebar`, Sheet mobile) +- **Precedente a olhar:** demais entradas de `staffNav`; path canônico já em `campaignQuickActionPaths` (`ORGANIZATIONS_LIST_PATH`); nota histórica em `docs/plans/acoes-rapidas-organizacoes.md` (“fora do staffNav… rota existe”) +- **Risco de acoplamento:** leader lockdown; não puxar lógica de acesso nova além do filtro staff já usado pelo nav + +## Dependências + +- Nenhuma (a rota e o access staff já existem) + +## Fora de escopo + +- Mudanças na lista / filtros / omnibox de organizações (B139 e afins) +- Ações rápidas, FAB, busca global +- Reordenar o resto da sidebar além do encaixe deste item +- Entrada em `staffSecondaryNav` (Conceitos) — isto é destino de trabalho, não material de referência + +## Rabbit holes de produto + +- **“Já que vamos mexer na nav…”.** Se alguém “só completar”: redesign de grupos, ícones de tudo, bottom-nav. **Corte neste item:** um item, um href, mesma máquina. +- **Escopo por assessor na nav.** Access de linha já filtra a lista; a nav não precisa de predicado especial (Lideranças também não tem). + +## Questões em aberto (produto) + +- **Onde na ordem da `staffNav`?** **Opções:** A) logo após Lideranças (afinidade de domínio — orgs ↔ lideranças) | B) após Dobradinhas | C) perto do fim, antes de Apoiadores. **Recomendação:** **A** — espelha o modelo mental “pessoas e estruturas de apoio”. _(assumido — validar)_ + +## Referências + +- GitHub Issue #313 +- `src/components/campaign/shell/nav.ts` +- `src/app/(campaign)/campanha/(app)/organizacoes/` +- `src/lib/campaignQuickActionPaths.ts` (`ORGANIZATIONS_LIST_PATH`) +- `docs/plans/acoes-rapidas-organizacoes.md` (B88 — já documentava a lacuna) From 5ab510ba3000a46cbdede3fb78644630fb8de553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Ign=C3=A1cio=20Fontoura=20Solla?= Date: Sun, 2 Aug 2026 19:42:31 -0300 Subject: [PATCH 2/2] style: format B144 intention plan with Prettier --- docs/plans/sidebar-organizacoes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plans/sidebar-organizacoes.md b/docs/plans/sidebar-organizacoes.md index b2b55190..f20bc079 100644 --- a/docs/plans/sidebar-organizacoes.md +++ b/docs/plans/sidebar-organizacoes.md @@ -37,7 +37,7 @@ A lista de organizações **já existe** em `/campanha/organizacoes` (lista, det - **Vou apresentar dados?** Não - **Decisões desbloqueadas:** N/A — só descoberta de uma superfície que já existe -- **Forma:** *adiada* — N/A +- **Forma:** _adiada_ — N/A ## Direção no codebase (hipótese)