-- SONDAGEM: tabela `erros_motorista` NÃO existe em dev_gx_goldie (confirmado via grep
-- no codebase completo — nenhuma referência encontrada). Executar esta migration.
--
-- Dados históricos serão zero até o sistema começar a registrar erros.
-- Os endpoints de ErrosCarregamento retornam `disponivel: false` + lista vazia
-- enquanto não houver registros (feature flag no ErrosCarregamentoLaboratorio).

BEGIN;

CREATE TABLE IF NOT EXISTS erros_motorista (
    id                    SERIAL PRIMARY KEY,
    missao_logistica_id   INTEGER NOT NULL REFERENCES missao_logistica(id) ON DELETE CASCADE,
    conferente_usuario_id INTEGER,            -- quem fez a conferência (denormalizado p/ ranking)
    motorista_usuario_id  INTEGER,            -- motorista responsável (opcional se não identificado)
    tipo                  VARCHAR(40) NOT NULL, -- item_faltando | item_trocado | avaria_transporte | endereco_errado
    descricao             TEXT,
    pedido_id             INTEGER,
    romaneio_id           INTEGER,

    -- Multi-tenant sem DEFAULT — framework injeta via customerControl (feedback_block_columns)
    block_empresa_id      INTEGER NOT NULL,
    block_filial_id       INTEGER,
    block_usuario_id      INTEGER NOT NULL,

    data_cadastro         TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
    data_atualizacao      TIMESTAMP WITHOUT TIME ZONE,
    usuario_cadastro      VARCHAR(255),
    usuario_atualizacao   VARCHAR(255)
);

CREATE INDEX IF NOT EXISTS idx_erros_motorista_missao
    ON erros_motorista (missao_logistica_id);

CREATE INDEX IF NOT EXISTS idx_erros_motorista_conferente_data
    ON erros_motorista (conferente_usuario_id, data_cadastro);

CREATE INDEX IF NOT EXISTS idx_erros_motorista_tipo_data
    ON erros_motorista (tipo, data_cadastro);

CREATE INDEX IF NOT EXISTS idx_erros_motorista_empresa
    ON erros_motorista (block_empresa_id);

COMMIT;
