Regista abertura de propostas e actas imutaveis por versao

This commit is contained in:
2026-10-28 18:50:02 +02:00
parent 513f430edf
commit 07e775c492
21 changed files with 1404 additions and 4 deletions
@@ -0,0 +1,33 @@
{
"tested_at_utc": "2026-10-28T16:45:17+00:00",
"separate_database": true,
"transport": "Independent PHP service transactions and PostgreSQL connections",
"scenarios": [
{
"name": "competing_initial_versions",
"passed": true,
"overlapping_lock_waits": 2,
"immutable_versions": 1
},
{
"name": "competing_corrections",
"passed": true,
"overlapping_lock_waits": 2,
"immutable_versions": 2
},
{
"name": "revoked_role",
"passed": true,
"overlapping_lock_waits": 2,
"immutable_versions": 0
},
{
"name": "changed_basis",
"passed": true,
"overlapping_lock_waits": 2,
"immutable_versions": 0
}
],
"passed": true,
"test_database_dropped": true
}
+16
View File
@@ -0,0 +1,16 @@
{
"verified_at_utc": "2026-10-28T16:46:10+00:00",
"migration": "2026_10_28_000017_create_proposal_openings",
"batch": 18,
"backup_created": true,
"backup_bytes": 291397,
"restore_verified": true,
"restored_tables": 54,
"restore_database_dropped": true,
"business_records_unchanged": true,
"existing_constraints_preserved": true,
"env_unchanged": true,
"proposal_openings_count": 0,
"purchase_plan_milestones_count": 0,
"operational_validation": false
}
+2 -1
View File
@@ -2,7 +2,8 @@
Evolução do roteiro: a visão única foi entregue em `76d2463`. O incremento de
planeamento acrescenta itens por empresa, responsáveis, marcos e datas
previstas/realizadas, com ligação posterior às requisições. Actas, qualificação
previstas/realizadas, com ligação posterior às requisições. O registo documental
opcional da abertura e actas por versão também foi implementado. Qualificação
específica e avaliação em novas modalidades continuam por implementar. Estes
avanços não importam os processos históricos nem aprovam as regras de
cancelamento de ordens emitidas.
+68
View File
@@ -1,5 +1,73 @@
# Validação técnica do SGC — 28 de Outubro de 2026
## Incremento: sessão de abertura e actas por versão
Nas propostas existe o acesso «Sessão de abertura e actas», em
`/requisicoes/{requisition}/abertura`. Compras pode registar uma sessão num
pedido aprovado, antes de existir adjudicação. O registo é opcional; não
introduz um concurso público obrigatório, um número mínimo de propostas,
um júri obrigatório ou um novo circuito financeiro em todas as empresas.
O operador declara referência, local, data/hora, fuso horário, intervenientes,
qualidade em que participam, observações e referências de anexos, selecciona
as propostas e confirma a conferência. As propostas seleccionadas são
copiadas no servidor com fornecedor, referência, valores e linhas; não se
aceitam valores de uma acta enviados pelo cliente. Uma impressão autenticada
usa a cópia preservada, incluindo nome da empresa e autor do registo.
Não contém pontuações ou uma recomendação de adjudicação.
As datas são interpretadas no fuso declarado, guardadas em UTC e apresentadas
nesse fuso. Este primeiro âmbito suporta Africa/Johannesburg, Africa/Maputo e
UTC; a interface começa pelo fuso do contexto local. Sessões futuras e prazo
de apresentação posterior à sessão são recusados. O prazo é declarado; não
se presume que a data de criação de uma cotação no SGC seja a sua data real
de entrega pelo concorrente.
Correcções criam versões novas, com fundamento e referência à versão anterior
na auditoria. As versões guardadas não são editadas ou eliminadas pela
aplicação. Uma base de propostas alterada desde a consulta ou uma versão
anterior desactualizada é recusada. A interface permite conferir a base
actualizada sem apagar os textos introduzidos. Propostas posteriormente
adicionadas ou alteradas não entram nas actas anteriores; uma divergência é
assinalada na consulta. Não se alterou a política de recepção de cotações.
Os nomes dos intervenientes são declarações, não assinaturas digitais
verificadas. A impressão disponibiliza espaço para assinaturas manuscritas.
As referências de anexos não representam carregamento ou validação de
ficheiros. Registar uma acta não avalia propostas, não certifica a realização
da sessão, não adjudica, não reserva orçamento e não autoriza compras.
Alterações documentais depois da adjudicação exigem um circuito futuro;
este incremento conserva as actas anteriores para consulta, sem as reescrever.
Administração, Compras, Finanças e chefias autorizadas consultam; apenas
Compras regista. Mantêm-se isolamento entre empresas, âmbito departamental,
verificação de conflitos e revalidação do operador dentro da transacção.
Solicitantes e Armazém não ganham acesso a preços ou actas. Consulta e
impressão usam `private, no-store`; o histórico Inertia é cifrado. Os registos
aparecem nos documentos e eventos da visão única conforme o perfil.
A migração aditiva 000017 foi aplicada no batch 18 após backup privado de
291397 bytes e restauro verificado de 54 tabelas. Dados anteriores,
restrições e `.env` foram preservados; não foram criadas actas fictícias na
base de negócio. Ver `abertura-migracao-000017.json`. Backup e manifesto
ficam fora do Git.
Resultado: **443 testes aprovados, 2 ignorados, 3431 asserções**, incluindo
11 testes novos de snapshots, versões, base desactualizada, impressão,
fuso horário, validação, segregação, empresas/departamentos, revogação de
perfil, rollback de auditoria, imutabilidade e escape de texto. Quatro
cenários PostgreSQL passaram, cada um com duas ligações e duas esperas de
bloqueio simultâneas: versões iniciais concorrentes, correcções concorrentes,
perfil revogado e base alterada durante a espera. A base temporária exclusiva
foi eliminada. Ver `abertura-concorrencia-postgresql.json`.
PHPStan, Pint, TypeScript e build passaram. A revisão visual da interface e
da impressão permanece pendente pela indisponibilidade do navegador. Não se
declara validação operacional de concursos, assinaturas, orçamentos ou regras
de cancelamento de ordens emitidas. Publicação de concursos, propostas
seladas, qualificação por etapas e novos métodos de avaliação continuam
pendentes; os exemplos locais não os tornam obrigações universais.
## Incremento: planeamento por empresa
O menu Compras inclui `/planeamento`. Administração e Compras registam itens