Files
compras/docs/consultas-adjudicacao-sgf.md
T
2026-11-02 20:27:11 +02:00

13 KiB

Consultas, cotações e adjudicação — entrega para revisão

02/11/2026. Percurso implementado e confirmado em cópias isoladas; demonstração 8039 habilitada para preparação/avaliação/leitura, com adjudicação bloqueada pela composição de identidades autorizada. O proprietário escolheu preparar sem criar quarta conta e autorizou o mapa exacto de novos direitos. Essa escolha foi respeitada; não se reduziu o mínimo de avaliadores nem se tornou Consulta num decisor.

Destino, estado e candidata

Elemento Estado conferido
Demonstração existente http://127.0.0.1:8039, pasta C:\laragon\data\sgf-tempo\run\modular-regression-2576427d1939\development-app
Base/contexto sgf_modules_dev_2576427d1939, porta 55439, tenant 1 / empresa 1 / unidade 1, módulo Compras, opção procurement.internal
Origem reutilizada Requisição ID 1, 100 MZN, aprovada, versão 3, três eventos originais e reserva única preservados
Dados preparados Três fornecedores exclusivamente sintéticos, três cotações de 100/110/120 MZN e uma avaliação elegível por cotação; sem contactos reais
Estado em 8039 Comparação factual legível, classificação/seleccionabilidade incompletas: faltam segundo avaliador elegível e confirmador independente; zero propostas de adjudicação e zero confirmações
Candidata final OPERATIONAL-CANDIDATE-040fb0cb67a77d61
ZIP privado 040fb0cb67a77d61.zip
SHA-256 ZIP dfb122bc4532ce730d500ddec0112fe4d93cb1197fa5aef21b576f4049e7312a
SHA-256 manifesto 040fb0cb67a77d618011bc7ab365c53d3d4b1a787c4c0c0a2d54f315b3658e58
Implantação final de código na demonstração 040fb0cb67a77d618011bc7a; integra a correcção de leitura da candidata 166e397e3ca63f02
SGF real 0.1.1, sem instalação, configuração, acessos ou base alterados; não existe implantação 8041

O ecrã é acessível pelo detalhe da requisição aprovada e directamente em /purchasing/sourcing/1, depois de entrar com uma das contas anteriores e seleccionar Compras no contexto autorizado. Os campos de data/local de entrega da proposta ficam por preencher: são requisitos da adjudicação existente de Compras, não foram presumidos para a empresa e não foi criada proposta na demonstração. Valores logísticos de testes aparecem apenas nas cópias sintéticas e em pedidos recusados, nunca numa decisão real.

Mapeamento e reutilização de Compras

Processo existente Reutilização e adaptação
QuotationController::store e QuotationPricing Cobertura de todas as linhas da origem, quantidade e imposto preservados, preços/condições/validade/prazo, desconto antes do imposto. O motor comum Tempo\Purchasing\Economic\QuotationPricing é utilizado directamente; não se criou outro motor monetário.
ComparisonPolicy e ProposalComparison A candidata transporta os defaults existentes: 3 fornecedores, 2 avaliadores, pesos preço/qualidade/entrega/histórico/pagamento 40/20/15/15/10. Não são uma nova política presumida para a Tempo. O processo guarda a política aplicada; avaliações de versões antigas ou de intervenientes cuja elegibilidade foi revogada não qualificam a comparação actual.
ProposalScoring A mesma classe partilhada calcula pontuações e melhores propostas. Sem IA, rede ou consumo de serviços externos.
PurchaseWorkflow::select/canDecide/decide Preservadas origem aprovada, selecção entre melhores propostas, justificação, data/local previstos, exclusão do requerente e confirmação por outra identidade. Proposta guarda comparação completa, fingerprint e versão. Nesta entrega só está integrado o primeiro nível; acima desse limite é sinalizada cadeia pendente.
BudgetWorkflow / BudgetControl e reserva da requisição Usada a origem financeira já mapeada, dotação aprovada e a base com/sem imposto existente. Nenhuma chamada nova a reserve/award/commit/consume/release. Valor divergente é sinalizado para adaptação orçamental ainda não integrada; não se inventa reforço ou libertação.
Autorizações/transacções SGF Reutilizados sessão, CSRF, CompanyContext, Permissions, RuntimeContext e Port::atomic: empresa/utilizador/origem bloqueados, contexto e direitos revalidados também em repetições.

O novo núcleo é packages/purchasing/src/Sourcing.php. O adaptador, rotas e ecrã estão em integrations/sgf/sourcing. Os serviços/modelos activos de Compras autónomo não foram alterados por este incremento; a incorporação não transporta a base de Compras. O novo catálogo sintético é uma fonte local autorizada de selecção, não uma importação/reconciliação de fornecedores por igualdade de nome. Cadastro completo, revisão documental, conflitos/admissões/recomendações formais e ligação a cadastros reais continuam fora da cobertura declarada deste recorte sintético.

Acessos efectivamente acrescentados

Somente após a resposta explícita do proprietário, em 1/1/1:

Conta existente Acréscimos
Preparador ID 1 purchasing_sourcing.prepare
Revisor ID 2 purchasing_sourcing.evaluate, purchasing_sourcing.propose
Consulta ID 3 Nenhum; conserva a leitura anteriormente autorizada

Nenhuma conta persistente foi criada. purchasing_sourcing.confirm foi acrescentada ao catálogo, mas não concedida a qualquer conta da demonstração. A quarta identidade sugerida foi recusada pelo proprietário e não foi criada. A confirmação usa ainda a atribuição ao departamento da origem; não basta acrescentar uma permissão isolada.

A outorga inicial específica foi auditada com a identidade administradora existente e motivo da confirmação do proprietário; não houve herança automática de perfis ou mudança de direitos anteriores. A administração nativa continua a exigir que o gestor detenha a permissão que outorga/revoga. Como ID 1 não recebeu evaluate/propose, a gestão desses direitos pelo seu ecrã administrativo mantém essa restrição; não se concederam direitos operacionais adicionais para a contornar. A revogação nos testes foi exercitada por fixtures privilegiadas somente nas cópias, e a sua eficácia nos pedidos/repetições foi conferida no servidor.

Schema e actualizações

Migração aditiva própria sourcing revisão 1:

  • Quatro tabelas: ss_suppliers, ss_processes, ss_events, ss_commands.
  • FKs de empresa/unidade/origem, unicidade por contexto/requisição e contexto/actor/chave; eventos/recibos imutáveis; origem e decisão final protegidas; versões avançam uma vez.
  • CHECK do catálogo de permission_grants ampliado com os quatro nomes unitários. Isso não concede acessos.
  • Nova entrada imutável sourcing em sgc_installations; a entrada original internal-requisitions revisão 2 não é reescrita. A guarda orçamental aceita a extensão apenas com assinatura e hash conhecidos e válidos.

O pacote inclui scripts/sgf-sourcing-install.php: plan só lê; migrate exige destino, manifesto, backup/hash, operador e manutenção conferidos. A migração não cria perfis, fornecedores ou contas, não concede direitos e não habilita o módulo. Escreve recibo privado da transição exacta, que o actualizador exige ao mudar os drivers de schema. Receitas de outro host/manifesto ou ausentes não autorizam transição. O conteúdo sintético e as credenciais não fazem parte do ZIP.

Não foram executados GRANT/REVOKE SQL, criadas roles ou promovida a ligação normal. A demonstração reutiliza a role proprietária que já tinha; essa limitação permanece explícita. O plano SQL do SGF real não foi aplicado, nem este incremento declara pronto o mapa SQL mínimo dos quatro novos objectos para uma instalação cliente restrita.

Resultados e provas

Prova Resultado
Núcleo 12 controlos: mínimos, classificação comum, exclusão do requerente, proponente diferente do confirmador, cotação alterada/expirada, revogação, base exacta e fecho imutável.
Cópia isolada final 6 grupos de instalação/migração, 11 de HTTP/concorrência e 8 de integridade/recuperação. Inclui falha de migração com rollback, replay, CLI empacotada, recibo exigido, dois processos concorrentes reais, versões conflituantes e confirmações concorrentes com só um resultado final.
Falha depois de gravar o evento Estado, evento e recibo revertidos na mesma transacção; nova tentativa prossegue sem duplicação.
Versões e revogação Alterar cotação invalida avaliações anteriores e impede confirmação de proposta obsoleta; revogação afecta sessões existentes e replay.
Recuperação Reversão de código preservou a adjudicação na base da cópia; estado pós-confirmação arquivado. Separadamente, restauro PostgreSQL do backup anterior reconciliou requisição/reserva/contas/direitos e ausência das tabelas/ledger da extensão. Base temporária eliminada depois dos testes.
8039 — HTTP Preparação/leitura das três cotações e avaliações; Consulta recusado em todas as mutações; falta do segundo avaliador sinalizada; valor diferente da reserva sinalizado; nenhum adjudicatário criado.
8039 — preservação Contas, requisição, reserva/consumo e direitos anteriores preservados; exactamente três acréscimos autorizados.
Relatório agregado Candidata, hashes, ficheiros afectados, implantação final e estado parcial da demonstração.

A confirmação completa ocorreu apenas em cópias descartáveis, com identidade e atribuição departamental de fixture. Não se afirma confirmação completa em 8039. Não se executaram cenários destrutivos/concorrentes na demonstração persistente. A cópia foi adaptada à sua identidade física exacta sem desligar as guardas; dependências e autoloader foram copiados. Regressões integrais aceites de Compras/navegação/requisições não foram repetidas; as provas anteriores permanecem válidas e referenciadas. Revisão visual continua separada; nenhum navegador utilizado.

Recuperação concreta da demonstração

Antes da primeira escrita, identidade física e contexto foram conferidos. Backup privado em C:\laragon\data\sgf-tempo\run\modular-regression-2576427d1939\private\sourcing-recovery\before.dump, SHA-256 cb9d55db5fee08cb36e3af4c962556b465be9e14071b5c3505c834d2ef4d7bcd, com índice conferido. baseline.json conserva hashes/contas/direitos anteriores; applied.json a primeira aplicação da extensão; final-code.json a aplicação final. Os journals de todas as versões/cópias de ficheiros e bundles anteriores estão em development-app/storage/app/private/module-deployments.

  1. Fechar só o servidor 8039, confirmar processo/pasta; nunca parar o cluster 55432 nem usar sgf.ps1 stop.
  2. Falha da migração antes do commit: rollback transaccional, conferir catálogo/tabelas/ledger antes de repetir; resultado incerto exige inspecção, não down.
  3. Falha de código: conservar manutenção e usar o ID/journal correcto da CLI de rollback. A actualização de refinamentos finais foi apenas de código, com hashes dos dados conferidos antes/depois. Não estreitar CHECK nem apagar ledger por arrasto.
  4. Voltar ao bundle 166 depois da extensão de schema não reabre o percurso sozinho: a sua guarda conhece apenas a assinatura anterior. Manter fechado até recuperar compatibilidade/schema; código e dados são recuperações distintas. Esse comportamento foi ensaiado nas cópias.
  5. Para dados/schema, preservar primeiro o estado actual, restaurar o backup numa base alternativa e reconciliar eventos/cotações/direitos posteriores ao corte antes de qualquer troca de ligação. Os resets usados nos testes atingiram só cópias descartáveis. Não restaurar por cima de 8039 ou do SGF real como simples operação de código.

Pendências para revisão

  • Identidades: mantendo três contas, requerente excluído e Consulta sem decisão, não existe segunda avaliação/confirmador elegível. A opção do proprietário foi preparar sem criar outra conta; não se pede nem presume nova autorização por continuidade.
  • Orçamento: resize da reserva, reforço, libertação, compromisso, consumo, rejeição/cancelamento com efeito financeiro não integrados neste incremento. Valores divergentes são sinalizados.
  • Aprovação: a cadeia acima do primeiro limite é bloqueada até integrar os níveis existentes; não é reduzida a uma confirmação simples.
  • Configuração/cadastros: defaults de comparação são compatibilidade da origem, preservados no processo; falta parametrização comercial desse recorte no SGF, cadastro/reconciliação real e procedimentos formais adicionais da origem. Não é entrega comercial integral.
  • Administração/SQL: delegação nativa restrita e owner/runtime da demonstração continuam como descrito; implantação cliente exige desenho/revisão próprios, sem reutilizar as credenciais/contas/dados sintéticos.
  • Fora do incremento: encomendas, recepção, pagamentos, contactos externos, contratação para terceiros, implantação real e revisão visual. Não foram introduzidos.