-- ============================================================================ -- 017_rock_using_warning.sql -- Rock Token「扫码使用中」超时预警:记录变为 using 的时间 + 可配置阈值 -- ============================================================================ -- 1. 使用中起点:进入 using 时写入,释放/重置回 available 时清空。 ALTER TABLE rock_tokens ADD COLUMN IF NOT EXISTS using_at TIMESTAMPTZ; -- 只对 using 建部分索引,列表按状态过滤时可直接用上。 CREATE INDEX IF NOT EXISTS idx_rock_tokens_using_at ON rock_tokens (using_at) WHERE status = 'using'; -- 2. 历史数据无法拿到精确的“进入 using”时刻: -- 0666.pro 只暴露 Token 创建时间,且与后续打包导入的口径保持一致, -- 这里统一用 claimed_at(缺失时退回 created_at)近似回填。 UPDATE rock_tokens SET using_at = COALESCE(claimed_at, created_at) WHERE status = 'using' AND using_at IS NULL; -- 3. 橙色/红色预警阈值(天),默认 3 / 5。 ALTER TABLE rock_configs ADD COLUMN IF NOT EXISTS using_warn_days INT NOT NULL DEFAULT 3; ALTER TABLE rock_configs ADD COLUMN IF NOT EXISTS using_danger_days INT NOT NULL DEFAULT 5;