Implementa admissão formal por política e adopção do processo
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"tested_at_utc": "2026-10-28T18:21:31+00:00",
|
||||
"separate_database": true,
|
||||
"transport": "Independent PHP service transactions and PostgreSQL connections",
|
||||
"scenarios": [
|
||||
{
|
||||
"name": "same_person",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 1,
|
||||
"state": "pending"
|
||||
},
|
||||
{
|
||||
"name": "distinct_people",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 2,
|
||||
"state": "confirmed"
|
||||
},
|
||||
{
|
||||
"name": "opposing_reviews",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 1,
|
||||
"state": "pending"
|
||||
},
|
||||
{
|
||||
"name": "revoked_role",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 0,
|
||||
"state": "pending"
|
||||
},
|
||||
{
|
||||
"name": "changed_basis",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 0,
|
||||
"state": "pending"
|
||||
},
|
||||
{
|
||||
"name": "new_adoption",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"reviews": 0,
|
||||
"state": "pending"
|
||||
}
|
||||
],
|
||||
"passed": true,
|
||||
"test_database_dropped": true
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"verified_at_utc": "2026-10-28T18:23:41+00:00",
|
||||
"migration": "2026_10_28_000019_create_formal_admission",
|
||||
"batch": 20,
|
||||
"backup_created": true,
|
||||
"backup_bytes": 306342,
|
||||
"restore_verified": true,
|
||||
"restored_tables": 57,
|
||||
"restore_database_dropped": true,
|
||||
"business_records_unchanged": true,
|
||||
"existing_constraints_preserved": true,
|
||||
"env_unchanged": true,
|
||||
"admission_policies_count": 0,
|
||||
"admission_adoptions_count": 0,
|
||||
"operational_validation": false
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
# Proposta de âmbito para admissão e exclusão de propostas
|
||||
|
||||
Estado: proposta para validação. Não implementa decisões formais na base de
|
||||
negócio e não activa regras de exclusão ou adjudicação. Data: 28 de Outubro
|
||||
de 2026.
|
||||
Estado: âmbito validado pelo utilizador e implementado em 28 de Outubro de 2026. O circuito real é opcional por empresa e por processo; nenhuma política
|
||||
real foi criada ou activada durante esta entrega. A demonstração pública
|
||||
continua separada dos registos autenticados.
|
||||
|
||||
## Resultado preparado para revisão
|
||||
## Demonstração preparada antes da validação
|
||||
|
||||
`/proposta/admissao` demonstra configuração de conferentes e quantidade de
|
||||
confirmações, proposta manual por Compras, conferência fundamentada por
|
||||
@@ -18,7 +18,7 @@ um quórum imposto às empresas. Nenhum valor financeiro dos exemplos locais
|
||||
é utilizado. Os casos A/B/C são exemplos de análise sem pendências, requisito
|
||||
obrigatório não cumprido e pendência/divergência, respectivamente.
|
||||
|
||||
## Primeiro circuito proposto
|
||||
## Circuito inicial validado
|
||||
|
||||
1. Administração da empresa configura e activa expressamente uma política
|
||||
versionada: perfis de conferência e quantidade de pessoas distintas exigida.
|
||||
@@ -57,8 +57,11 @@ obrigatório não cumprido e pendência/divergência, respectivamente.
|
||||
aplicável podem entrar na selecção de adjudicação. Uma exclusão ou pedido
|
||||
de esclarecimento não substitui admissão. Admissão não autoriza compra:
|
||||
mantêm-se pontuação, conflitos, orçamento e aprovação do valor final.
|
||||
A implementação deverá guardar a base de admissão na adjudicação e
|
||||
verificar coerência antes da emissão. Não se alteram ordens já emitidas.
|
||||
A implementação guarda a base de admissão na adjudicação e na ordem e
|
||||
verifica coerência antes da emissão. Não se alteram ordens já emitidas.
|
||||
Mantêm-se o mínimo existente de três fornecedores elegíveis e duas
|
||||
avaliações por proposta. Neste regime, os três fornecedores precisam
|
||||
também de propostas admitidas; não se implementou uma dispensa do mínimo.
|
||||
|
||||
Estas são escolhas propostas para o primeiro circuito suportado, não normas
|
||||
legais ou obrigações universais deduzidas dos modelos históricos. Cada empresa
|
||||
@@ -76,28 +79,35 @@ validação solicitada é do âmbito do produto; não publica políticas reais.
|
||||
decisão de admissão/exclusão.
|
||||
- Cancelamento de ordens, devoluções, estornos ou reversões financeiras.
|
||||
|
||||
## Verificações previstas para a implementação
|
||||
## Verificações da implementação
|
||||
|
||||
Identidade e segregação no servidor; política/base preservadas; requisitos
|
||||
pendentes ou obrigatórios não resolvidos; conferências repetidas; devolução;
|
||||
perfil/departamento revogado; empresas diferentes; tentativas desactualizadas;
|
||||
admissão versus adjudicação/emissão; rollback de auditoria e concorrência
|
||||
PostgreSQL. A demonstração não substitui estes testes da futura implementação.
|
||||
PostgreSQL. Os resultados efectivos estão em `docs/validacao-tecnica.md`;
|
||||
a demonstração não substitui os testes da implementação autenticada.
|
||||
|
||||
## Decisão solicitada
|
||||
## Validação recebida e activação
|
||||
|
||||
Validar o circuito inicial: **decisão manual por Compras, confirmações
|
||||
O utilizador validou o circuito inicial: **decisão manual por Compras, confirmações
|
||||
independentes em quantidade/perfis definidos pela empresa e integração na
|
||||
adjudicação apenas por adopção explícita do regime**, sem admitir propostas
|
||||
com pendências ou requisitos obrigatórios não resolvidos neste primeiro âmbito.
|
||||
|
||||
Pausa-se a implementação com dados reais para esta validação, conforme a
|
||||
orientação de continuidade: «definir com a empresa o próximo âmbito pendente
|
||||
antes de o implementar», em `docs/orientacoes-continuidade.md`. A autorização
|
||||
anterior da qualificação era documental e não activava admissão/exclusão.
|
||||
Esta validação autoriza a implementação do produto, sem publicar uma política
|
||||
por conta das aderentes. A Administração configura `/politica-admissao` com
|
||||
quantidade e perfis expressos. Compras adopta essa versão em
|
||||
`/requisicoes/{requisition}/admissao` antes de adjudicar. Sem adopção, mantém-se
|
||||
o circuito anterior. A desactivação geral impede novas adopções, preservando
|
||||
as versões já adoptadas. Uma nova tentativa substitui a anterior para efeitos
|
||||
de elegibilidade, sem apagar o histórico. O limite de 50 confirmações no
|
||||
formulário é técnico, não um quórum empresarial; assegurar pessoas elegíveis
|
||||
em número suficiente é responsabilidade da configuração da empresa.
|
||||
|
||||
As alterações locais dos três documentos de continuidade foram preservadas.
|
||||
|
||||
## Verificações da preparação
|
||||
## Histórico: verificações da preparação da demonstração
|
||||
|
||||
TypeScript, build, Pint e lint/formatação dos ficheiros desta proposta
|
||||
passaram. Os três testes existentes de consulta pública passaram, com 39
|
||||
|
||||
@@ -1,5 +1,93 @@
|
||||
# Validação técnica do SGC — 28 de Outubro de 2026
|
||||
|
||||
## Incremento: admissão e exclusão por adopção expressa
|
||||
|
||||
O utilizador validou `docs/proposta-admissao-exclusao.md`. A Administração da
|
||||
empresa pode registar versões da política em `/politica-admissao`, indicando
|
||||
expressamente perfis de conferência (Finanças e/ou chefia do departamento),
|
||||
quantidade de pessoas distintas e fundamento. Não há quantidade nem perfis
|
||||
pré-seleccionados. O máximo de 50 no formulário é um limite técnico, não uma
|
||||
regra empresarial. A disponibilidade de pessoas elegíveis deve acompanhar a
|
||||
configuração da empresa.
|
||||
|
||||
Compras adopta a política activa em `/requisicoes/{requisition}/admissao`,
|
||||
num pedido aprovado e antes de adjudicar. Sem adopção, mantém-se o circuito
|
||||
existente. A política adoptada fica preservada; desactivar a política geral
|
||||
impede novas adopções e não reescreve processos existentes. Aplicar outra
|
||||
versão exige nova adopção expressa e novas decisões/conferências. Não há
|
||||
regresso implícito ao circuito sem admissão.
|
||||
|
||||
Compras propõe admitir, excluir ou pedir esclarecimento interno por proposta,
|
||||
com fundamento e base preservada de requisitos, propostas e últimas análises
|
||||
de cada analista. O proponente não pode ser o solicitante. Admitir exige
|
||||
análise existente sem pendências, respostas em falta ou divergências e com
|
||||
todos os requisitos obrigatórios cumpridos. Um requisito facultativo
|
||||
uniformemente não cumprido ou não aplicável não constitui, por si, uma
|
||||
dispensa de requisito obrigatório.
|
||||
|
||||
Os conferentes são pessoas distintas, da mesma empresa, com perfil e
|
||||
departamento ainda elegíveis, diferentes do solicitante e do proponente,
|
||||
sem conflito de interesses. Uma conferência repetida com conteúdo idêntico
|
||||
é idempotente e conta uma vez; outra resposta não reescreve a assinatura.
|
||||
Uma devolução termina a tentativa sem excluir automaticamente o concorrente.
|
||||
Corrigir cria nova tentativa, sem copiar confirmações. Antes de concluir o
|
||||
quórum, as confirmações anteriores são revalidadas; uma decisão concluída
|
||||
conserva a elegibilidade verificada na sua data. Uma alteração de base,
|
||||
tentativa ou adopção invalida a utilização de conferências antigas.
|
||||
|
||||
A comparação usa o cálculo ponderado existente. Nos processos que adoptaram
|
||||
o regime, só propostas com admissão confirmada e actual são elegíveis.
|
||||
Mantêm-se os mínimos existentes de três fornecedores elegíveis e duas
|
||||
avaliações por proposta, sem dispensas novas. A base da admissão fica na
|
||||
adjudicação e na ordem; é revalidada antes de aprovar/emitir. Não se aplicam
|
||||
regras retroactivas a adjudicações/ordens existentes nem se reemitem ordens
|
||||
já emitidas. A admissão, sozinha, não movimenta orçamento, facturas ou
|
||||
pagamentos. O relatório de conferência identifica o regime adoptado; o
|
||||
processo completo liga às decisões e apresenta os eventos de auditoria.
|
||||
|
||||
As novas páginas usam o cabeçalho, rodapé e navegação partilhados. O título
|
||||
HTML inicial foi corrigido de `ProcuraFlow` para **Sistema de Gestão de
|
||||
Compras (SGC)**, sem modificar `.env`. O nome visível das novas páginas
|
||||
segue a mesma identificação.
|
||||
|
||||
Migração `000019`, lote **20**, aplicada em `compras_dev` após backup privado
|
||||
de **306342 bytes**, verificado por restauro numa base separada e eliminada
|
||||
após a conferência. Foram verificadas **57 tabelas anteriores**, registos de
|
||||
negócio por projecção das colunas originais, restrições existentes, histórico
|
||||
de migrações e integridade de `.env`. A migração acrescenta quatro tabelas e
|
||||
um campo JSON anulável na adjudicação. As quatro tabelas reais estão vazias;
|
||||
nenhuma política foi publicada por conta das aderentes. O relatório sanitizado
|
||||
está em `docs/admissao-migracao-000019.json`; o backup/manifesto permanecem
|
||||
privados, fora do Git. O rollback automático destrutivo está impedido.
|
||||
|
||||
Os seis cenários em `docs/admissao-concorrencia-postgresql.json` passaram
|
||||
com ligações/processos PHP independentes e dois bloqueios simultâneos
|
||||
observados no PostgreSQL: mesma pessoa, pessoas distintas, respostas
|
||||
opostas, perfil revogado, base alterada e nova adopção durante a espera.
|
||||
Conferências, quórum e auditoria foram conferidos; a base de teste foi
|
||||
eliminada. Não se apresenta esta bateria como um teste de corrida de emissão.
|
||||
|
||||
Resultado final do servidor: **478 testes aprovados, 2 ignorados e 3887
|
||||
asserções**. A bateria inclui os 13 cenários novos de admissão e quatro de
|
||||
integração real com adjudicação/emissão: base preservada na ordem,
|
||||
pontuações mantidas, exclusão e mínimo de fornecedores, alterações antes da
|
||||
emissão, repetição de emissão e adjudicação anterior sem adopção retroactiva.
|
||||
Os 94 testes dos módulos directamente relacionados também passaram após a
|
||||
integração do histórico e do campo preservado na ordem. PHPStan e Pint
|
||||
passaram. TypeScript, build e lint/formatação dos ficheiros deste âmbito
|
||||
passaram; a verificação global continua limitada pela formatação alheia
|
||||
indicada abaixo. HTTP 200 confirmado para início, demonstração de admissão
|
||||
e login, todos com o título inicial Sistema de Gestão de Compras (SGC).
|
||||
|
||||
O navegador continua a devolver `The browser access host is unavailable`.
|
||||
Permanecem pendentes a revisão visual pública, autenticada e de impressão e
|
||||
as interacções no navegador. As verificações HTTP e automatizadas não a
|
||||
substituem. Recomendação formal em etapas, excepções/dispensas, comunicação
|
||||
externa e cancelamento de ordens emitidas ficam fora desta entrega.
|
||||
Os três documentos locais de continuidade foram preservados sem os incluir
|
||||
no commit. A formatação global de `docs/compatibilidade.md`, alteração alheia,
|
||||
continua pendente; a verificação de âmbito exclui esse ficheiro.
|
||||
|
||||
## Incremento: relatório de conferência e impressão
|
||||
|
||||
As propostas e a visão única do processo incluem o acesso a
|
||||
|
||||
Reference in New Issue
Block a user