9.8 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-18 |
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 6 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 menu lateral (MenuLateral.vue), ordenado pela sequência lógica de trabalho do domínio:
- Ordem da Tarefa (Task-Order Navigation no
MenuLateral.vue): 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 (
CabecalhoPrincipal.vue): Ov-app-barsuperior 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 e Anti-Aperto Visual (Progressive Disclosure)
Evitar empilhar listas mestras, formulários e múltiplas abas analíticas na mesma dobra de tela.
- 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
- 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 (
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 6 Pilares acima. - Corrigir Tokens e Navegação Global:
- Ajustar
secondaryemvuetify.tscaso esteja usando cor clara sem contraste. - Concentrar a navegação principal exclusivamente em
MenuLateral.vue(sem duplicar links naCabecalhoPrincipal.vue) e ordenada pela jornada operacional.
- Ajustar
- Desafogar Layouts e Conectar Fluxos:
- Substituir split-screens apertados (
4+8) por seleção de contexto + área principal de12 colunas. - 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) 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
MenuLateral.vue(sem menu horizontal duplicado no cabeçalho) 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? - Todos os rótulos técnicos de banco/código (
(info),JSONB,Instanciar, enums crus) foram substituídos por linguagem natural do domínio? - 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
- 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)