# Menus de Compras — primeira aplicação do benchmark 29/10/2026. Pedido do proprietário: renovar os menus antes de retomar o trabalho funcional pendente. Referência fornecida: `referencias/benchmark-menus-20261029.txt`. Este incremento aplica a organização da navegação; não declara implementado todo o benchmark. ## Entregue A aplicação autenticada usa agora um menu lateral por tarefas e uma barra superior com pesquisa do menu, atalho de nova requisição e conta. As secções podem ser expandidas, a área actual abre automaticamente e a ligação corrente fica destacada. Pesquisa sem distinção de acentos/maiúsculas, limpeza e mensagem de ausência de resultados. Não é uma pesquisa global de documentos. | Secção | Percursos existentes reunidos | | --- | --- | | Painel inicial | Visão geral e indicadores existentes | | Requisições | Nova, minhas, meus rascunhos, todas as autorizadas e planeamento | | Aprovações | Próxima decisão elegível para o utilizador e histórico das suas decisões de requisições | | Consultas e adjudicações | Cotações/comparação, adjudicações/ordens e revisão/cancelamento existente | | Fornecedores | Cadastro e documentos | | Recepções e armazém | Recepções/divergências, artigos/stock, saídas/inventários, equipamentos/peças | | Finanças | Facturas, obrigações autorizadas, pagamentos externos, orçamentos/reforços e investimento | | Administração e controlo | Empresa/equipa/centros, políticas de admissão/recomendação e conflitos | O layout real é `SgcShell`, usado por `AppLayout`; o componente antigo `AppSidebar` não é a navegação activa. A renovação foi feita no layout efectivamente utilizado. As consultas públicas mantêm o seu layout próprio e as ligações anteriores. O núcleo comum de obrigações continua com o seu ecrã próprio e regresso às facturas; a sua ligação usa carregamento completo para não receber uma página HTML como modal Inertia. ## Listas ligadas ao servidor `/requisicoes?view=mine` limita ao autor da sessão. `view=approvals` reutiliza `canDecide`, incluindo empresa, departamento, próxima etapa, autor distinto, decisões anteriores e conflitos. `view=decided` filtra decisões efectivamente registadas pelo utilizador. Todos os conjuntos partem da consulta autorizada existente. Filtros de estado/referência e paginação mantêm o conjunto escolhido. `status=draft&view=mine` abre os rascunhos pessoais; não altera as regras actuais para guardar rascunhos. Menu filtrado pelos perfis existentes; obrigações só aparece quando o servidor confirma consulta. Não foram criadas contas ou concessões, alterados limites, regras fiscais, processos de aprovação ou dados de negócio. Não há migração nova neste incremento. ## Verificação - 44 testes aprovados, 539 asserções: requisições, vistas pessoais, elegibilidade, isolamento entre empresas, decisões, entrada pública e demonstrações. - Build, TypeScript, lint do âmbito, Pint e PHPStan do controlador aprovados; `git diff --check` sem erros. - Navegador local: inspecção visual a 1280 × 900 e 390 × 844; menu, expansão, pesquisa «obrigacoes» sem acentos, ausência/limpeza de resultados, destaque único da ligação visível, vistas de rascunhos/aprovações e navegação para obrigações/regresso às facturas. Sem deslocamento horizontal nos modos verificados. Dimensão temporária reposta no final. - Drawer móvel com foco contido e botão de fecho; ligações fecham o drawer. Sem operações de negócio durante a prova visual. - Capturas em `proofs/screenshots/menu-desktop.png` e `menu-mobile.png`. Esta é verificação técnica visual, não aceitação atribuída ao proprietário. ## Trabalho preservado para continuação ### Conferência das ligações após renovação `scripts/menu-links-check.mjs` verifica a própria definição do menu contra a instalação local: **94 entradas somadas nos seis perfis**, páginas de conta/aparência, recusas no servidor para empresa/finanças sem direito, vistas pessoais, ordenação dos parâmetros e opção activa. No processo de exemplo, conferidas 12 ligações internas, incluindo requisição, orçamento, cotações, adjudicação, ordem, recepção, facturas, pagamentos, relatório, admissão e recomendação. Factura → obrigação → facturas e igualdade do histórico antes/depois também aprovadas. Evidência em `proofs/menu-links.json`; sem comandos de negócio. Encontrados e corrigidos dois destaques de navegação: `/requisicoes/{id}/relatorio` pertence a cotações/comparação e `/requisicoes/{id}/adjudicacao` pertence a adjudicações/ordens. Antes abriam a página correcta, mas o menu destacava requisições. Os casos têm agora asserções de regressão na conferência. Build actualizado aprovado. Esta conferência é HTTP e de correspondência das rotas do menu. A nova inspecção visual não pôde ser repetida porque o controlo do navegador devolveu `browser.user is unavailable`, incluindo ao recuperar o separador existente; não se apresenta a prova visual do incremento anterior como nova verificação. As capturas anteriores permanecem referências da entrega inicial. Retomar o transporte do histórico de pagamentos na integração factura → obrigação, preservando principal, confirmações/pendências e responsabilidade única pelo saldo. A aplicação do esquema e a activação local anteriores ficam preservadas. O formulário proposto no benchmark continua a ser evolução funcional própria: guardar dados incompletos, revisão antes de submeter, aviso de alterações não guardadas, anexos e campos/validações adicionais. Contratos/acordos, catálogo unificado, multimoeda, pesquisa global e novos relatórios ainda exigem implementação. Os menus desta entrega conduzem a capacidades existentes; não representam essas capacidades futuras como concluídas.