18 KiB
| name | description | scope | updatedAt |
|---|---|---|---|
| ux-fluxo-funcional | Arquitetura de Informação, Jornada Operacional Guiada, Revelação Progressiva (Progressive Disclosure) e Contraste Funcional em aplicações <modulo>-front. Transforma telas isoladas em um fluxo contínuo, autoexplicativo e sem sobrecarga cognitiva. | global | 2026-10-26 |
Skill: UX de Fluxo Funcional e Jornada Guiada (ux-fluxo-funcional)
Objetivo
Garantir que qualquer aplicação <modulo>-front do ecossistema (identificada via memorias-ia/modulo.yml) opere como um fluxo funcional contínuo e autoexplicativo, evitando que a execução sequencial de features resulte em telas isoladas, navegação oculta, excesso de informação simultânea (split-screen espremido), jargões técnicos de banco de dados ou botões invisíveis por falha de contraste no tema.
Os 7 Pilares da Usabilidade Funcional
Pilar 1 — Navegação no Menu Lateral Ordenada pela Jornada Operacional
O menu de navegação das páginas do módulo deve residir exclusivamente no componente de menu lateral de navegação (ex.: MenuLateral.vue / Sidebar), ordenado pela sequência lógica de trabalho do domínio:
- Ordem da Tarefa (Task-Order Navigation no Menu Lateral): A navegação lateral do módulo deve refletir a sequência lógica de trabalho do domínio:
1. Cadastros Base / Pré-requisitos(ex.: catálogos, recursos, equipes, parâmetros iniciais)2. Modelos / Configuração(ex.: templates, padrões reutilizáveis)3. Entidade Principal / Planejamento(ex.: registros centrais do módulo, cronogramas, estruturação)4. Execução Operacional(ex.: quadros de trabalho, filas de atendimento, operação diária)5. Monitoramento / Indicadores(ex.: dashboards executivos, relatórios consolidados)
- Proibição de Menu Duplicado no Cabeçalho Superior: O cabeçalho superior (
v-app-bar/Navbar) deve conter apenas o botão de acionamento do menu lateral, a identidade do módulo e o menu de usuário/notificações — nunca duplicar botões de navegação de páginas na barra superior.
Pilar 2 — Fluxo Guiado e Desacoplamento de Pré-requisitos (Zero Becos Sem Saída)
Quando uma tela ou ação exige registros previamente cadastrados em outra tela, a interface nunca deve exibir apenas um <v-select> vazio ou um erro genérico de validação.
- Empty States Orientadores com CTA Direto: Todo estado vazio deve explicar por que não há itens e oferecer um botão de ação imediata (
to="..."ou abertura de modal) para o passo anterior ou para a criação do primeiro registro. - Avisos de Pré-requisito com Atalho: Se um formulário requer um cadastro base ainda inexistente, exibir um
<v-alert type="info" variant="tonal">explicando o pré-requisito com um botão direto para a tela correspondente. - Continuidade Pós-Ação: Após concluir um cadastro estruturante (ex.: aplicar um modelo ou criar um registro principal), oferecer atalho claro para o próximo passo natural da jornada (ex.: "Ir para o Quadro de Execução" ou "Detalhar Etapas").
Pilar 3 — Revelação Progressiva, Orçamento de Viewport e Anti-Aperto Visual (Progressive Disclosure)
Evitar empilhar listas mestras, formulários, barras de ferramentas e múltiplas abas analíticas na mesma dobra de tela. Pelo menos 70%–75% da área da janela (1366x768) deve pertencer ao conteúdo principal.
- Proibição de Split-Screen Estreito (
4 + 8 colunas) para Conteúdo Complexo:- Nunca dividir a tela em
v-col md="4"(lista lateral fixa) +v-col md="8"(detalhe) quando o painel de detalhe possuir tabelas de múltiplas colunas, cronogramas, árvores hierárquicas ou 3+ abas. - Padrão Recomendado: Utilizar um Seletor Rápido de Contexto no Topo (
v-select/v-autocompleteem card compacto + botão de listagem/troca) e dedicar 100% da largura (12 colunas) para a área de trabalho ativa.
- Nunca dividir a tela em
- Prevenção de Colisão de Painéis Laterais (Sidebar Mutual Exclusion):
- Proibido manter abertos simultaneamente o Menu Lateral de Navegação (
256px) e uma Gaveta Inspetora de Detalhes (400px–440px) quando isso espremer a área central. - Ao abrir o Painel Inspetor (
Master-Detail) ou alternar para visões horizontais largas (Cronograma Gantt), o menu lateral esquerdo deve recolher automaticamente (auto-collapse).
- Proibido manter abertos simultaneamente o Menu Lateral de Navegação (
- Teto de 2 Faixas no Topo e Criadores Sob Demanda:
- Proibido empilhar 4 a 6 barras horizontais antes do conteúdo (Topbar + Header + Ações/KPIs + Abas/Filtros + Form Inline de Criação + Barra de Situação).
- Consolidar o cabeçalho da visão em no máximo 2 faixas horizontais e abrir formulários de criação rápida (
+ Nova Tarefa) sob demanda ao clicar no botão de ação, recolhendo-os após criar ou cancelar.
- Revelação Progressiva Intra-Painel (Inspetor em Acordeão e Zero Card Redundante):
- Gavetas e painéis de detalhe (Side Sheets / Inspectors) nunca devem exibir um "Card de Resumo" que repete os dados já visíveis no item selecionado e nos campos abaixo, nem abrir 5+ seções ao mesmo tempo.
- Manter abertas por padrão apenas as seções de Identificação/Prazo e Entrega, e usar acordeões colapsáveis com resumo no título (
Recursos (2 • R$ 1.200,00),Pré-requisitos (1/1),Responsáveis (1)) para seções secundárias1:N.
- Orçamento de Densidade por Linha (Teto de 3 Indicadores em Repouso):
- Cada linha de árvore/lista ou card Kanban em repouso deve exibir no máximo 3 indicadores além do título (ex.: Checkbox/Ícone + Prazo ou Progresso + Bloqueio/Alerta), ocultando ações secundárias (
+ Sub,Editar) até o:hover/:focus-within.
- Cada linha de árvore/lista ou card Kanban em repouso deve exibir no máximo 3 indicadores além do título (ex.: Checkbox/Ícone + Prazo ou Progresso + Bloqueio/Alerta), ocultando ações secundárias (
- Agrupamento de Ações Secundárias:
- Limitar cada cabeçalho de seção ou linha de tabela a 1 ação primária visível + até 2 ações frequentes.
- Agrupar ações secundárias ou administrativas (ex.: exportar, clonar, histórico, arquivar, excluir) em menu contextual (
v-menu) ou modal específico.
Pilar 4 — Linguagem Humana do Domínio (Zero Jargão de Banco ou Engenharia)
O usuário final é especialista no negócio (gestor, técnico, analista, operador), não em engenharia de software ou modelagem de banco de dados.
| ❌ Proibido na Interface (Jargão Técnico) | ✅ Obrigatório na Interface (Linguagem Humana) |
|---|---|
Dados extras (info), Metadados JSONB, Payload |
Campos com rótulos reais do negócio ou seção Informações Complementares |
Instanciar Template, Hidratar Entidade, Seed |
Criar a partir de Modelo, Aplicar Modelo Padrão |
CRUD de ..., Listagem de Entidades |
Nome direto da área (ex.: Equipes e Pessoas, Modelos de Trabalho) |
Siglas técnicas puras sem contexto (WBS, EVM, FK, UUID) |
Termos compreensíveis (Estrutura de Etapas, Desempenho e Prazos, Código) |
Valores brutos de enum (EM_ANDAMENTO, concluido_atraso) |
Rótulos formatados com acentuação e semântica visual (Em Andamento, Concluído com Atraso) |
Pilar 5 — Contraste Garantido em Tokens de Tema Vuetify (secondary Escuro)
No Vuetify 3 em tema claro (dark: false), componentes com variant="tonal" e variant="outlined" utilizam a própria cor do token como cor do texto e do ícone sobre um fundo translúcido (12% de opacidade) ou branco (#FFFFFF).
- Proibição de Cores Pastéis Claras no Token
secondary:- NUNCA definir
secondarynovuetify.tscom cores claras/pastéis (ex.:#EAF2D3,#EEF3D0,#F5F5F5), pois qualquer<v-btn color="secondary" variant="tonal">,<v-btn color="secondary" variant="outlined">ou<v-chip color="secondary">ficará invisível (contraste ~1.1:1 sobre branco).
- NUNCA definir
- Tokens Seguros para
secondaryem Tema Claro:- Estilo Floreta (Privado): Usar
--cor-eli-neutro-escuro(#3E4436) ou--cor-eli-primaria-escura(#4A6500) — garantindo contraste WCAG AA ≥ 7:1 em variantestonaleoutlined, e texto branco legível em varianteflat/elevated. - Estilo Betha (Governo): Usar
#495057ou#6c757descuro com contraste validado. - Reservar cores pastéis claras (
#EEF3D0) exclusivamente para variáveis CSS de fundo (--cor-eli-primaria-bg), nunca como token semântico de texto/botão do Vuetify.
- Estilo Floreta (Privado): Usar
Pilar 6 — Ergonomia de Quadros Operacionais e Navegação Cruzada
- Quadros Kanban Sempre Horizontais Lado a Lado:
- Colunas de estágios (ex.: A fazer, Em andamento, Em revisão, Concluído) devem ser exibidas lado a lado horizontalmente em desktop utilizando container flexível (
d-flex flex-nowrap overflow-x-auto ga-4 pb-2) com largura mínima por coluna (min-width: 280pxa320px). - Proibido usar
v-row/v-colque empilhe colunas demin-height: 420pxverticalmente em resoluções intermediárias, gerando enormes caixas vazias que escondem os cartões abaixo da dobra.
- Colunas de estágios (ex.: A fazer, Em andamento, Em revisão, Concluído) devem ser exibidas lado a lado horizontalmente em desktop utilizando container flexível (
- Navegação Cruzada (Drill-down Contextual):
- Cards de resumo em Dashboards e tabelas de acompanhamento devem oferecer ação direta (clique ou botão) para abrir o registro correspondente no painel de detalhamento ou no quadro operacional já filtrado pelo item selecionado (
queryouparamsde rota).
- Cards de resumo em Dashboards e tabelas de acompanhamento devem oferecer ação direta (clique ou botão) para abrir o registro correspondente no painel de detalhamento ou no quadro operacional já filtrado pelo item selecionado (
Pilar 7 — Organização de Telas, Modais (Dialogs) e Painéis Laterais (Side Sheets) — Material Design 3
Conforme as diretrizes de Layout (Panes e Canonical Layouts), Dialogs e Side Sheets do Material Design 3 (https://m3.material.io/foundations/layout/understanding-layout/panes, https://m3.material.io/components/dialogs/guidelines e https://m3.material.io/components/side-sheets/guidelines):
- Matriz de Escolha de Superfície (Quando usar cada container):
- Tela Principal / Single-Pane (
12 colunas): Fluxos primários densos (tabelas amplas, múltiplas abas, cronogramas, formulários estruturantes). - Painel Lateral Coplanar (Standard Side Sheet,
360px–420px, sem scrim): Inspeção contextual de item selecionado na lista/árvore (Supporting Pane / Master-Detail leve) ou filtros avançados ao vivo, onde o usuário precisa comparar ou alternar itens na área principal simultaneamente. Recolhe automaticamente o menu lateral esquerdo. - Painel Lateral Modal (Modal Side Sheet,
v-navigation-drawer temporary location="right",400px–560px, com scrim): Formulários secundários de média complexidade (5 a 8 campos), histórico detalhado ou fluxos auxiliares que exigem foco exclusivo sem perder o contexto espacial da página ao fundo. - Modal Básico (Basic Dialog,
v-dialog,max-width: 400px–560px): Modais são interruptivos por natureza e devem ser usados com parcimônia, exclusivamente para:- Confirmações críticas ou destrutivas que exigem decisão imediata;
- Decisões rápidas ou criação enxuta (até 3 a 4 campos simples que não dependem de leitura da tela de fundo).
- Modal de Tela Cheia (Full-Screen Dialog,
v-dialog fullscreen): Tarefas modais complexas ou multi-etapas com barra superior fixa contendoFechar (X)à esquerda, título em Sentence case e ação primária (Salvar) à direita. - Snackbar / Toast (
v-snackbar): Feedback passivo de sucesso ou aviso curto de 1 frase. Proibido abrir umv-dialogapenas para exibir"Salvo com sucesso".
- Tela Principal / Single-Pane (
- Organização de Telas e Chunking Escaneável (Make Content Scannable):
- Dividir telas e formulários longos em seções temáticas curtas (máximo de 4 a 6 campos relacionados por bloco) encabeçadas por título em Sentence case (
16px–20px, peso600, sem dois-pontos:e sem ponto final.). - Posicionar a informação mais importante no início do título/parágrafo (front-loading) e ocultar configurações raras ou detalhes técnicos sob demanda (Reveal details as needed).
- Dividir telas e formulários longos em seções temáticas curtas (máximo de 4 a 6 campos relacionados por bloco) encabeçadas por título em Sentence case (
- Anatomia e Regiões Fixas em Modais (M3 Dialog Anatomy & Pinned Regions):
- Cabeçalho e Rodapé Fixos (Pinned Header & Footer): Evitar rolagem em Basic Dialogs; quando o conteúdo precisar rolar (ex.: lista de seleção), o Cabeçalho (
v-card-title) no topo e a Barra de Ações (v-card-actions) no rodapé devem permanecer fixos e visíveis, rolando apenas o corpo central (v-card-text) com divisor sutil. - Título Específico + Consequência + Botão com Verbo: Título com pergunta direta (
"Excluir etapa?"), corpo explicando a consequência sem repetir o título, e botões alinhados à direita ([Cancelar]+[Excluir etapa]), proibindo[Sim],[Não]ou[OK].
- Cabeçalho e Rodapé Fixos (Pinned Header & Footer): Evitar rolagem em Basic Dialogs; quando o conteúdo precisar rolar (ex.: lista de seleção), o Cabeçalho (
- Anatomia de Painéis Laterais (M3 Side Sheet Anatomy):
- Header Fixo no Topo: Título conciso em Sentence case, botão explícito de fechar (
Xcomaria-label="Fechar painel") à direita e, quando houver navegação multi-nível dentro do painel, botão de voltar (←) à esquerda do título. - Corpo em Seções e Acordeões: Até 2 seções primárias abertas; seções relacionais (
1:N) em acordeões colapsáveis com resumo numérico no título. - Footer Fixo de Ações: Quando o painel exigir submissão manual, manter
[Cancelar]e[Salvar alterações]fixos no rodapé do painel com divisor superior.
- Header Fixo no Topo: Título conciso em Sentence case, botão explícito de fechar (
Protocolo Passo a Passo de Aplicação
- Ler Identidade do Módulo: Consultar
memorias-ia/modulo.ymlpara identificarmodulo-id,modulo-caminho,modulo-descricaoemodulo-tipo. - Auditar a Jornada Completa: Inspecionar
App.vue,router/index.ts,plugins/vuetify.tse as views de<modulo>-front/src/verificando os 7 Pilares acima. - Corrigir Tokens e Navegação Global:
- Ajustar
secondaryemvuetify.tscaso esteja usando cor clara sem contraste. - Concentrar a navegação principal exclusivamente no componente de menu lateral (sem duplicar links na barra de cabeçalho superior) e ordenada pela jornada operacional.
- Ajustar
- Desafogar Layouts, Organizar Modais/Painéis e Conectar Fluxos:
- Substituir split-screens apertados (
4+8) por seleção de contexto + área principal de12 colunas. - Adequar modais e painéis à Matriz de Superfícies M3 (convertendo modais longos de 6+ campos em Side Sheets ou páginas, garantindo Pinned Header/Footer e botões com verbo específico).
- Inserir links de navegação cruzada e empty states guiados entre telas dependentes.
- Garantir que quadros Kanban sejam horizontais e responsivos.
- Substituir split-screens apertados (
- Validar Visualmente com
agent-browser:- Inspecionar o fluxo ponta a ponta em modo visível (
agent-browser --session <modulo-id>_<contexto?> --headed) e salvar as evidências geradas em.evidencias/, conformerules/testes-interface-agent-browser.md.
- Inspecionar o fluxo ponta a ponta em modo visível (
Checklist Rápido de Conformidade (ux-fluxo-funcional)
- A navegação principal está concentrada exclusivamente no menu lateral (sem menu horizontal duplicado no cabeçalho superior) e ordenada na sequência lógica de uso do módulo?
- Todas as telas com pré-requisitos orientam o usuário e oferecem botão direto para a etapa anterior quando vazias?
- Telas com abas densas ou tabelas largas usam
12 colunasem vez de split-screen4+8espremido? - O cabeçalho operacional respeita o teto de 2 faixas horizontais (com criadores rápidos sob demanda) e recolhe o menu lateral automaticamente ao abrir o Inspetor de Detalhes?
- Linhas de árvore/lista exibem no máximo 3 indicadores em repouso (sem "Natal de Badges") e o Inspetor usa seções colapsáveis (Acordeão) sem card de resumo duplicado?
- A Matriz de Superfícies M3 é respeitada (Basic Dialog restrito a confirmações ou 3–4 campos com Header/Footer fixos; Side Sheet com botão fechar
Xe Footer fixo para formulários médios/inspeção;v-snackbarpara avisos passivos)? - Formulários longos estão divididos em blocos temáticos de até 4–6 campos com títulos em Sentence case (sem
:e sem.)? - Todos os rótulos técnicos de banco/código (
(info),JSONB,Instanciar, enums crus) foram substituídos por linguagem natural do domínio em Sentence case? - O token
secondarydo tema Vuetify possui contraste escuro (≥ 4.5:1) em botões e chipsvariant="tonal"evariant="outlined"? - Quadros Kanban renderizam colunas lado a lado (
overflow-x-auto) sem empilhar caixas vazias gigantes? - Existe navegação direta (drill-down) entre o Dashboard, a Visão de Detalhes e o Quadro Operacional?
Referências
- Material Design 3 — Writing Best Practices:
https://m3.material.io/foundations/writing/best-practices - Material Design 3 — Layout, Dialogs & Side Sheets:
https://m3.material.io/foundations/layout/understanding-layout/panes,https://m3.material.io/components/dialogs/guidelines,https://m3.material.io/components/side-sheets/guidelines - Rule:
rules/mensagens-usuario.md(UX Writing M3 e linguagem do domínio) - Rule:
rules/refactoring-ui-hierarquia-despoluicao.md(Hierarquia visual, pirâmide de ações, menos bordas e consolidação de tabelas — Refactoring UI) - Livro Refactoring UI (consulta online no Paiol):
https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf - Skill:
skills/ux/SKILL.md(Paleta de cores, Lucide icons e padrões Vuetify) - Skill:
skills/auditar-ux-heuristicas/SKILL.md(Heurísticas de Nielsen e estados de UI) - Skill:
skills/testar-interface-agent-browser/SKILL.md(Validação visual E2E--headed) - Rule:
rules/estilos-design-system.md(Design Systems Floreta e Betha) - Rule:
rules/identidade-modulo.md(memorias-ia/modulo.yml)