Files
SGF/docs/SGF_STOCK_OPERATIONS_DELIVERY.md
2026-11-11 09:00:17 +02:00

6.1 KiB

Stock: saídas e transferências pelo mesmo livro físico

Actualização de10/11/2026: código instalado na8085, ainda desligado e sem novos acessos concedidos. A continuação acrescentou contagem física sem lotes, aplicação da diferença e selector de equipamento.38 verificações PG e15 de interface, mais seis leituras/guardas HTTP dirigidas na8085. Ver docs/proofs/sgf-six-module-composition-20261110.json. Não fecha o conjunto dos seis módulos. Os30/11 casos abaixo descrevem a primeira versão e não são somados novamente.

Percurso implementado

/stock/operations permite escolher explicitamente artigo, armazém e responsável, pesquisar os catálogos por páginas25/100, indicar quantidade exacta, referência, destino e fundamento. Não selecciona o primeiro resultado. Mostra o impacto antes da confirmação individual. Disponibiliza histórico paginado e recuperação pelo mesmo recibo após resposta incerta.

O adaptador chama o StockOperationController/StockWorkflow original, fixado pelo manifesto da composição. A saída usa o mesmo IssueMovementWriter já aceite; foi acrescentada a distribuição0.1.0 exigida pelo adaptador, byte a byte igual à distribuição original e ao writer já existente neste repositório. Não há motor de saldos novo.

Uma transferência é imediata e atómica: dois movimentos opostos na mesma transacção. Não representa expedição em trânsito com recepção posterior. A quantidade e unidade mantêm-se; não cria valorização ou lançamento contabilístico.

A prévia executa o writer num savepoint e reverte operações, movimentos, auditoria e dependências. Sequências PostgreSQL podem avançar. A confirmação revalida contexto/pessoa/direito/mapeamento, saldo e versão; executa novamente as políticas nativas e compara o impacto. Uma alteração de dependências recusa e reverte o comando. O recibo sgf.stock.command, o estado anterior, o impacto, o fundamento e os efeitos físicos são gravados na mesma transacção nativa. Repetição revalida autoridade e recupera o mesmo identificador.

O runtime mantém as guardas físicas QA existentes. Armazém de origem e destino têm de constar do mapa explícito da pessoa/empresa/unidade. Um mapa adicional de Stock, quando necessário, exige SHA configurado e caminho fixo privado; não altera o binding de Compras. Bloqueios têm limite5s e resposta503 recuperável; comandos longos têm limite15s. Nenhuma destas capacidades fica activa por omissão.

Direitos propostos — ainda não concedidos na8085

Direito Âmbito Capacidade
stock.view existente Empresa/unidade e armazéns explicitamente ligados Consultar os catálogos, saldo e histórico autorizados
stock.operations.prepare novo Empresa/unidade e mesmos armazéns Preparar a conferência de saída/transferência
stock.operations.confirm novo Empresa/unidade e mesmos armazéns Confirmar individualmente e recuperar o próprio recibo

Os novos direitos não estão no catálogo público nem atribuídos a contas reais. A função nativa de Armazém, operador actual e bloqueio de manutenção continuam obrigatórios. O ensaio introduziu estes nomes apenas dentro de uma transacção revertida no host de regressão. Nenhuma concessão ficou persistida. Antes de activar/atribuir acessos na8085 é necessária decisão explícita sobre estes direitos e os perfis/armazéns de destino; a implementação não escolhe utilizadores por omissão. A proposta agrupada está em docs/SGF_8085_NEXT_AUTHORIZATION.md.

Provas dirigidas

-30 verificações PostgreSQL/controller/middleware, reutilizando receipt-composition-b4093c6f6707, sem outra base, porta ou demonstração. Incluem isolamento de artigo/armazém, módulo errado, injecção de contexto, paginação/pesquisa literal, prévia sem efeitos, saída única, transferência equilibrada, duas conferências da mesma versão com recusa da segunda após confirmação da primeira, repetição sem duplicação, contexto/permissão revogados, prévia adulterada, falha injectada depois do writer antes do recibo e recuperação atómica. -11 verificações da interface executam o módulo JavaScript real num DOM simulado. Confirmam escolha explícita, recolha do formulário antes de bloquear os campos, quantidade decimal, impacto legível, ausência de confirmação automática e recuperação com a mesma prévia após perda simulada de resposta. -Todos os dados das tabelas do host/livro nativo de regressão comparados antes/depois são idênticos após rollback. Sequências apenas desse livro QA podem avançar. Não foram enviados comandos nem alterados ficheiros/configuração na8085, bases protegidas ou cache de dados.

Os casos anteriores não foram somados novamente nem reexecutados como prova nova. A prova consolidada é docs/proofs/sgf-stock-operations-20261110.json.

Limites que continuam abertos

Contagem e aplicação da diferença estão agora implementadas para o percurso sem lotes, com escolha explícita da contagem actual e recuperação sem a aplicar duas vezes. O impacto distingue quantidade contada, variação e saldo posterior. O selector de equipamento foi acrescentado; as políticas originais de peça/equipamento continuam a decidir admissibilidade. A prova positiva nova cobre o catálogo, não todas as combinações de peças/equipamentos. Devolução, contagem por lote e recepção em trânsito mantêm workflows próprios e ainda não são disponibilizadas por este ecrã. Não há entrada manual, custo ou contabilização automática.

Os testes de duas conferências intercaladas não constituem ensaio novo de processos simultâneos. A resposta503 de bloqueio foi implementada, mas o limite com dois processos reais não está comprovado neste incremento. A perda de resposta do cliente foi simulada; não equivale a prova TCP. Revisão visual, carga sustentada, instalação única completa e capacidade de implantação permanecem pendências separadas. O incidente do conector de navegador no Portal Investidor não foi reaberto nem enviado.

Continuar a composição dos restantes módulos do SGF; esta entrega não constitui aceitação global, publicação ou checkpoint.