任务、勋章与运营激励
---
本页接口速览(48 个)
GET /api/user_operations/rank?type=...&page=...
GET /api/user_operations/rank/week
GET /api/user_operations/rank.month
GET /api/user_operations/myRank
GET /api/user_operations/rankByCategory?category=poetry
GET /api/user_operations/coins
GET /api/user_operations/coinHistory?type=earn|spend&page=...
POST /api/user_operations/coins/signinReward
POST /api/user_operations/coins/transfer
GET /api/user_operations/level
GET /api/user_operations/levelRules
GET /api/user_operations/levelRewards
POST /api/user_operations/claimLevelReward
GET /api/user_operations/tasks/today
POST /api/user_operations/tasks/claim/{task_id}
GET /api/user_operations/achievements/mine
POST /api/user_operations/achievements/claim/{id}
GET /api/user_operations/activeEvents
GET /api/user_operations/event/{id}
POST /api/user_operations/event/join/{id}
GET /api/user_operations/event/{id}/rank
POST /api/user_operations/admin/task/create
POST /api/user_operations/admin/task/update
POST /api/user_operations/admin/task/disable/{id}
POST /api/user_operations/admin/event/create
POST /api/user_operations/admin/event/end/{id}
POST /api/user_operations/admin/coins/adjust
GET /api/user_operations/admin/coins/log
GET /api/user_operations/admin/stats/overview
GET /api/user_operations/admin/stats/funnel
GET /api/user_operations/admin/stats/event/{id}
GET /api/achievement/categories
GET /api/achievement/list?category=...&rarity=...
GET /api/achievement/{id}
GET /api/achievement/mine
GET /api/achievement/mine/pending
POST /api/achievement/check
GET /api/achievement/featured
POST /api/achievement/featured/set
GET /api/achievement/wall/{user_id}
POST /api/achievement/admin/create
POST /api/achievement/admin/update/{id}
POST /api/achievement/admin/disable/{id}
POST /api/achievement/admin/reissue/{id}
GET /api/achievement/admin/stats
GET /api/achievement/admin/leaderboard
POST /api/achievement/checkin
POST /api/achievement/event/{event_name}
闲言APP — 用户任务系统指南(签到 / 任务 / 勋章 合并导航)
版本: v1.0.0 | 更新时间: 2026-08-15 作者: Xianyan(闲言)团队 作用: 跨文档导航,整合"签到、每日任务、勋章"三个相互交织的系统 关联文档: - API_USER_CENTER_DOC(最权威,本系统所有接口的完整定义) - API_USER_OPERATIONS_DOC(运营视角,部分重叠) - API_ACHIEVEMENT_DOC(勋章/成就系统)
一、为什么需要这份指南?
API_USER_CENTER_DOC、API_USER_OPERATIONS_DOC、API_ACHIEVEMENT_DOC 三份文档都涉及"用户任务激励系统",但视角不同:
- USER_CENTER:产品功能完整视角(签到/任务/勋章 都有)
- USER_OPERATIONS:运营视角(积分规则/排行榜/任务运营)
- API_ACHIEVEMENT:专注成就系统(勋章/打卡里程碑/补签)
本指南不重复内容,仅做索引 + 跳转 + 流程图,帮 APP 端开发者:
- 快速找到需要的接口(按"我要做什么"分组)
- 理解三个系统之间的关系(签到→任务→勋章→积分)
- 跳转权威文档看完整字段
二、我要做什么 → 用什么接口(导航)
2.1 签到
| 用户行为 | 接口 | 方法 | 权威文档章节 |
|---|---|---|---|
| 用户点击"每日签到"按钮 | /api/user_center/signin |
POST | USER_CENTER 3.1 |
| 查看某月签到日历 | /api/user_center/signin_calendar?month=YYYY-MM |
GET | USER_CENTER 3.2 |
| 用户漏签当天,补签 | /api/user_center/signin_makeup |
POST | USER_CENTER 3.3 |
| 查看签到热度图(GitHub 风格) | /api/user_center/heatmap?year=YYYY |
GET | USER_CENTER 4.x |
签到奖励规则(USER_CENTER 3.1):
| 连续天数 | 基础奖励 | 额外奖励 | 总计 |
|---|---|---|---|
| 1-6天 | 5积分 | - | 5积分 |
| 7-29天 | 5积分 | +20积分 | 25积分 |
| 30天+ | 5积分 | +120积分 | 125积分 |
2.2 每日任务
| 用户行为 | 接口 | 方法 | 权威文档章节 |
|---|---|---|---|
| 进入"每日任务"页加载任务列表 | /api/task/today |
GET | USER_CENTER 14.1 |
| 用户完成某个动作,上报进度 | /api/task/reportProgress |
POST | USER_CENTER 14.2 |
| 完成任务后领取奖励 | /api/task/claim |
POST | USER_CENTER 14.3 |
| 所有任务完成后领完美日奖励 | /api/task/claimPerfect |
POST | USER_CENTER 14.4 |
| 注册一个自定义任务 | /api/task/registerCustom |
POST | USER_CENTER 14.5 |
任务类型(USER_CENTER 14.1):
| type | 说明 | 触发示例 |
|---|---|---|
signin |
签到类 | 每日首次签到 |
read |
阅读类 | 阅读文章 5 篇 |
favorite |
收藏类 | 收藏 3 篇 |
interact |
互动类 | 评论/点赞 |
checkin |
打卡类 | 工具使用打卡(学习时长) |
custom |
自定义类 | 用户自己注册 |
2.3 勋章 / 成就
| 用户行为 | 接口 | 方法 | 权威文档章节 |
|---|---|---|---|
| 查看所有勋章 + 我的解锁状态 | /api/achievement/badges |
GET | USER_CENTER 15.1 |
| 设置个人页展示哪些勋章(最多 3) | /api/achievement/badgeDisplay |
POST | USER_CENTER 15.2 |
| 查看成就详情 | /api/achievement/detail |
GET | ACHIEVEMENT 3.1 |
| 我的成就(已达成/未达成) | /api/achievement/my |
GET | ACHIEVEMENT 3.2 |
| 领取成就奖励 | /api/achievement/claim |
POST | ACHIEVEMENT 3.3 |
| 学习打卡(v9 新增) | /api/achievement/checkin |
POST | ACHIEVEMENT 4.3 |
| 打卡统计(周/月趋势) | /api/achievement/checkin_stats |
GET | ACHIEVEMENT 4.4 |
| 打卡热力图(GitHub 风格) | /api/achievement/checkin_heatmap |
GET | ACHIEVEMENT 4.5 |
| 连续打卡里程碑奖励 | /api/achievement/checkin_milestone_claim |
POST | ACHIEVEMENT 4.6 |
| 补签卡(消耗积分补昨日) | /api/achievement/checkin_supplement |
POST | ACHIEVEMENT 4.7 |
| 好友完成率对比 | /api/achievement/friends_compare |
GET | ACHIEVEMENT 4.10 |
勋章稀有度(USER_CENTER 15.1):
| rarity | 颜色 | 触发难度 |
|---|---|---|
common |
灰 | 低(每日任务) |
rare |
蓝 | 中(连续 7 天) |
epic |
紫 | 高(连续 30 天) |
legendary |
金 | 极高(年度活跃) |
三、三系统的数据关系
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ 签到系统 │ ──────► │ 积分 +1 ~ 125 │ ◄────── │ 每日任务系统 │
│ (signin_*) │ │ (score 字段) │ │ (task_*) │
└──────┬──────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ 连续 7/30/100/365 天 │ 完成任务 +EXP/积分 │ 完成 → 解锁勋章
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ 勋章系统 (achievement_*) │
│ 触发条件:连续天数 / 任务累计 / 互动次数 │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────┐
│ 个人主页徽章展示 │
│ /api/achievement/ │
│ badgeDisplay │
└─────────────────────┘
四、APP 端典型业务流
用户首次进入"我的"页面
1. 并行调用 3 个接口(拉数据):
- GET /api/user_center/signin_calendar?month=2026-08(签到日历)
- GET /api/task/today(今日任务)
- GET /api/achievement/badges(勋章列表 + 解锁状态)
2. 渲染 3 个卡片:签到日历 / 任务列表 / 勋章墙
3. 用户点击"签到"按钮 → POST /api/user_center/signin
- 成功后本地更新签到日历
- 检查返回的 continuous 天数,如果达到 7/30/100 等里程碑,提示"获得 X 勋章"
4. 用户点击"领取"任务奖励 → POST /api/task/claim
- 成功后更新积分 + 任务 claimed 状态
5. 用户打开"勋章墙"详情 → 直接显示(已经 GET 过了)
用户设置"个人主页展示勋章"
1. 进入"勋章墙"页面,已经加载了 /api/achievement/badges(含 is_displayed 字段)
2. 用户点击某勋章的"展示"按钮
3. 前端校验:当前展示数 < 3(max_display)
4. POST /api/achievement/badgeDisplay,body: badge_ids=1,3,5
5. 成功后刷新勋章列表(更新 is_displayed 字段)
五、跨系统联动与并发注意事项
| 场景 | 建议 |
|---|---|
同时调用 /api/task/claim 和 /api/user_center/signin |
✅ 安全,互不影响;积分累加 |
多次调用 /api/achievement/badgeDisplay |
✅ 幂等,最后一次调用覆盖前次 |
短时间内多次调用 /api/user_center/signin |
❌ 第二次会返回"今日已签到" |
任务完成时调用 /api/task/claim 后立即重试 |
❌ 第二次返回"已领取" |
| 客户端显示已达成勋章 + 用户点击领取 | 必须顺序:先 GET /achievement/badges 确认 is_unlocked=true,再 POST /achievement/claim |
六、错误码速查(跨文档合并)
| 场景 | HTTP | msg | 来源 |
|---|---|---|---|
| 重复签到 | 1, 200 | "今日已签到" | USER_CENTER 3.1 |
| 重复领取任务 | 1, 200 | "已领取" | USER_CENTER 14.3 |
| 任务未完成就领取 | 0, 400 | "任务未完成" | USER_CENTER 14.3 |
| 补签次数用完 | 0, 400 | "补签卡不足" | ACHIEVEMENT 4.7 |
| 展示勋章超过 3 个 | 0, 400 | "最多展示 3 个" | USER_CENTER 15.2 |
| 未登录访问 | 0, 401 | "未登录" | 所有需登录接口 |
七、下一步
- 想看完整字段说明 → USER_CENTER_DOC(推荐作为权威)
- 想看运营视角(金币记录、排行榜、运营活动) → USER_OPERATIONS_DOC
- 想看勋章系统深度(打卡里程碑、补签卡、好友对比) → ACHIEVEMENT_DOC
用户运营接口(7 模块 32 接口)
基础URL:
https://tools.wktyl.com
维护: Xianyan 团队 | 更新时间: 2026-08-15
跳转: 任务/勋章/签到 - 业务总览 · 用户中心 · 安全/登录
职责:运营激励体系(排行榜 / 积分 / 等级 / 任务 / 勋章 / 签到)整合入口,详细场景看 USER_TASK_GUIDE.md。
💡 签到/任务/勋章详细流程、字段定义已在 USER_TASK_GUIDE 内汇总(合并方案 B);本文档保留各模块的端点清单与运营管理接口。
1. 通用约定
统一响应格式 {code, msg, time, data},认证走 token(参见 USER_SECURITY §1.2)。
1.1 频率限制
| 模块 | 上限 / 窗口 |
|---|---|
| 排行榜查询 | 60 / 60s |
| 积分相关 | 60 / 60s |
| 任务领取 / 进度上报 | 30 / 60s |
| 后台管理(运营配置) | 30 / 300s |
2. 接口清单
2.1 排行榜
GET /api/user_operations/rank?type=...&page=...— 总排行榜(按 type 切换:金币/学习时长/收藏/签到/勋章)GET /api/user_operations/rank/week— 周榜GET /api/user_operations/rank.month— 月榜GET /api/user_operations/myRank— 我的排名(各榜 + 距上一名差距)GET /api/user_operations/rankByCategory?category=poetry— 分类榜(按内容分类)
2.2 积分 / 金币
GET /api/user_operations/coins— 当前金币余额GET /api/user_operations/coinHistory?type=earn|spend&page=...— 流水记录POST /api/user_operations/coins/signinReward— 签到金币奖励(合并到 USER_TASK_GUIDE)POST /api/user_operations/coins/transfer— 用户间转账(可选,未开放时返回错误)
2.3 等级
GET /api/user_operations/level— 我的等级(当前等级/经验/距下一级)GET /api/user_operations/levelRules— 升级规则(公示)GET /api/user_operations/levelRewards— 等级奖励(解锁的皮肤/特权)POST /api/user_operations/claimLevelReward— 领取等级奖励
2.4 任务 / 成就(合并到 USER_TASK_GUIDE)
完整定义见 USER_TASK_GUIDE §任务系统。本文档仅保留运营查询接口:
GET /api/user_operations/tasks/today— 今日每日任务(用户视角)POST /api/user_operations/tasks/claim/{task_id}— 领取任务奖励GET /api/user_operations/achievements/mine— 我的勋章列表POST /api/user_operations/achievements/claim/{id}— 领取新解锁勋章
2.5 活动 / 运营配置
GET /api/user_operations/activeEvents— 当前生效活动列表GET /api/user_operations/event/{id}— 活动详情POST /api/user_operations/event/join/{id}— 参加活动GET /api/user_operations/event/{id}/rank— 活动排行榜
2.6 后台管理(需 admin 权限)
POST /api/user_operations/admin/task/create— 创建任务(运营后台)POST /api/user_operations/admin/task/update— 修改任务POST /api/user_operations/admin/task/disable/{id}— 下架任务POST /api/user_operations/admin/event/create— 创建活动POST /api/user_operations/admin/event/end/{id}— 强制结束活动POST /api/user_operations/admin/coins/adjust— 手动调账(带审计日志)GET /api/user_operations/admin/coins/log— 调账审计日志
2.7 数据统计(管理端)
GET /api/user_operations/admin/stats/overview— 运营总览(DAU / 任务完成率 / 勋章发放数)GET /api/user_operations/admin/stats/funnel— 用户漏斗GET /api/user_operations/admin/stats/event/{id}— 活动复盘
3. 关键示例
3.1 我的排名
GET /api/user_operations/myRank
Header: token: eyJ0eXAi...
# 响应
{
"code": 1,
"data": {
"rankings": {
"coins_week": { "rank": 1234, "gap_to_next": 56 },
"study_month": { "rank": 42, "gap_to_next": 0 },
"checkin_total": { "rank": 8, "gap_to_next": 12 }
}
}
}
3.2 手动调账(管理员,需二次验证)
POST /api/user_operations/admin/coins/adjust
Header: token: <admin_token>
Content-Type: application/json
{
"user_id": 12345,
"delta": 100, // 可正可负
"reason": "活动奖励补发", // 必填,进入审计日志
"two_factor_code": "123456"
}
4. 设计要点
- 运营接口与用户接口分离:所有
/admin/*都要求 admin 权限 + 二次验证,调账强制审计日志 - 排行榜分维分时:总/周/月 + 金币/学习/签到/勋章 × N 大类,避免一个超大接口渲染所有
- 任务/勋章/签到合并到 USER_TASK_GUIDE:避免文档冗余(方案 B 整合)
- 活动是临时配置:每个活动带独立 leaderboard 与时间窗,过期自动归档
- 调账带 reason 必填:审计追溯可定位到具体运营人员与触发原因
5. 关联文档
成就系统接口(勋章 18 类)
基础URL:
https://tools.wktyl.com
维护: Xianyan 团队 | 更新时间: 2026-08-15
业务总览: USER_TASK_GUIDE §勋章系统 · 用户运营
职责:勋章定义(稀有度/分类/隐藏)+ 获得条件 + 用户勋章查询 + 后台运营 CRUD。
💡 业务逻辑(如何获得勋章、稀有度说明、游戏化设计)见 USER_TASK_GUIDE.md。本文档聚焦「接口字段 + 后台管理」。
1. 模型
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 勋章 ID |
name |
string | 勋章名(≤20 字) |
description |
string | 获得条件描述 |
rarity |
enum | common / rare / epic / legendary / mythic |
category |
string | 分类(学习 / 创作 / 互动 / 收藏 / 任务 / 特殊) |
is_hidden |
bool | 是否隐藏(未解锁不显示) |
icon |
string | 图标 URL |
total_unlocked |
int | 已解锁用户数 |
condition |
object | 解锁条件规则(结构化) |
created_at |
int | 创建时间戳 |
1.1 解锁条件结构
{
"type": "stat|action|combo",
"target": "checkin_total",
"threshold": 100,
"window": "all_time|month|week|day",
"extra": { /* 类型特定参数 */ }
}
支持的 type:
| type | 含义 | 案例 |
|---|---|---|
stat |
统计阈值 | 学习时长 ≥ 100h |
action |
行为次数 | 累计签到 30 天 |
combo |
多种条件组合 | 完成 3 个特定任务的组合 |
2. 认证 / 频率限制
- 用户端:需登录,普通
token即可 - 后台端:需
admin权限 + 二次验证(具体看 API_ADMIN_DOC.md) - 用户查询:60 / 60s;后台管理:30 / 300s
3. 接口清单
3.1 用户视角
GET /api/achievement/categories— 按分类分组的勋章列表(含已解锁/未解锁图标)GET /api/achievement/list?category=...&rarity=...— 勋章列表(可筛选)GET /api/achievement/{id}— 勋章详情(含解锁条件、解锁用户数)GET /api/achievement/mine— 我已解锁的勋章(公开)GET /api/achievement/mine/pending— 我"接近解锁"勋章(提示用户)POST /api/achievement/check— 检查并触发徽章解锁(系统主动调用,亦可前端触发)
3.2 用户画像
GET /api/achievement/featured— 我"置顶展示"的勋章(用户最多选 5 个)POST /api/achievement/featured/set— 设置置顶列表GET /api/achievement/wall/{user_id}— 某用户勋章墙(公开主页)
3.3 后台管理
POST /api/achievement/admin/create— 创建勋章POST /api/achievement/admin/update/{id}— 修改勋章POST /api/achievement/admin/disable/{id}— 下架(已解锁的不会消失)POST /api/achievement/admin/reissue/{id}— 补发(推送给指定用户列表)GET /api/achievement/admin/stats— 解锁率 / 分类分布GET /api/achievement/admin/leaderboard— 拥有勋章数排行
3.4 事件扩展
POST /api/achievement/checkin— 签到触发(合并入口到 USER_TASK_GUIDE)POST /api/achievement/event/{event_name}— 自定义事件触发(如 "task_completed")
4. 核心示例
4.1 我的勋章墙
GET /api/achievement/mine
Header: token: ...
# 响应
{
"code": 1,
"data": {
"total": 18,
"by_rarity": {
"mythic": ["绝代诗仙"],
"legendary": ["万卷书","千日勤"],
"epic": [...],
"rare": [...],
"common": [...]
},
"featured": ["千日勤", "百日勤"] // 我置顶的 5 个以内
}
}
4.2 后台创建勋章
POST /api/achievement/admin/create
Header: token: <admin_token>
{
"name": "百日勤",
"description": "连续签到 100 天",
"rarity": "epic",
"category": "学习",
"is_hidden": false,
"icon": "https://cdn.xianyan.cc/badge/100d.png",
"condition": {
"type": "stat",
"target": "checkin_streak",
"threshold": 100,
"window": "all_time"
}
}
5. 设计要点
- 稀有度配色统一:common(灰) / rare(绿) / epic(蓝) / legendary(紫) / mythic(金),前端 CSS 自动渲染
- is_hidden = 严格保护:未解锁用户查不到任何信息(连 name 都隐藏),防止攻略泄露
- 解锁条件结构化:放在 JSON
condition字段,支持定时任务定期扫描 + 实时触发(用户行为时) - 后台可下架但不可删除:保留历史用户的勋章历史,下架仅阻止新解锁