-- =====================================================================================
-- Add send_status to express_notifications
--
-- 目的：区分“物流状态（status_code）”与“投递处理状态（send_status）”。
-- - status_code：业务/物流状态（SHIPPED/OUT_FOR_DELIVERY/...）
-- - send_status：投递状态（null=待发送, processing, retrying, success, failed, no-targets）
--
-- 创建日期：2026-03-09
-- =====================================================================================

BEGIN;

ALTER TABLE public.express_notifications
  ADD COLUMN IF NOT EXISTS send_status VARCHAR(32) NULL;

CREATE INDEX IF NOT EXISTS idx_express_notifications_send_status
  ON public.express_notifications(send_status);

-- 兼容旧实现：历史上 push-server consumer 使用 status_code 存投递状态。
-- 迁移后 consumer 改读写 send_status，为避免把旧的 success/failed 等记录当成 pending 再次推送，做一次安全回填。
UPDATE public.express_notifications
SET send_status = status_code
WHERE send_status IS NULL
  AND status_code IN ('processing', 'retrying', 'success', 'failed', 'no-targets');

COMMIT;
