Regista aceitacao tecnica da consolidacao sintetica de fornecedores

This commit is contained in:
2026-10-30 23:30:53 +02:00
parent 680959cc87
commit e4f520092e
5 changed files with 146 additions and 4 deletions
+2
View File
@@ -138,4 +138,6 @@ Próximo passo: a equipa testa as duas interfaces e relata função, origem/capt
## Retoma da interface — 30/10/2026
Retoma automática posterior: [resultados consolidados SGF/Compras](SUPPLIER_SETTLEMENT_CONSOLIDATION_20261030.md). Verificações adicionais aprovadas sem alterar motor, permissões existentes ou dados persistentes; revisão visual separada e pendente.
A página de obrigações passou a mostrar afectações novas e saldo por liquidar da posição canónica, preservando o principal. Percurso HTTP/HTML repetido em Compras e SGF: 11 600 MZN → pagamento confirmado sem abatimento → afectação confirmada de 4 000 → saldo 7 600; vencimento/dias nulos. Provas anteriores preservadas. Resultados, correcções de navegação e bloqueio visual no [relatório de pagamentos](SUPPLIER_SETTLEMENT_DELIVERY.md), secção Consolidação do percurso. Sem habilitação pública, mudança de permissões ou encerramento presumido.
@@ -0,0 +1,34 @@
# Consolidação automática — SGF e Compras, 30/10/2026
Conferidos primeiro SUPPLIER_SETTLEMENT_DELIVERY.md, SUPPLIER_PAYABLE_DELIVERY.md e as respectivas provas. A sequência HTTP/HTML já estava aprovada nas duas composições. Concorrência, isolamento, revogação e recuperação têm provas existentes, reutilizadas sem repetir a bateria. O SHA-256 de SupplierSettlements.php continua igual ao da prova original: `156bd40f3080de66a73c0befd975990e9d7010c2a232a86d751d4db3af4fae93`.
## Cobertura completada
Acrescentadas asserções em `scripts/settlements-interface-check.mjs`: dívida inalterada enquanto o pagamento é proposto; repetição da confirmação com nova chave recupera a mesma decisão; actor de confirmação diferente do preparador tanto no pagamento como na afectação; exactamente quatro eventos, um por etapa, sem eventos adicionais na repetição; IDs do histórico preservados após sair e voltar a entrar.
Estas verificações precisaram de uma nova sequência de preparação em bases descartáveis. Nenhum direito foi modificado nas instalações existentes: o instalador de fixture apenas preparou os acessos sintéticos das bases novas de prova. Nenhum comando financeiro foi executado nas demonstrações persistentes.
| Resultado HTTP automático | Compras autónomo | SGF |
| --- | --- | --- |
| Principal reconhecido | 11 600 MZN | 11 600 MZN |
| Pagamento de 4 000 proposto e depois confirmado | Dívida mantém 11 600 MZN | Dívida mantém 11 600 MZN |
| Afectação proposta, ainda não confirmada | Dívida mantém 11 600 MZN | Dívida mantém 11 600 MZN |
| Afectação de 4 000 confirmada por outra identidade | Saldo 7 600 MZN | Saldo 7 600 MZN |
| Vencimento / dias de atraso | null / null; indeterminado | null / null; indeterminado |
| Repetição e reentrada | Um pagamento, uma afectação, quatro eventos | Um pagamento, uma afectação, quatro eventos |
Evidência: [nova prova](proofs/supplier-settlements-consolidation-20261030.json). Preservadas as provas supplier-settlements.json e supplier-settlements-interface-20261030.json.
Executados `settlements-interface-run.py`, sintaxe Node do verificador, regressão de navegação/página inicial (`home-navigation-check.mjs`) e `git diff --check`, todos aprovados. O runner terminou e removeu os seus processos, bases e roles. Nenhum novo defeito funcional foi encontrado; só o verificador e documentação foram alterados. Builds e regressões financeiras anteriores são reutilizados: não houve alteração de código de aplicação, motor, adaptadores ou dependências nesta retoma.
## Limitações e encerramento
**Revisão visual pendente**, sem tentativa de navegador nesta retoma. O diagnóstico anterior mais recente substitui o antigo bloqueio de pipe: Firefox interrompido com `browser URL policy enforcement is not yet supported for the current Windows browser`. Não se contornou o bloqueio. HTTP/HTML e VM não comprovam disposição, legibilidade, foco ou utilização por cliques.
MFA continua com dois testes ignorados já documentados: `users with two factor enabled are redirected to two factor challenge` e `security page is displayed`. São cobertura de autenticação pendente, não prova do efeito monetário.
## Aceitação técnica e checkpoint local — 30/10/2026
O responsável aceitou expressamente esta consolidação e autorizou o checkpoint exclusivamente local, preservando alterações alheias e excluindo credenciais e dados privados. Fica aceite o resultado técnico nas duas composições; a revisão visual continua pendente e não é declarada realizada ou aceite. Os dois testes MFA permanecem pendentes nos termos acima.
O checkpoint inclui apenas o verificador, a prova sintética e a documentação desta consolidação. Não autoriza utilização real, publicação ou habilitação do percurso público. Não houve alteração de permissões existentes, operações bancárias, correcções de afectações ou novos módulos. A página inicial mantém-se limpa. Mantêm-se os restantes limites do relatório de entrega, incluindo históricos importados e ausência de reconciliação/contabilidade/stock/orçamento adicional.
+2
View File
@@ -4,6 +4,8 @@ Implementado o incremento seguinte às obrigações, nas duas composições, com
## Responsabilidade e código
Actualização de 30/10/2026: [consolidação automática sem navegador](SUPPLIER_SETTLEMENT_CONSOLIDATION_20261030.md). Complementa as provas abaixo, sem as substituir; cobertura adicional de repetição da confirmação, identidade distinta e eventos únicos aprovada nas duas composições. Revisão visual continua pendente.
O código comum reside em `packages/payables/src/SupplierSettlements.php`, `SettlementSchema.php`, `SettlementHttp.php` e `ui/settlements.php`. Carregamento e apresentação em `bootstrap.php` e `src/Workspace.php`. `src/Payables.php` conserva a responsabilidade única pelo saldo: principal menos histórico confirmado existente e afectações novas confirmadas. Não se escrevem pagamentos externos legados para representar novamente o mesmo facto.
Os adaptadores são `app/Modules/Purchasing/SupplierPaymentsController.php` no SGF e `app/Http/Controllers/SupplierPaymentsController.php` em Compras, apoiados nos respectivos `SupplierPayables.php`. Contexto, pessoa, organização e direitos são revalidados no servidor pelos adaptadores existentes; o motor recebe contexto explícito. Rotas em `routes/web.php` de cada aplicação. A página anterior de obrigações apresenta a ligação quando disponível. No SGF, `resources/js/WorkspaceNavigation.jsx` e `app.jsx` incluem a entrada; nenhuma concessão real foi adicionada.
@@ -0,0 +1,93 @@
{
"checked_at": "2026-10-30T21:28:42.382Z",
"core_unchanged": true,
"core_sha256": "156bd40f3080de66a73c0befd975990e9d7010c2a232a86d751d4db3af4fae93",
"hosts": [
{
"host": "compras",
"passed": true,
"kind": "HTTP pages, form availability, submitted commands and JavaScript syntax; not browser execution",
"stages": [
{
"stage": "recognised",
"debt_minor": 1160000
},
{
"stage": "payment_confirmed_before_allocation",
"debt_minor": 1160000,
"unallocated_minor": 400000
},
{
"stage": "allocation_confirmed",
"debt_minor": 760000,
"unallocated_minor": 0
}
],
"principal_minor": 1160000,
"due_on": null,
"days_overdue": null,
"payments": 1,
"allocations": 1,
"repeat_recovered": true,
"payment_confirmation_repeat_recovered": true,
"event_counts": {
"supplier_payment.proposed": 1,
"supplier_payment.confirmed": 1,
"supplier_allocation.proposed": 1,
"supplier_allocation.confirmed": 1
},
"distinct_validation_actors": true,
"history_after_reentry": true,
"canonical_balance_on_both_pages": true,
"role_destination_retained": true,
"external_redirect_refused": true,
"read_only_without_forms": true,
"visual_review": false
},
{
"host": "sgf",
"passed": true,
"kind": "HTTP pages, form availability, submitted commands and JavaScript syntax; not browser execution",
"stages": [
{
"stage": "recognised",
"debt_minor": 1160000
},
{
"stage": "payment_confirmed_before_allocation",
"debt_minor": 1160000,
"unallocated_minor": 400000
},
{
"stage": "allocation_confirmed",
"debt_minor": 760000,
"unallocated_minor": 0
}
],
"principal_minor": 1160000,
"due_on": null,
"days_overdue": null,
"payments": 1,
"allocations": 1,
"repeat_recovered": true,
"payment_confirmation_repeat_recovered": true,
"event_counts": {
"supplier_payment.proposed": 1,
"supplier_payment.confirmed": 1,
"supplier_allocation.proposed": 1,
"supplier_allocation.confirmed": 1
},
"distinct_validation_actors": true,
"history_after_reentry": true,
"canonical_balance_on_both_pages": true,
"role_destination_retained": true,
"external_redirect_refused": true,
"read_only_without_forms": true,
"visual_review": false
}
],
"visual_blocker": "Previous Firefox attempt stopped: browser URL policy enforcement is not yet supported for the current Windows browser. Browser not retried in this consolidation.",
"public_enabled": false,
"bank_execution": false,
"accepted_proof_preserved": true
}