Files
SGF/docs/SGF_RECEIPT_DOCUMENTS_DELIVERY.md
2026-11-04 09:37:20 +02:00

6.4 KiB

Anexos privados da recepção — entrega local de 03/11/2026

SGF-RECEIPT-DOCUMENTS-QA-v1 implementa guias de entrega, relatórios de qualidade e outros documentos no histórico de cada recepção. Reutiliza ReceiptDocuments::add e a descarga do controlador original fixados no manifesto da composição, sem outro writer. A área abre ao consultar uma recepção no histórico; os eventos documentais entram também no dossiê da requisição, nas páginas e etapas autorizadas.

Comportamento

  • Metadados privados em páginas SQL de15, ordenadas por ID descendente; sem caminhos de armazenamento ou tenant nativo no resultado.
  • Tipo e ficheiro escolhidos individualmente, fundamento obrigatório, prévia reversível e impacto antes de confirmação. A prévia não altera registos/auditoria e remove apenas o ficheiro temporário que criou.
  • Confirmação vincula bytes/SHA, nome, pessoa, contexto da sessão, perfil de origem, versão da recepção e prazo de600segundos; volta a verificar permissões e autoridade nativa. A versão refere-se à recepção imutável, não transforma anexos em nova decisão de qualidade.
  • Reutiliza purchasing_receipts.view/confirm, admissão da ordem/origem por empresa/unidade e políticas originais. Não cria direitos novos. Ambas as funcionalidades de anexos ficam desligadas por omissão fora das composições QA.
  • Uma chave recupera o resultado sem outra escrita. Outra intenção explícita com o mesmo tipo/SHA na mesma recepção reutiliza o documento original e o seu nome, mantendo o novo evento de intenção. Não há deduplicação global entre recepções ou tipos.
  • Descarga original com verificação SHA, confinamento privado, nosniff, sem cache e CSP sandbox; autor/data/documento/SHA ficam no histórico da requisição. Anexos não alteram quantidades, qualidade, aceitação, ordens ou movimentos físicos e não criam factura, obrigação ou pagamento.
  • Compensação após falha elimina apenas ficheiro novo cujo registo se comprovou não confirmado. Resultado de commit incerto conserva evidência para recuperação. Reutilizar documento existente nunca autoriza apagar o ficheiro original.

Provas

Prova consolidada: receipt-documents-composition-20261103.json. 58 verificações:28 principais,6 adicionais,4 guardas,8 da demonstração,3 de build/entrega de assets e9 de lógica do componente com DOM simulado.

Regressão isolada 1968d008dac9, cluster QA55439: origem mínima produzida pelos workflows efectivos de requisição, propostas/avaliações, adjudicação, ordem e recepção. Não foram repetidas as suites anteriores. Um documento foi criado pela API e15 pelo mesmo serviço nativo para preparar volume:16 registos/ficheiros, páginas15/1, zero ficheiros temporários. Uma segunda intenção API reutiliza o primeiro documento. Duas sessões concorrentes terminam com201/200, um documento e um ficheiro. Falha na auditoria exterior reverte o registo e compensa o ficheiro; repetir depois termina correctamente.

Inclui recusas por direito retirado, tipo/extensão/conteúdo inválidos, bytes substituídos, revisão incompatível, conferência expirada, perfil/contexto alterado, outro módulo/unidade e proprietário inexistente. Alteração dos bytes armazenados impede descarga e recuperação. O ramo original de prévia de documentos do fornecedor foi exercitado após a generalização do helper, preservando o fornecedor e os16 anexos da recepção.

Verificação final: sintaxe de14 ficheiros PHP e9 JavaScript aprovada; build privado e correspondência dos assets servidos aprovados. git diff --check sem erros de espaços. Inventário estático actualizado: seis módulos,13 etapas,80 fontes, zero ciclos obrigatórios; matriz com118 critérios documentais conferidos. Estes números de inventário não são testes funcionais adicionais ou validação operacional de todos os módulos.

As provas válidas do prefixo foram conservadas. O teste do dossiê foi corrigido para usar Compras e a página efectiva do histórico: Armazém não tem direito de entrada no dossiê. A recusa de outro módulo para Armazém é403, por falta desse acesso, ao contrário do409 de um perfil que também tenha acesso ao módulo. As verificações finais retomaram apenas o sufixo pendente. A asserção física final confirma uma recepção e um movimento de1000milésimos; não se apresenta uma fotografia integral antes/depois de todas as tabelas do percurso.

Demonstração e preservação

Composição nova 8c363c2b4ac1, loopback 8077:

  • Compras: iniciar requisição e continuar o percurso integrado.
  • Armazém: recepções e respectivos anexos.

Começa sem requisições principais, recepções ou anexos; três fornecedores e orçamento QA preparados. Os probes de leitura preservaram a fotografia de fornecedores/recepções/documentos/auditoria da nova demonstração. Código raiz e cópias QA foram comparados por SHA; manifestos nativos mantêm os pins anteriores. As provas anteriores e packages/purchasing/current.json foram conferidos, sem os substituir.

8076 e anteriores, seis registos protegidos, cache bloqueada, dados/acessos reais e alterações alheias não foram modificados. Sem migração no destino, activação de Compras, publicação, aceitação ou checkpoint.

Limitações e próximos trabalhos separados

O ensaio binário positivo usa PNG. As regras nativas de PDF/JPEG foram preservadas, sem declarar nova regressão completa desses leitores. Anexar não certifica autenticidade, validade fiscal ou tipos universalmente obrigatórios. Reconciliação de ficheiros órfãos após crash, retenção, quotas e carga sustentada de armazenamento continuam pendentes. Sequências de prévias podem avançar e directórios temporários vazios podem permanecer.

O DOM simulado prova lógica de tipos, impacto, confirmação explícita, edição e respostas atrasadas; não constitui revisão visual, acessibilidade ou aceitação no navegador. Não foi repetida a via de navegador bloqueada. O schema QA é preparado a partir da fonte actual e o runtime permanece fixado; instalação geral, compatibilidade de implantação e privilégios mínimos exigem prova própria. A aplicação completa não é declarada terminada por esta entrega; anexos/correcções de outros documentos e restantes lacunas da matriz mantêm o seu âmbito separado.