-- Migration 003: Seed do canal de webhook WMS + config de entrada para dev_gx_goldie
-- Fase 2 — Receiver de entrada
--
-- O receiver genérico (Api/Handlers/Webhooks/InboundHandler.php) já existe e
-- não é alterado por esta feature. Este seed apenas REGISTRA um canal para a
-- empresa de desenvolvimento (empresa_id=7 — mesma empresa usada pelo
-- integration test da Fase 1, ver tests/integration/IntegracaoWms/ConfigIntegracaoTest.php).
--
-- Convenção de canal: 'wms-{empresaId}'. Desde o fix M1 (Fase 3, ver
-- 10-backend-fase3.md) o InboundHandler repassa a linha autenticada do canal
-- ao target_lab (`new $targetLab($payload, $endpoint)`) e o tenant
-- autoritativo é o block_empresa_id DESTA linha — o sufixo do nome é só
-- convenção/fallback legado. Se o sufixo divergir do block_empresa_id, o
-- ReceberOrdemLaboratorio rejeita (fail-closed): mantenha-os consistentes.
--
-- secret É UM VALOR DE DESENVOLVIMENTO — trocar antes de qualquer uso real
-- (rotação de secret = UPDATE nesta linha, sem deploy — techplan §Riscos item 2).
--
-- ON CONFLICT: idempotente, não sobrescreve secret já rotacionado em produção.

-- NOTA: 'block' PRECISA ficar populado (> 0). O lookup do canal
-- (WebhookEndpointSonda::findByChannel) é global — independe da sessão
-- ambiente, fix pós-Fase 3 — mas exige 'block > 0' como guard de
-- soft-delete/linha mal configurada. 'block' leva o mesmo valor de
-- block_empresa_id/customer_id (a empresa é o próprio tenant do canal).
INSERT INTO webhook_endpoints (
    channel, description, secret, signature_header, signature_algo,
    target_lab, payload_mapper, active, customer_id, block_empresa_id, block
) VALUES (
    'wms-7',
    'Receiver de ordens WMS — empresa de desenvolvimento (dev_gx_goldie)',
    'dev-secret-troque-antes-de-usar-de-verdade',
    'X-Signature',
    'hmac_sha256',
    'GalaxiaMissoes\Logistica\sinais\IntegracaoWms\Laboratorios\ReceberOrdemLaboratorio',
    'GalaxiaMissoes\Logistica\sinais\IntegracaoWms\Webhooks\WmsPayloadNormalizer',
    1,
    7,
    7,
    7
)
ON CONFLICT (channel) DO NOTHING;

-- Repara ambientes onde a migration já rodou antes da coluna 'block' entrar
-- no INSERT acima (mesma lição do B2 da Fase 1 — ALTER/UPDATE idempotente).
UPDATE webhook_endpoints SET block = block_empresa_id
 WHERE channel = 'wms-7' AND block IS NULL;

-- Liga ativo_entrada=1 para a mesma empresa de dev (defesa em profundidade: o
-- ReceberOrdemLaboratorio confere esta flag além da existência do canal —
-- AC1.4). Upsert manual (a tabela não tem ON CONFLICT único aqui reaproveitável
-- fora do índice de empresa já criado na migration 001).
INSERT INTO integracao_wms_config (block_empresa_id, provedor_saida, ativo_saida, ativo_entrada, contrato_versao)
VALUES (7, 'galpao', 1, 1, 'v1')
ON CONFLICT (block_empresa_id) DO UPDATE SET ativo_entrada = 1;
