4.7 KiB
Compras → consulta de Stock na composição QA — 03/11/2026
SGF-STOCK-COMPOSED-SOURCE-QA-v1 liga a consulta de Stock ao livro físico da demonstração integrada de Compras. Uma recepção confirmada pelo workflow original passa a ser observada no Stock do mesmo host, sem copiar movimentos, saldos ou criar outro escritor.
Entrega
O adaptador CompositionStockRead reutiliza InventoryReader e InventoryReadSession. O controlador antigo mantém o percurso anterior quando a nova opção, desactivada por omissão, não está ligada. A interface React de Stock, os menus e a navegação aceite permanecem inalterados.
O novo perfil de armazém QA recebe apenas o direito existente stock.view, na sua empresa/unidade. A concessão foi apresentada antes de ser aplicada à fixture. Uma conta técnica distinta possui SELECT apenas sobre artigos, armazéns e movimentos; não recebe acesso a recepções, auditoria ou obrigações. Nenhum direito real foi alterado.
O adaptador verifica ambiente, bases, utilizadores técnicos, cluster físico, perfil privado e correspondência pessoa/empresa/unidade/armazéns. Mantém bloqueios partilhados sobre a autoridade do host durante a leitura; contenção tem limites SQL de dois segundos para bloqueios e três para instruções. A consulta física usa uma transacção própria REPEATABLE READ/READ ONLY, sem adquirir o mutex de escrita nativo.
Os tokens de consulta incluem pessoa, contexto de sessão, filtros, origem física e mapeamento. Mudanças exigem actualização. O livro físico tem um trigger append-only criado exclusivamente nas duas bases QA novas, para tornar efectiva a premissa usada pela revisão count/max do leitor. Catálogo e armazéns continuam a ter impressões próprias. Não se instalou este trigger no destino nem nas demonstrações anteriores.
Provas
Prova consolidada: 41 verificações novas, 31 da integração HTTP/SQL e dez da demonstração/guardas. Duas guardas chamam directamente o adaptador; não são provas de middleware.
A preparação mínima percorreu requisição/propostas/adjudicação/ordem pelos workflows efectivos. A fronteira alterada confirmou uma recepção de 1 UN, recuperou a mesma confirmação sem duplicação e observou o mesmo ID de movimento e quantidade exacta 1000 no Stock. Não criou factura, obrigação ou pagamento.
Foram verificados páginas de 25/100, catálogo além de 100, pesquisa literal, projecção sem fotografia financeira, isolamento de módulo/unidade/armazém, revogação de permissão, contexto antigo, revisão após novo movimento, conta SQL sem escrita/acesso financeiro, falha de autenticação da origem e recuperação. A leitura terminou mesmo com o mutex de escrita nativo retido. Uma retenção do direito no host devolveu 503 limitado e recuperou após libertação.
A primeira tentativa parou numa asserção demasiado restrita de recusa: o contexto Compras devolveu 409 antes da conferência de Stock, em vez de 403. A preparação já concluída foi recuperada sem emitir outra ordem. O resultado final contém as 31 verificações aprovadas. Não se repetiram suites anteriores nem se somaram as suas contagens.
Demonstração
Nova composição isolada em 8083, inicialmente sem requisições principais, recepções ou movimentos. Entrada: http://127.0.0.1:8083/qa/enter/validator?module=stock&open=1; no menu Stock, abrir Existências. O mesmo perfil pode entrar explicitamente em Compras para recepcionar e regressar ao Stock. A consulta não troca de módulo automaticamente.
As provas HTTP confirmaram a página inicial, o bundle servido, a sessão e a origem vazia autorizada. As consultas preservaram artigos/armazéns/movimentos/auditoria/concessões. A base de regressão contém o percurso de prova; a demonstração permanece vazia para a equipa trabalhar.
Limites
O catálogo é do tenant de origem; armazéns e movimentos são apenas dos armazéns mapeados. Não foram acrescentadas reservas, bloqueios, disponibilidade calculada, valorização, custos, ligações de oficina ou efeitos financeiros. A evidência documental completa continua no percurso autorizado de Compras.
Revisão visual, acessibilidade, carga sustentada, compatibilidade de instalação e capacidade de implantação continuam pendentes. O bundle servido não constitui prova visual. As guardas mantêm esta composição exclusivamente sintética; não há ligação operacional instalada.
Preservados os seis registos sem associação, a cache bloqueada, provas, checkpoints, demonstrações anteriores e trabalho alheio. Sem publicação, activação de Compras, migração no destino, concessão real, aceitação ou checkpoint presumido.