Núcleos de execução distribuídos com Compras
Estes ficheiros são artefactos fixados dos núcleos comuns de orçamento e obrigações, cuja origem é sgf-tempo/packages. Não são outra implementação financeira mantida independentemente.
O Compras carrega estes artefactos em todos os ambientes, incluindo produção, sem precisar da pasta vizinha do SGF. As configurações COMMON_BUDGET_PATH e COMMON_PAYABLES_PATH continuam disponíveis para instalações que forneçam os mesmos pacotes por outro mecanismo.
runtime-manifest.json identifica cada ficheiro distribuído por SHA-256. Conferir com composer run runtime:check. Actualizações devem vir da origem comum, passar os testes dos adaptadores e renovar o manifesto; não editar os artefactos directamente nem aplicar formatação que altere os bytes aceites.
O empacotamento não executa migrações, activa pagamentos, cria direitos ou transporta dados. As funcionalidades sintéticas ainda presentes nos núcleos conservam o seu âmbito até à implementação da respectiva operação comercial. Não distribuir configurações privadas ou bases de avaliação com o produto.
Recepção de eventos para integração
integration/bootstrap.php carrega um módulo independente de Laravel, com PHP/PDO, para consumir sgc.warehouse.fulfilment-feed.v1. Não integra os18artefactos financeiros fixados nem altera a instalação do SGF. WarehouseFeed valida o contrato; WarehouseInbox guarda os factos e o cursor atomicamente; WarehousePull percorre páginas com limites e retoma pelo ponto persistido.
O host fornece uma ligação PDO SQLite/PostgreSQL em modo de excepções, a identificação estável da instalação de origem, empresa de origem, empresa local e geração do leitor. Estes vínculos devem vir da configuração autorizada do host, nunca de parâmetros livres recebidos do exterior. Os identificadores de empresa da origem e do destino são independentes. Diferentes leitores da mesma origem/empresa local partilham a deduplicação dos factos e conservam checkpoints separados. Uma geração nova de leitor permite reler uma origem após mudança de âmbito, preservando o checkpoint anterior; não representa outra conta de utilizador.
A instalação usa WarehouseInbox::schema() como entrada explícita para a migração do host. O construtor e o processamento não criam tabelas. Instalação, privilégios mínimos, backup, configuração de acesso e transporte autenticado pertencem ao procedimento do host; nenhum destes passos foi executado em instalações persistentes por este incremento.
Depois da preparação autorizada do destino, a ligação no host usa:
require $packageDirectory.'/integration/bootstrap.php';
$inbox = new Tempo\Integration\WarehouseInbox(
$dedicatedPdo, $configuredSourceId, $sourceTenantId,
$destinationTenantId, $configuredReaderGeneration,
);
$pull = new Tempo\Integration\WarehousePull($inbox);
$result = $pull->run($fetchAuthenticatedPage, maxPages: 10, pageSize: 50);
$fetchAuthenticatedPage é uma função do host que recebe (?string $cursor, int $limit) e devolve a página JSON descodificada do endpoint configurado /stock/integracao/entregas, com a conta e contexto autorizados. Deve verificar origem, autenticação e resposta HTTP antes de devolver dados; o módulo não escolhe URLs, credenciais ou destinatários. Excepções interrompem a leitura e preservam as páginas já aceites. has_more=true no resultado indica continuação pendente pelo limite do lote, não conclusão do processamento.
Os eventos guardados são documentos históricos reutilizáveis e consultáveis por fact($idempotencyKey). Não são comandos para lançar stock, aprovar compras ou facturar. Confirmações exigem a entrega original reconciliada e não criam outra saída. O SHA-256 confere o conteúdo emitido pelo produtor, sem substituir a autenticação do canal. O adaptador não cria projecções de negócio nem confirmações funcionais no sistema de origem. Testes e provas em tests/Unit/WarehouseInboxTest.php, tests/Feature/WarehouseExchangeTest.php e scripts/work-context-pg-check.php --inbox, só com dados sintéticos/base descartável.
Consulta HTTP autenticada
WarehouseHttpSource implementa a função de consulta para WarehousePull, usando PHP cURL e a sessão já autorizada na origem. O host fornece a origem HTTPS, a empresa e uma função que obtém o cabeçalho Cookie da sessão por canal protegido. A sessão deve ter o contexto Compras internas seleccionado quando aplicável; as mesmas verificações de conta, perfis, empresa e contexto da rota continuam activas. O cliente não faz login, selecciona contexto, cria contas, outorga permissões ou armazena credenciais.
$source = new Tempo\Integration\WarehouseHttpSource(
$configuredHttpsOrigin, $sourceTenantId, $sessionCookieProvider,
);
$result = $pull->run($source, maxPages: 10, pageSize: 50);
O cliente consulta apenas GET /stock/integracao/entregas dentro da origem configurada. Cursor/limite são codificados como parâmetros, e as credenciais seguem apenas no cabeçalho, nunca na URL. A origem não admite userinfo, query, fragmento, escapes de caminho ou travessia. Não segue redireccionamentos. HTTPS confere certificado/hostname; a opção allowLoopbackHttp=true só permite HTTP em127.0.0.1 ou[::1] para desenvolvimento explícito, sem proxy nesse percurso local. O ensaio8005 usa esta excepção; não representa prova de certificados TLS de um destino comercial.
Há limites técnicos configuráveis no construtor:15segundos totais,5de ligação e8MiB de resposta por defeito; tamanho é limitado também após descompressão. A resposta exige HTTP200, JSON e contrato/empresa/hash válidos. A função de credenciais é consultada novamente em cada pedido e a informação de depuração oculta-a. WarehouseTransportFailure oferece category/httpStatus/retryable(), sem corpo remoto, cookies ou erro original do fornecedor; falhas de acesso/cursor não desencadeiam reset, nova conta ou recuperação automática de autoridade. retryable é um diagnóstico técnico, não uma tentativa automática.
A instalação permanente, configuração pela administração do host, armazenamento protegido da sessão, renovação após expiração e uma eventual autenticação técnica restrita ainda dependem dos seus percursos próprios. Esta implementação não oferece tokens permanentes, login automático, serviço agendado ou projecção de stock/contabilidade no destinatário. Registar essas lacunas ao entregar; preservar os perfis/aprovações e a instalação real do SGF. Prova local: scripts/warehouse-http-source-http.mjs obtém a sessão sintética existente e passa-a por stdin privado ao processo PHP; o receptor usa só SQLite em memória e a prova não grava a credencial.