CREATE TABLE IF NOT EXISTS solicitacoes_os_publicas (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    protocolo VARCHAR(50) NOT NULL,
    token_publico CHAR(64) NOT NULL,
    nome VARCHAR(150) NOT NULL,
    email VARCHAR(180) NOT NULL,
    telefone VARCHAR(60) NOT NULL,
    setor VARCHAR(150) NOT NULL,
    tipo_equipamento VARCHAR(80) NOT NULL,
    marca VARCHAR(100) NULL,
    modelo VARCHAR(150) NULL,
    patrimonio VARCHAR(80) NULL,
    numero_serie VARCHAR(120) NULL,
    vnc VARCHAR(120) NULL,
    defeito TEXT NOT NULL,
    anexo VARCHAR(500) NULL,
    anexo_nome_original VARCHAR(255) NULL,
    anexo_mime VARCHAR(100) NULL,
    anexo_tamanho BIGINT UNSIGNED NOT NULL DEFAULT 0,
    anexo_hash CHAR(64) NULL,
    status VARCHAR(40) NOT NULL DEFAULT 'AGUARDANDO_ENTREGA',
    data_solicitacao DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    data_recebimento DATETIME NULL,
    recebido_por VARCHAR(150) NULL,
    os_id INT NULL,
    motivo_cancelamento VARCHAR(500) NULL,
    cancelado_por VARCHAR(150) NULL,
    data_cancelamento DATETIME NULL,
    ip_origem VARCHAR(45) NULL,
    user_agent VARCHAR(500) NULL,
    UNIQUE KEY uk_sol_publica_protocolo (protocolo),
    UNIQUE KEY uk_sol_publica_token (token_publico),
    UNIQUE KEY uk_sol_publica_os (os_id),
    INDEX idx_sol_publica_status_data (status, data_solicitacao),
    INDEX idx_sol_publica_patrimonio (patrimonio),
    INDEX idx_sol_publica_nome (nome),
    CONSTRAINT fk_sol_publica_os
        FOREIGN KEY (os_id)
        REFERENCES ordens_servico(id)
        ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
