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

52 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Conferência de extracto QA — entrega na8085
10/11/2026, `SGF-BANK-RECONCILIATION-QA-v1`, conforme [âmbito autorizado](SGF_BANK_RECONCILIATION_SCOPE.md). Mesma instalação, entrada **Financeiro → Conferência de extracto QA → Abrir extracto, conferência e histórico**, ou `/finance/bank` após escolha da função autorizada.
## Resultado conservado
Um extracto **artificial interno** `QA-BANCO-LOCAL`, MZN,2026-11: abertura0, débito20, crédito20 e fecho0. O saldo intermédio−20 é explícito no exercício; não significa autorização de descoberto, caixa disponível ou saldo bancário real. A conta de liquidação não foi classificada como banco.
Importação13 → revisão14 do extracto → proposta13 da linha `QA-OUT-20` para a linha contabilística4/diário2 → revisão14 → proposta13 da linha `QA-IN-20` para a linha5/diário3 → revisão14 → conferência final14, diferença0. **Um cabeçalho, duas linhas e sete eventos** conservados na8085; relatório CSV interno com assinatura verificável.
O leitor nativo conferiu as duas linhas **efectivamente existentes** de `QA-LIQUIDACAO`,20/reversão20, por SELECT no livro físico ligado à mesma composição/empresa/unidade. Confere IDs fixados, conta, data, moeda, sinal/valor e fotografia do diário; não toma correspondência por igualdade de valor nem oferece toda a contabilidade. Reutiliza a ligação nativa existente, sem novo PGrole; o adaptador apenas executa leituras, não é uma concessão de escrita nem uma nova role SELECT-only.
Não foram criados pagamentos/estornos/comissões/ajustes ou lançamentos para preparar ou fechar o exercício. Caixa950 fechada,27 lançamentos, período contabilístico, IVA com quatro versões e regras com quatro eventos/dois cálculos intactos. Não existe SGC/portal/banco/API de instituição em execução neste percurso.
## Controlos e histórico
CSV UTF-8 limitado8192 bytes e ao caso artificial aprovado, com validação de cabeçalho, conta/período/moeda, ordem/data/referência, sinais, montantes, abertura/fecho e saldos intermédios. Não é importador bancário geral. Ficheiro não substitui fotografia anterior; mesmo ficheiro/chave recupera a origem sem duplicação. Com outra chave e o mesmo ficheiro, devolve o extracto existente sem criar eventos ou linhas, inclusive depois da conferência final; isso não reabre o processo.
Extracto importado não cria correspondências. Revisão distinta do extracto precede propostas individuais; revisão de cada proposta exige alvo exacto e preparador ainda autorizado. Proposta por rever não permite outra para a mesma linha. Uma linha contabilística ou de extracto já conferida não pode ser usada novamente. Finalização exige as duas correspondências revistas e nenhuma proposta pendente. Não há reabertura de conferência finalizada, Caixa ou período.
Prévia cifrada600s em savepoint revertido, impacto antes da confirmação, contexto/autor/direitos/versão/origem revalidados sob lock da empresa. `br_statements` fixa CSV/SHA e linhas; `br_events` fixa predecessor, proposta exacta, autor/preparador/data/fundamento/estados e correspondências; `br_commands` fixa chave/hash/resultado. Triggers exigem acesso/revisão distinta/versão, protegem história append-only e impedem duplicação de correspondências. Guarda física QA e PUBLIC revogado.
Recibo próprio recuperável noutra sessão por GET, sem executar de novo. Fonte alterada bloqueia a conferência/relatório, sem preencher saldos zero. Interface exige escolha explícita das duas linhas e da decisão, protege campos durante operação incerta e conserva histórico/consulta depois da finalização. Upload/leitura de ficheiro limitado ao CSV QA; botão do exemplo só preenche após escolha do utilizador. Não lê ficheiros por caminhos recebidos do cliente.
Linhas de extracto são **limitadas a duas por este contrato**, com filtro de estado. Histórico é SQL25/100 e foi percorrido além100 eventos. Não se declara importação/paginação de extractos de volume arbitrário. O relatório é derivado das fotografias imutáveis da conferência, com checksum no download e auditoria; não se declarou arquivo independente do binário/renderer para retenção legal de longo prazo.
## Acessos e provas
`bank_reconciliation.view/import/prepare/review`: **oito concessões por cada uma das duas bases QA existentes**,16 no conjunto, exactamente [como aprovado](integration/sgf-bank-reconciliation-access-proposal.json). Importação/preparação13, revisão14 e consultas13–17. Não herdados de Caixa/recebíveis. Sem novo utilizador/PGrole/direito PUBLIC/acesso real. Rootflag desligada; somente a8085 disponibilizada com vínculo privado por hash.
|Prova|Resultado|
|---|---|
|37 regressão, rollback integral|Importação/prévia, sinais/moeda/valor, revisão distinta, fase de extracto, versões antigas, linha/pedido repetidos, correspondência manual, finalização/relatório, origem alterada, falha após importação com rollback/recuperação e dados anteriores intactos.|
|Concorrência na regressão|Segunda revisão503/Retry-After5 durante o lock da empresa; libertação→409 por versão antiga. Uma revisão válida, recuperação da primeira chave sem duplicação.|
|11 SQL/fronteiras, rollback|126 eventos de metadados (63 propostas/recusas) além dos dois eventos de concorrência;128 percorridos em25 e100/28. Filtros, actor/contexto/unidade/módulo, histórico imutável e writer indevido. Fixtures não são correspondências confirmadas.|
|28 HTTP na8085|Leitor nativo actual, duas linhas reais do QA, sete confirmações/repetições, dois pares conferidos individualmente, finalização/relatório/checksum, sinais/IDs/reutilização/actor/módulo/tenant, recibo noutra sessão e ecrã. Progresso guardado para não repetir operações válidas.|
|15 DOM→HTTP|Consulta do estado final, duas correspondências visíveis, formulário fechado, filtros/histórico100/detalhe, recibo e integração com Caixa950/IVA4/regras2cálculos. **Zero POSTs de negócio**. Não é navegador ou aceitação visual.|
|Três HTTP do relatório|Resposta CSV/checksum preservados através do mesmo tratamento HTTP limitado para ocupação. Não foi repetido o percurso de sete decisões.|
|Preservação SELECT-only|20 conjuntos originais completos e binding idênticos; apenas oito concessões aprovadas adicionadas. Sem append nativo ou alteração dos exemplos anteriores.|
Total94 verificações dirigidas, concorrência separada. [Índice verificável](proofs/sgf-bank-reconciliation-20261110.json).
**Distinção de origem das provas:** a regressão existente não contém os dois lançamentos20/20. Os testes de componente/persistência/concorrência injectaram um fornecedor de origem artificial **apenas no harness CLI**, como autorizado, com `source_kind=regression_harness_fixture`. Não foram criados lançamentos/pagamentos para preparar testes. O leitor instalado não tem fallback ou origem de regressão; a execução HTTP8085 comprovou `source_kind=native_qa_ledger` e as duas linhas efectivas. Não apresentar a prova com origem simulada como integração nativa total da regressão.
Uma ambiguidade de nome no trigger de finalização foi detectada/corrigida só na regressão antes da instalação; a execução de negócio foi revertida e a prova final passou com a guarda corrigida. Não foram somadas tentativas falhadas como provas válidas.
## Limitações restantes
Amostra artificial de duas linhas/um período/uma conta de exercício. Não é integração bancária, reconciliação geral, pagamento, livro bancário real ou confirmação da natureza de uma conta. Recusa do extracto mantém o processo bloqueado; protocolo geral de correcção/substituição/reenvio de extractos não faz parte desta entrega. Proposta de correspondência recusada pode ser preparada novamente, sem apagar a recusa.
Sem novos motores legais, remunerações, modelos oficiais, rácios financeiros amplos ou capacidade de implantação. Visual continua pendente, via bloqueada não repetida; carga sustentada, retenção/órfãos, arranque completo, conformidade e implantação exigem evidência própria. Seis registos/cache/trabalho alheio preservados; sem novas bases/portas/demos, SGC, publicação/candidata, aceitação/checkpoint ou dados/acessos reais. Dumps e dados privados fora do repositório.