feat: add streak reward and 100-achievement milestone system

这个提交包含在:
cryptocommuniums-afk
2026-02-23 20:29:14 +08:00
父节点 43cbd38bac
当前提交 0b53113a4b
修改 14 个文件,包含 1334 行新增57 行删除

查看文件

@@ -930,6 +930,16 @@ CREATE TABLE IF NOT EXISTS source_crystal_transactions (
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS user_achievement_milestones (
user_id INTEGER NOT NULL,
milestone_no INTEGER NOT NULL,
completed_count_snapshot INTEGER NOT NULL DEFAULT 0,
rating_bonus INTEGER NOT NULL DEFAULT 20,
created_at INTEGER NOT NULL,
PRIMARY KEY(user_id, milestone_no),
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS daily_task_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
@@ -1049,6 +1059,7 @@ CREATE INDEX IF NOT EXISTS idx_redeem_items_active ON redeem_items(is_active, id
CREATE INDEX IF NOT EXISTS idx_redeem_records_user_created ON redeem_records(user_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_user_experience_logs_user_created ON user_experience_logs(user_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_source_crystal_tx_user_created ON source_crystal_transactions(user_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_user_achievement_milestones_user_created ON user_achievement_milestones(user_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_daily_task_logs_user_day ON daily_task_logs(user_id, day_key, created_at DESC);
)SQL");