-- 好友赠送验收模式：打手接单后提交本人资料 → 后台确认加好友 → 冷却 N 小时后才能赠送并提交验收。
-- 发布、核销、大厅、抢单、押金、结算链路保持不变，仅验收前置流程不同。

ALTER TABLE work_orders
  ADD COLUMN IF NOT EXISTS acceptance_mode TEXT NOT NULL DEFAULT 'standard',
  ADD COLUMN IF NOT EXISTS gift_phase TEXT NOT NULL DEFAULT '',
  ADD COLUMN IF NOT EXISTS booster_material_json JSONB NOT NULL DEFAULT '{}'::jsonb,
  ADD COLUMN IF NOT EXISTS friend_added_at TIMESTAMPTZ,
  ADD COLUMN IF NOT EXISTS gift_available_at TIMESTAMPTZ,
  ADD COLUMN IF NOT EXISTS gift_cooldown_hours INTEGER NOT NULL DEFAULT 72;

COMMENT ON COLUMN work_orders.acceptance_mode IS '验收模式：standard 标准验收 / friend_gift 好友赠送（建单时从接单模板拷贝）';
COMMENT ON COLUMN work_orders.gift_phase IS '好友赠送阶段：material_required 待打手提交资料 / material_submitted 待后台确认好友 / friend_countdown 冷却中；gift_ready 为 gift_available_at 到点后的实时计算值，不落库';
COMMENT ON COLUMN work_orders.booster_material_json IS '打手本人资料：昵称/ID/区服/系统 + 主页截图';
COMMENT ON COLUMN work_orders.friend_added_at IS '后台确认加好友时间（冷却起点）';
COMMENT ON COLUMN work_orders.gift_available_at IS '可赠送时间 = 确认好友时间 + 冷却小时数';
COMMENT ON COLUMN work_orders.gift_cooldown_hours IS '好友赠送冷却小时数，建单时从模板拷贝';

-- 后台按“可赠送”筛选待办时走该部分索引，避免全表扫描。
CREATE INDEX IF NOT EXISTS idx_work_orders_gift_available
  ON work_orders (gift_available_at)
  WHERE acceptance_mode = 'friend_gift' AND status = 'in_progress';

ALTER TABLE work_product_rules
  ADD COLUMN IF NOT EXISTS acceptance_mode TEXT NOT NULL DEFAULT 'standard',
  ADD COLUMN IF NOT EXISTS gift_cooldown_hours INTEGER NOT NULL DEFAULT 72;

COMMENT ON COLUMN work_product_rules.acceptance_mode IS '验收模式：standard 标准验收 / friend_gift 好友赠送；启用 friend_gift 时不允许拼单';
COMMENT ON COLUMN work_product_rules.gift_cooldown_hours IS '好友赠送冷却小时数（默认 72 即 3 天），建单时拷贝到工单';
