Files
SGF/docs/SGF_FUNCTIONAL_ACCESS_PROPOSAL_20261030.md
2026-10-30 23:20:27 +02:00

16 KiB

Proposta única de acesso funcional — 30/10/2026

Estado posterior: pacote confirmado e aplicado em 30/10/2026. Ver relatório da operação, incluindo a adaptação estrita de 12 nomes em falta no catálogo da base, os 76 direitos acrescentados e os bloqueios públicos preservados. O manifesto JSON original foi conservado para conferência do SHA auditado. O texto abaixo é a proposta aprovada, não uma indicação de que a aplicação permanece pendente.

Estado: proposta para confirmação, zero alterações de acessos. Origem: pedido expresso do responsável para inventariar o pacote completo de desenvolvimento/teste; não é autorização de o aplicar. Uma confirmação futura refere-se ao conjunto exacto do manifesto, não a permissões universais ou a futuros módulos.

Destino e operação proposta

Conta existente #1 Osmane Nala — nala@tempo.co.mz. Organização Tempo #1, empresa Tempo, Lda. #1, unidade SEGI #1; public sgf_db, APP_ENV production. Confirmados no servidor em transacção READ ONLY. Não se equiparam organização, empresa e unidade. Não altera conta, palavra-passe, outras unidades, outras empresas ou dados de negócio.

Proposta: completar por inserção aditiva e auditada o conjunto de 82 direitos, sendo 25 da empresa e 57 exclusivamente de SEGI. Seis já existem; 76 seriam acrescentados, sem os recriar ou revogar. Não há curingas. Prévia à execução: revalidar release, guardas, identidade e concessões; apresentar qualquer diferença concreta antes de escrever. Fazer backup dos acessos/auditoria e validar o restauro possível; executar numa transacção com contexto fixo e idempotência, recusando alterações concorrentes incompatíveis. Preservar os bloqueios reais. Esta etapa apenas documenta o desenho.

Uma permissão de comando de ensaio atribuída à conta pública fica sem execução nesse ambiente quando a guarda exigir a demonstração. Definir o pacote integral de uma vez não converte sgf_db em base QA nem autoriza remover guardas, trocar APP_ENV, copiar fixtures, importar dados ou criar novas instâncias. Os esquemas pa_, ps_ e cb_* não existem na base pública conferida; esta proposta não os instala.

O que fica disponível onde

  • 36 direitos suportam operações já existentes na instalação pública: administração delimitada, clientes/serviços, prestações/rascunhos, preparação documental, instruções de pagamento do emitente, pré-visualização, confirmação interna sem validade fiscal, classificação contabilística e propostas/decisões de perfis fiscais. Criar apenas dados sintéticos identificados como teste e manter as versões/histórico. A concessão não assegura que todos os dados/documentos prévios estejam preenchidos nem elimina revisão independente.
  • 9 direitos abrem os percursos cuja consulta pública devolve aviso de indisponibilidade de ensaio; não dão acesso a documentos de teste inexistentes. Incluem Facturas, recebimentos, oficinas, custeio e orçamento/comparações industriais.
  • 37 direitos são operações ou entrada estritamente dependentes dos ambientes de demonstração, incluindo cálculo fiscal com perfil activado em ensaio. O servidor continua a recusá-las fora dos destinos permitidos. Nenhuma permissão transforma a emissão de teste em emissão fiscal real, nem reconciliação simulada em ligação bancária.
Âmbito Direitos exactos Utilização actual Fonte
Empresa (unidade NULL) company.view, company.edit Operação existente no público, com dados sintéticos Permissions.php
Empresa (unidade NULL) unit.create Operação existente no público, com dados sintéticos Permissions.php
Empresa (unidade NULL) access.manage Operação existente no público, com dados sintéticos Permissions.php
SEGI (unidade #1) unit.view, unit.edit Operação existente no público, com dados sintéticos Permissions.php
Empresa (unidade NULL) clients.view, clients.create, clients.edit, clients.manage Operação existente no público, com dados sintéticos ServicePermissions.php
Empresa (unidade NULL) services.view, services.create, services.edit, services.manage Operação existente no público, com dados sintéticos ServicePermissions.php
SEGI (unidade #1) service_drafts.view, service_drafts.create, service_drafts.edit, service_drafts.manage Operação existente no público, com dados sintéticos ServicePermissions.php
SEGI (unidade #1) billing_drafts.view, billing_drafts.create, billing_drafts.edit, billing_drafts.manage, billing_drafts.confirm_internal Operação existente no público, com dados sintéticos ServicePermissions.php
Empresa (unidade NULL) issuer_documents.view, issuer_documents.edit Operação existente no público, com dados sintéticos DocumentPreparation.php
Empresa (unidade NULL) client_documents.view, client_documents.edit Operação existente no público, com dados sintéticos DocumentPreparation.php
SEGI (unidade #1) draft_documents.view, draft_documents.edit Operação existente no público, com dados sintéticos DocumentPreparation.php
Empresa (unidade NULL) document_preview.configure Operação existente no público, com dados sintéticos DocumentPreview.php
Empresa (unidade NULL) catalogue_accounting.view, catalogue_accounting.propose, catalogue_accounting.approve Operação existente no público, com dados sintéticos CatalogueAccounting.php
Empresa (unidade NULL) service_fiscal.view, service_fiscal.propose, service_fiscal.approve Operação existente no público, com dados sintéticos ServiceFiscal.php
SEGI (unidade #1) service_fiscal.calculate Cálculo demonstrável com perfil activado em ensaio; sem activação pública ServiceFiscal.php
Empresa (unidade NULL) invoice_series.propose, invoice_series.approve Só execução na demonstração própria ServiceInvoicing.php
SEGI (unidade #1) service_invoices.view No público, apenas informação/aviso de bloqueio ServiceInvoicing.php
SEGI (unidade #1) service_invoices.issue, service_invoices.correction_request Só execução na demonstração própria ServiceInvoicing.php
SEGI (unidade #1) service_receivables.view No público, apenas informação/aviso de bloqueio ServiceReceivables.php
SEGI (unidade #1) service_receivables.prepare, service_receivables.confirm, service_receivables.allocate, service_receivables.reconcile, service_receivables.correction_request, service_receivables.correction_approve Só execução na demonstração própria ServiceReceivables.php
SEGI (unidade #1) workshop.view No público, apenas informação/aviso de bloqueio WorkshopWorkflow.php
SEGI (unidade #1) workshop.open, workshop.assign, workshop.authorize, workshop.record, workshop.verify Só execução na demonstração própria WorkshopWorkflow.php
SEGI (unidade #1) workshop_billing.view No público, apenas informação/aviso de bloqueio WorkshopBilling.php
SEGI (unidade #1) workshop_billing.prepare, workshop_billing.review, workshop_billing.generate Só execução na demonstração própria WorkshopBilling.php
SEGI (unidade #1) workshop_corrections.view No público, apenas informação/aviso de bloqueio WorkshopCorrections.php
SEGI (unidade #1) workshop_corrections.request, workshop_corrections.review, workshop_corrections.apply Só execução na demonstração própria WorkshopCorrections.php
SEGI (unidade #1) direct_costs.view No público, apenas informação/aviso de bloqueio DirectCosts.php
SEGI (unidade #1) direct_costs.prepare, direct_costs.validate Só execução na demonstração própria DirectCosts.php
SEGI (unidade #1) industrial_costs.view No público, apenas informação/aviso de bloqueio IndustrialCosts.php
SEGI (unidade #1) industrial_costs.prepare, industrial_costs.validate Só execução na demonstração própria IndustrialCosts.php
SEGI (unidade #1) industrial_budgets.view No público, apenas informação/aviso de bloqueio IndustrialBudgets.php
SEGI (unidade #1) industrial_budgets.prepare, industrial_budgets.validate Só execução na demonstração própria IndustrialBudgets.php
SEGI (unidade #1) industrial_budget_comparisons.view No público, apenas informação/aviso de bloqueio IndustrialBudgets.php
SEGI (unidade #1) industrial_budget_comparisons.prepare Só execução na demonstração própria IndustrialBudgets.php
SEGI (unidade #1) purchasing_budget.view, purchasing_budget.create, purchasing_budget.approve, purchasing_budget.record, purchasing_budget.consume, purchasing_budget.reinforcement.propose, purchasing_budget.reinforcement.review Só execução na demonstração própria BudgetWorkspace.php
SEGI (unidade #1) supplier_payables.view Só execução na demonstração própria SupplierPayables.php

Demonstrações e identidades

Destino Percursos Autoridade
http://127.0.0.1:8002/avaliar Oficinas, custeio, orçamento industrial, emissão/recebimentos de teste Identidades sintéticas existentes de proprietário, preparação, validação, técnico e verificação; mantém a separação exigida pelo percurso
http://127.0.0.1:8003 Controlo orçamental comum de Compras Contexto/contas sintéticos próprios de preparação, validação, operação e consulta; credenciais privadas existentes, não incluídas no relatório
http://127.0.0.1:8006/demo Obrigações/pagamentos/afectações no SGF Entrada por funções sintéticas existentes, contexto QA e pa_access próprios
http://127.0.0.1:8005/demo Mesmo percurso no Compras autónomo Identidades/contexto próprios de Compras; não é a conta Tempo/SEGI da base pública

A conta pública não é silenciosamente replicada para essas bases. IDs #1 iguais em bases diferentes não representam identidade ou autorização comum. Para a primeira passagem autónoma não se depende de pessoas reais: alternar funções de ensaio existentes. Poder preparar e aprovar na conta de desenvolvimento não autoriza aprovar o seu próprio facto; os controlos de actor/pessoa distintos continuam efectivos.

Obrigações/pagamentos usam dois níveis, não direitos inventados como supplier_payables.prepare ou supplier_payments.approve. O gateway SGF é supplier_payables.view em SEGI. O segundo nível é a tabela pa_access, apenas nos contextos sintéticos próprios. Conjunto exacto existente: view, prepare, validate, payments_view, payment_prepare, payment_confirm, allocation_prepare, allocation_confirm. Distribuição a preservar:

  • Preparação: view, prepare, payments_view, payment_prepare, allocation_prepare.
  • Validação: view, validate, payments_view, payment_confirm, allocation_confirm.
  • Consulta: view, payments_view.

Estas acções não seriam inseridas na instalação pública. Não se cria person mapping para a conta real nem se fundem funções. A aprovação do pacote geral não habilita o percurso público de obrigações e pagamentos; apenas elimina pedidos fragmentados de direitos do catálogo SGF e conserva o catálogo completo de ensaio como referência.

Limites preservados e lacunas

Emissão fiscal real permanece bloqueada em ServiceInvoicing.guard/ServiceCalculation.isolated e TestingDatabaseGuard. O nome service_invoices.issue refere-se ao comando existente de teste. Não existe neste pacote uma autorização de emissão real. Séries e regras da emissão de teste exigem igualmente a guarda e as decisões prévias.

Nenhuma operação bancária é ligada ou executada. service_receivables.reconcile corresponde a reconciliação simulada; registar instruções bancárias no emitente é preparação documental, não movimentação de dinheiro. As correcções de recebimentos já existentes são distintas das correcções de afectações a fornecedores, que continuam não implementadas. Propostas/aprovações fiscais não activam perfis reais; a única activação existente é proofActivation, protegida para ensaio e sem endpoint de activação real.

Stock e as secções contabilísticas de apresentação não têm novos direitos operacionais a inventar: usam as condições de visibilidade existentes, incluindo company.view. Razão, lançamentos, fecho, stock SGF integrado, facturas-recibo, recibos fiscais e notas de crédito não se tornam funcionalidades entregues por aparecerem no menu. Não foram incluídos direitos de módulos futuros ou de outros produtos.

A interface genérica de Acessos actualmente lista só os seis direitos administrativos de Permissions.COMPANY/UNIT; manage nas quatro áreas de Services permite gestão delimitada dessas áreas, não um administrador universal. O pacote completo exige provisão específica auditada se confirmado; não cabe no comando identity:provision local, que continua protegido e sem desactivar a sua guarda. A ausência de configuração universal pela interface é uma lacuna do produto, não uma regra organizacional nova.

Evidência e próxima acção

Conferidos 21 ficheiros de autorização/regras/guardas da instalação publicada contra os locais por hash normalizado: todos iguais. O manifesto preserva a release verificada, identidade, âmbito, cada direito, fonte, utilização e se já existe. As consultas administrativas foram READ ONLY e não revelaram credenciais. Não foi usada uma sessão autenticada da conta para comandos de teste, nem se alterou a conta.

Depois de confirmar este pacote de 82 direitos, mantendo as guardas e contextos acima, aplicar numa operação única, revalidar o delta, comparar a navegação antes/depois e verificar a sessão pública. Ensaios financeiros continuam nas bases sintéticas, com segunda identidade para decisões independentes. Não há nesta proposta publicação, código funcional novo, alteração da página inicial, aceitação de módulos ou checkpoint de encerramento.