SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 三张任务热表只在末尾追加定长字段和一个可空 JSON，MySQL 8 使用 INSTANT 元数据变更，
-- 避免迁移期间复制整表；INSTANT 不与显式 LOCK 子句组合，执行时只持有短暂 metadata lock。
ALTER TABLE task_definitions
  ADD COLUMN reward_type VARCHAR(32) NOT NULL DEFAULT 'wallet_asset' COMMENT '奖励类型：wallet_asset/resource/resource_group',
  ADD COLUMN reward_resource_id BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励 ID',
  ADD COLUMN reward_resource_group_id BIGINT NOT NULL DEFAULT 0 COMMENT '资源组奖励 ID',
  ADD COLUMN reward_quantity BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励数量',
  ADD COLUMN reward_duration_ms BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励有效期毫秒，0 为永久',
  ADD COLUMN reward_items_json JSON NULL COMMENT '钱包资源目录解析出的奖励展示快照',
  ALGORITHM=INSTANT;

ALTER TABLE user_task_progress
  ADD COLUMN reward_type VARCHAR(32) NOT NULL DEFAULT 'wallet_asset' COMMENT '奖励类型快照',
  ADD COLUMN reward_resource_id BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励 ID 快照',
  ADD COLUMN reward_resource_group_id BIGINT NOT NULL DEFAULT 0 COMMENT '资源组奖励 ID 快照',
  ADD COLUMN reward_quantity BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励数量快照',
  ADD COLUMN reward_duration_ms BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励有效期快照',
  ADD COLUMN reward_items_json JSON NULL COMMENT '奖励展示快照',
  ALGORITHM=INSTANT;

ALTER TABLE task_reward_claims
  ADD COLUMN reward_type VARCHAR(32) NOT NULL DEFAULT 'wallet_asset' COMMENT '奖励类型快照',
  ADD COLUMN reward_resource_id BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励 ID 快照',
  ADD COLUMN reward_resource_group_id BIGINT NOT NULL DEFAULT 0 COMMENT '资源组奖励 ID 快照',
  ADD COLUMN reward_quantity BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励数量快照',
  ADD COLUMN reward_duration_ms BIGINT NOT NULL DEFAULT 0 COMMENT '单资源奖励有效期快照',
  ADD COLUMN reward_items_json JSON NULL COMMENT '奖励展示快照',
  ADD COLUMN wallet_resource_grant_id VARCHAR(96) NOT NULL DEFAULT '' COMMENT '钱包资源赠送 ID',
  ALGORITHM=INSTANT;
