mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 06:43:06 +00:00
Merge pull request #256 from fsolla/cursor/e50f0b6b
B124 — Sidebar Municípios: filtros salvos colados (plano)
This commit is contained in:
commit
540db69d4f
2 changed files with 170 additions and 0 deletions
|
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
target: MunicipalityNavSavedFilters sidebar
|
||||
total_score: 27
|
||||
p0_count: 1
|
||||
p1_count: 2
|
||||
timestamp: 2026-08-02T18-07-00Z
|
||||
slug: nts-campaign-shell-municipalitynavsavedfilters-tsx
|
||||
---
|
||||
|
||||
Method: dual-agent (A: dc65e367-57b3-4fa5-947b-a43efdce8fba · B: cb10af92-e254-4c0e-9a39-b100b4226b65)
|
||||
|
||||
# Critique — MunicipalityNavSavedFilters (sidebar Municípios)
|
||||
|
||||
## Design Health Score
|
||||
|
||||
| # | Heuristic | Score | Key Issue |
|
||||
| --------- | ------------------------------- | --------- | ---------------------------------------------------------------- |
|
||||
| 1 | Visibility of System Status | 3 | Active/expanded OK; context (route/hover) not driving disclosure |
|
||||
| 2 | Match System / Real World | 3 | Clear aria; sighted UI lacks “filtros salvos” framing |
|
||||
| 3 | User Control and Freedom | 4 | Toggle, persist, undo delete |
|
||||
| 4 | Consistency and Standards | 3 | Familiar shadcn tree; only campaign submenu |
|
||||
| 5 | Error Prevention | 2 | Instant delete (undo mitigates); dense targets |
|
||||
| 6 | Recognition Rather Than Recall | 2 | Collapsed bookmarks vanish to a small chevron |
|
||||
| 7 | Flexibility and Efficiency | 3 | Strong when open; no contextual auto-open |
|
||||
| 8 | Aesthetic and Minimalist Design | 2 | Open list pollutes primary nav; default-open worsens |
|
||||
| 9 | Error Recovery | 4 | Undo toast + Desfazer |
|
||||
| 10 | Help and Documentation | 1 | No in-nav teach after first save |
|
||||
| **Total** | | **27/40** | **Acceptable — significant intent mismatch** |
|
||||
|
||||
## Anti-Patterns Verdict
|
||||
|
||||
**LLM assessment**: Not AI slop. Failure is disclosure policy + open-list weight reading as a second nav section.
|
||||
|
||||
**Deterministic scan**: 0 findings on MunicipalityNavSavedFilters.tsx + CampaignSidebar.tsx (exit 0).
|
||||
|
||||
**Visual overlays**: No reliable overlay — browser visualization skipped (no local /campanha with login).
|
||||
|
||||
## Overall Impression
|
||||
|
||||
Craft and a11y of B18 are strong; the open, persisted submenu breaks proximity to Municípios and clarity under pressure. Biggest opportunity: contextual expand (route + hover-when-panel-visible) instead of durable open preference.
|
||||
|
||||
## What's Working
|
||||
|
||||
1. Correct IA ownership under Municípios
|
||||
2. Delete + Desfazer + focus handoff
|
||||
3. Kit reuse with deliberate touch vs fine-pointer trash visibility
|
||||
|
||||
## Priority Issues
|
||||
|
||||
### P0 — Disclosure model contradicts product intention
|
||||
|
||||
Persisted preference, default open; no hover; no open-on-Municípios-page. Fix: ephemeral/context open.
|
||||
|
||||
### P1 — Open list reads as its own nav section
|
||||
|
||||
Tree rail + N×h-7 between Municípios and Territórios. Fix: contextual collapse + tighter/muted sub chrome.
|
||||
|
||||
### P1 — Hover vs offcanvas history
|
||||
|
||||
B18 rejected hover for collapsed rail; intention works when panel is visible. Fix: hover/focus-within only while sidebar expanded/open.
|
||||
|
||||
### P2 — Sighted association is chevron-only
|
||||
|
||||
No visible “Filtros salvos” framing.
|
||||
|
||||
### P3 — Discoverability after deliberate collapse
|
||||
|
||||
Mostly solved by contextual open.
|
||||
|
||||
## Persona Red Flags
|
||||
|
||||
- Alex: open list helps in Municípios, taxes full-nav scan elsewhere
|
||||
- Sam: long tab path when open; hover-open must sync aria-expanded
|
||||
- Coordenador em mesa: expanded on Quadro/Atividades = noise; collapsed on Municípios = missing shortcuts
|
||||
|
||||
## Minor Observations
|
||||
|
||||
Default-open philosophy opposite of new brief; logout clears storage; Feel-the-action pending on sidebar nav is minor.
|
||||
|
||||
## Questions to Consider
|
||||
|
||||
1. Drop persisted open entirely?
|
||||
2. Chips under Municípios when active/hovered vs tree?
|
||||
3. Cap visible sidebar cuts at ≤4 + overflow?
|
||||
4. Scope hover to panel-visible only?
|
||||
|
||||
Cognitive load: 6/8 checklist failures (high).
|
||||
83
docs/plans/sidebar-filtros-salvos-proximidade.md
Normal file
83
docs/plans/sidebar-filtros-salvos-proximidade.md
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# B124 — Sidebar Municípios: filtros salvos colados (sem disclosure)
|
||||
|
||||
Status: registrado
|
||||
Atualizado em: 2026-08-02
|
||||
Issue: #253
|
||||
Priority: P2
|
||||
Model: composer-2.5
|
||||
Impeccable: B — encaixe em `CampaignSidebar` / `MunicipalityNavSavedFilters` (hierarquia visual + proximidade; sem rota nova)
|
||||
Appetite: ~0,5 dia eng; um outcome verificável (atalhos leem como filhos de Municípios, não como seção própria)
|
||||
Responsável: —
|
||||
|
||||
## Intenção
|
||||
|
||||
Os atalhos de filtro salvo sob **Municípios** no sidebar de `/campanha` hoje parecem um bloco afastado — hierarquia fraca e distância vertical grande. Quem está na mesa só enxerga o que está na tela: os recortes precisam aparecer **sempre** (quando existem), **logo abaixo** de Municípios, com indentação clara de filho — sem chevron, sem abrir/fechar, sem hover.
|
||||
|
||||
## Persona e fluxo
|
||||
|
||||
- **Persona / contexto:** coordenador/assessor na mesa; scan da sidebar sob pressão
|
||||
- **Job principal:** ver e clicar um recorte salvo como continuação natural de Municípios
|
||||
- **Fluxo desejado:**
|
||||
1. Há filtros salvos → lista aparece sempre, imediatamente sob Municípios
|
||||
2. Indentação horizontal marca “isto é filho de Municípios”
|
||||
3. Gap vertical mínimo entre Municípios e o primeiro atalho (hoje está longe demais)
|
||||
4. Sem filtros → nada extra (só o item Municípios)
|
||||
- **Anti-goals de produto:** disclosure/collapse/hover; redesign do shell; filtros salvos em outras listas; sync multi-device
|
||||
|
||||
### Esboço de fluxo (B)
|
||||
|
||||
```text
|
||||
[Municípios]
|
||||
[filtro A] ← sempre visível se existir; indentado; colado
|
||||
[filtro B]
|
||||
[Territórios]
|
||||
```
|
||||
|
||||
## Objetivo e aceite
|
||||
|
||||
- Com filtros salvos, os links ficam **sempre visíveis** (sem toggle, sem estado open/closed, sem persistência de disclosure)
|
||||
- Visualmente são **filhos** de Municípios: um pouco mais para dentro na horizontal
|
||||
- Ficam **logo abaixo** do item Municípios (proximidade vertical — deixam de ler como seção própria)
|
||||
- Apagar + Desfazer e o restante do bookmark (B18) continuam intactos
|
||||
- Teclado/leitor: lista nomeada; item ativo com `aria-current`; sem controles de expand órfãos
|
||||
|
||||
## Dados (intenção)
|
||||
|
||||
- **Vou apresentar dados?** Não
|
||||
- **Decisões desbloqueadas:** N/A — navegação, não métrica
|
||||
- **Forma:** _adiada ao plano de implementação_
|
||||
|
||||
## Direção no codebase (hipótese)
|
||||
|
||||
- **Áreas prováveis:** `MunicipalityNavSavedFilters.tsx` (remover disclosure), `CampaignSidebar.tsx`, storage de open em `municipalitySavedFilters.ts` (chave/API de open provavelmente vira morta), e2e `campaignSavedFilters.e2e.spec.ts`
|
||||
- **Precedente a olhar:** `docs/plans/filtros-salvos-municipios.md` (B18) — este item **desfaz** a decisão de chevron + open persistido
|
||||
- **Risco de acoplamento:** sidebar no layout `(app)` — não puxar serializador de URL de município; manter `listQueryMatch` puro
|
||||
|
||||
## Dependências
|
||||
|
||||
- Nenhuma (B18 já entregue)
|
||||
|
||||
## Fora de escopo
|
||||
|
||||
- Salvar filtros em outras listas
|
||||
- Preferências de nav no servidor
|
||||
- Redesign amplo do sidebar (só proximidade + indentação deste submenu)
|
||||
- Mudar teto de 12 ou ordem alfabética
|
||||
- Collapse / hover / open contextual
|
||||
|
||||
## Rabbit holes de produto
|
||||
|
||||
- **Reintroduzir disclosure “só um pouquinho”.** Compete com “o que está na tela”. **Corte:** zero open/close neste item.
|
||||
- **Lista longa (até 12) empurrando o resto da nav.** Aceito neste appetite: bookmarks são atalho de mesa. **Corte:** não inventar “mostrar só 4 + mais” sem evidência nova.
|
||||
|
||||
## Questões em aberto (produto)
|
||||
|
||||
- Nenhuma — gate 2026-08-02: **sem** rótulo “Filtros salvos” (ou semelhante); **sem** chevron; lista sempre visível com indentação + proximidade vertical.
|
||||
|
||||
## Referências
|
||||
|
||||
- GitHub Issue #253
|
||||
- Critique Impeccable 2026-08-02 — pivô de produto: drop collapse; always-on + proximity
|
||||
- `docs/plans/filtros-salvos-municipios.md` (B18)
|
||||
- `src/components/campaign/shell/MunicipalityNavSavedFilters.tsx`
|
||||
- `src/components/campaign/shell/CampaignSidebar.tsx`
|
||||
Loading…
Reference in a new issue