84 lines
6.5 KiB
Markdown
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.
|