Files
compras/docs/validacao-tecnica.md
T

84 lines
6.5 KiB
Markdown

# Validação técnica do SGC — 28 de Outubro de 2026
Esta revisão cobre os módulos implementados e as pendências documentadas no
repositório. Não equivale a validação operacional integral ou certificação de
todos os requisitos do sistema. Valores e políticas reais continuam a pertencer
a cada empresa; nenhum foi criado nesta revisão.
## Correcções verificadas
- Operações que verificavam o perfil antes de esperar pelo bloqueio da empresa
passam a recarregar e bloquear o utilizador dentro da transacção. Abrange
facturas, dados bancários, stock, recepções, requisições, adjudicação, emissão,
validação técnica e dotação inicial. Mudança de perfil ou de empresa durante
a espera não é autorizada pelo perfil antigo em memória.
- Requisição volta a verificar departamento e centro de custo ao guardar e o
departamento do solicitante ao submeter. Decisões departamentais usam o perfil
actual; revisão técnica e aprovadores finais são bloqueados durante as
verificações transaccionais.
- Dotação pendente mostra **zero disponível e zero aprovado**, preservando o
valor proposto e o histórico. O servidor já bloqueava a reserva; a interface
deixou de apresentar verba proposta como disponível.
- Teste da página de segurança com MFA desligado deixou de ser indevidamente
ignorado. Textos dessa página e confirmação de alteração de palavra-passe
traduzidos para português. Nenhuma palavra-passe real foi alterada.
- Configuração de fontes passou a declarar desactivada a optimização opcional
que já não era gerada por ausência de `fontaine`. Mantém Instrument Sans e
elimina o aviso de dependência opcional sem instalar pacotes novos.
## Resultados
**407 testes aprovados, 2 ignorados, 2.964 asserções** na suite completa SQLite
em memória. Os dois ignorados dependem de MFA activado, actualmente desligado;
não são apresentados como funcionalidades validadas. PHPStan, Pint, TypeScript,
compilação e formatação/lint frontend verificados no fecho.
**32 cenários concorrentes PostgreSQL aprovados**, todos em bases exclusivas
de teste, eliminadas no final:
| Área | Cenários | Evidência |
| ------------------------------ | -------: | ------------------------------------------------------ |
| Recepções | 4 | [Relatório](recepcao-concorrencia-postgresql.json) |
| Stock e peças | 7 | [Relatório](stock-concorrencia-postgresql.json) |
| Reservas e compromissos | 5 | [Relatório](orcamento-concorrencia-postgresql.json) |
| Facturas e consumo | 3 | [Relatório](facturas-concorrencia-postgresql.json) |
| Dados bancários | 3 | [Relatório](bancos-concorrencia-postgresql.json) |
| Pagamentos externos | 3 | [Relatório](pagamentos-concorrencia-postgresql.json) |
| Reforços | 3 | [Relatório](reforcos-concorrencia-postgresql.json) |
| Regras de investimento | 3 | [Relatório](investimento-concorrencia-postgresql.json) |
| Perfil revogado durante espera | 1 | [Relatório](autorizacao-concorrencia-postgresql.json) |
O último ensaio bloqueia a empresa, observa duas ligações simultaneamente à
espera e revoga os dois perfis de Armazém antes de libertar o bloqueio. Os dois
pedidos pelo kernel HTTP retornam **403**; não criam recepções nem movimentos.
Os restantes ensaios verificam saldos, duplicações e integridade conforme os
respectivos relatórios. Não são testes de carga ou uma validação de todos os
possíveis cruzamentos concorrentes do sistema.
Sem migrações, seeds, criação de contas, alteração de configuração de ambiente
ou escritas de negócio na base real nesta revisão. Acesso HTTP pode actualizar
sessões. Nenhuma autorização de compra ou transferência bancária foi emitida.
## O que permanece por tratar
| Pendência | Situação |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Revisão visual pública, autenticada e impressão | Bloqueada pelo acesso ao navegador; testes HTTP não a substituem. |
| MFA obrigatório e ciclo completo de acessos | Não implementados/activados; dois testes condicionais continuam ignorados. |
| Revisão/cancelamento de adjudicações e ordens | Fluxo e política próprios ainda ausentes. Operações incompatíveis continuam bloqueadas. |
| Reversões, estornos, notas de crédito e devoluções | Funcionalidades ainda não implementadas; não se apagam lançamentos existentes. |
| Regras empresariais | Escalões provisórios, regras fiscais, validade/levantamento de conflitos e excepções exigem decisão da empresa. |
| Investimento agregado e fraccionamento | Apenas tecto por processo suportado; sem agregação/detecção automática. |
| Outras etapas do roteiro | Multimoeda, reposição, tolerâncias/investigação de inventários, manutenção/activos e requisitos de subscrição/hosting continuam no roteiro. |
| Controlos operacionais | Carga, permissões contra SQL administrativo, retenção e recuperação por empresa ainda exigem validação própria. |
Estas pendências não foram marcadas como concluídas por compilação ou testes
funcionais. O próximo incremento de revisão/cancelamento deve definir e guardar
uma política explícita por empresa, conservar o passado e exigir novas decisões
para processos revistos; não pode autorizar por omissão a alteração de ordens
emitidas ou a libertação de compromissos já consumidos.
Verificação HTTP local no fecho: **18 páginas públicas responderam 200** e
**13 rotas protegidas responderam 302 sem sessão**. O navegador voltou a devolver
`The browser access host is unavailable`; a revisão visual continua pendente.