-- 087 — Reapontar READ/LIDO de "enviado" para "lido"
--
-- O FURO (achado ao conferir /mappings após o deploy da leitura, 18/08/2026):
-- a seed de status_mappings nasceu ANTES de existir a categoria "lido", então
-- os dois status que MAIS obviamente significam leitura — READ e LIDO —
-- estavam mapeados para "enviado". E o mapa do admin tem PRECEDÊNCIA sobre os
-- padrões embutidos de normalizeStatus (server/reportStatus.ts):
--
--   if (mappingLookup.has(upper)) {
--     if (mapped === "lido") return { read: true, ... };
--     return { status: mapped, read: false };   // READ→enviado caía AQUI
--   }
--
-- Resultado: no relatório de operador (wa_off/wa_hub), "READ" e "LIDO" davam
-- read=false — a leitura era engolida pelo próprio mapa que deveria reconhecê-la.
-- Provado: normalizeStatus("READ", {READ:enviado}) = read:false; sem o mapa,
-- read:true. A funcionalidade nova existia, mas os dados a desviavam.
--
-- CORREÇÃO: apontar os dois para "lido". Seguro para cobrança — "lido" também
-- conta como "enviado" no eixo de envio (normalizeStatus devolve
-- status="enviado" + read=true), então sentCount/estorno não mudam; só a
-- leitura passa a ser capturada.
--
-- IDEMPOTENTE e conservador: só toca linhas que ainda estão em 'enviado' (o
-- estado do seed antigo). Se o admin tiver mudado alguma à mão para outro
-- valor, este UPDATE não mexe.

BEGIN;

UPDATE status_mappings
SET normalized_status = 'lido'
WHERE original_status IN ('READ', 'LIDO')
  AND normalized_status = 'enviado';

COMMIT;
