# 奖励规则功能优化方案 ## 一、现状分析 ### 1.1 当前功能 | 模块 | 功能 | 状态 | |------|------|------| | 规则管理 | 创建/编辑/删除/启用/禁用 | ✅ 已实现 | | 规则类型 | 每日/每周/每月/任务/好评奖励 | ✅ 已实现 | | 触发条件 | 任务数量/评分/五星数量 | ✅ 已实现 | | 定时执行 | 每日/每周/每月定时检查 | ✅ 已实现 | | 奖励发放 | 积分奖励+通知 | ✅ 已实现 | ### 1.2 存在的问题 1. **奖励类型单一**:目前只支持积分奖励,缺少徽章、称号等多样化奖励 2. **触发条件有限**:仅支持简单的数值比较,缺少复合条件、时间条件等 3. **缺乏奖励记录**:无法追溯历史奖励发放情况 4. **UI体验一般**:配置界面不够直观,缺乏可视化编辑 5. **无预览功能**:无法预估规则影响范围和预期奖励 6. **缺少数据统计**:管理员无法看到奖励发放的整体数据 --- ## 二、优化目标 1. **丰富奖励类型**:支持积分、徽章、称号、经验值等多种奖励 2. **增强触发条件**:支持更灵活的条件组合 3. **完善奖励追溯**:记录每一次奖励发放 4. **提升用户体验**:可视化配置、实时预览 5. **数据分析支持**:奖励发放统计和效果分析 --- ## 三、功能设计 ### 3.1 奖励类型扩展 | 奖励类型 | 说明 | 示例 | |----------|------|------| | 积分 (score) | 通用积分奖励 | +50 积分 | | 经验值 (exp) | 用户等级经验 | +100 经验 | | 徽章 (badge) | 特殊成就标识 | "效率之星" 徽章 | | 称号 (title) | 显示在用户名旁 | "设计大师" | | 特权 (privilege) | 临时功能权限 | 7天优先接单权 | | 实物兑换券 (coupon) | 可兑换实物 | 咖啡券 x1 | ### 3.2 触发条件扩展 #### 基础条件 | 条件类型 | 参数 | 说明 | |----------|------|------| | task_count | 任务数量 | 完成任务数 ≥ N | | score_earned | 获得积分 | 累计获得积分 ≥ N | | five_star_rate | 好评率 | 好评率 ≥ N% | | on_time_rate | 准时率 | 准时完成率 ≥ N% | | consecutive_days | 连续天数 | 连续 N 天完成任务 | | first_task | 首单 | 首次完成任务 | | login_days | 登录天数 | 本月登录天数 ≥ N | #### 复合条件(AND/OR) ```json { "logic": "AND", "conditions": [ { "type": "task_count", "operator": ">=", "value": 10 }, { "type": "five_star_rate", "operator": ">=", "value": 90 } ] } ``` #### 时间范围条件 ```json { "type": "task_count", "operator": ">=", "value": 5, "timeRange": "today" // today/this_week/this_month/custom } ``` ### 3.3 新增功能模块 #### 3.3.1 奖励发放记录表 `reward_record` | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键 | | user_id | bigint | 用户ID | | rule_id | bigint | 规则ID | | rule_name | varchar | 规则名称(冗余) | | reward_type | varchar | 奖励类型 | | reward_value | varchar | 奖励内容(JSON) | | trigger_data | text | 触发时的数据快照 | | create_time | datetime | 发放时间 | #### 3.3.2 奖励统计面板 - **今日奖励**:今日发放奖励次数、总积分 - **本周奖励**:本周奖励趋势图 - **规则效果**:各规则触发次数排行 - **用户受益**:获奖用户排行榜 #### 3.3.3 用户奖励中心 - 我的奖励历史 - 我的徽章墙 - 我的称号 - 奖励日历(按日期查看获奖记录) --- ## 四、UI/UX 设计 ### 4.1 规则配置页面重构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 自动奖励规则管理 [+ 新建规则] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─ 筛选 ─────────────────────────────────────────────────┐ │ │ │ 类型: [全部 ▼] 状态: [全部 ▼] 搜索: [___________] │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ┌─ 规则卡片 ──────────────────────────────────────────────┐ │ │ │ 🏆 每日任务达人 [启用 ○] [编辑] │ │ │ │ ───────────────────────────────────────────────────── │ │ │ │ 📋 触发: 每天完成 ≥ 5 个任务 │ │ │ │ 🎁 奖励: +20 积分 │ │ │ │ 👥 范围: 全体用户 │ │ │ │ 📊 统计: 本周触发 127 次 | 共奖励 2,540 积分 │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ┌─ 规则卡片 ──────────────────────────────────────────────┐ │ │ │ ⭐ 五星好评奖励 [启用 ○] [编辑] │ │ │ │ ───────────────────────────────────────────────────── │ │ │ │ 📋 触发: 获得 5 星评价 │ │ │ │ 🎁 奖励: +10 积分 + "好评之星" 徽章 │ │ │ │ 👥 范围: 设计师 │ │ │ │ 📊 统计: 本周触发 89 次 | 共奖励 890 积分 │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 4.2 可视化规则编辑器 ``` ┌─────────────────────────────────────────────────────────────┐ │ 新建奖励规则 [X 关闭] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 基本信息 │ │ ├─ 规则名称: [每周效率之星_______________] │ │ ├─ 规则描述: [每周完成20个任务的设计师奖励] │ │ └─ 规则类型: ○每日 ●每周 ○每月 ○即时 ○好评 │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ 触发条件 [+ 添加条件] │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ [完成任务数 ▼] [≥ ▼] [20____] [本周内 ▼] [✕] │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ │ ├─ 逻辑: ○ 满足全部条件(AND) ○ 满足任一条件(OR) │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ 奖励设置 [+ 添加奖励] │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ [积分 ▼] 值: [100___] [✕] │ │ │ ├───────────────────────────────────────────────────────┤ │ │ │ [徽章 ▼] 选择: [效率之星 ▼] [✕] │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ 适用范围 │ │ ├─ ○ 全体用户 │ │ ├─ ● 指定角色: [☑设计师 ☐需求方 ☐部门负责人] │ │ └─ ○ 指定部门: [选择部门...] │ │ │ │ ───────────────────────────────────────────────────────── │ │ │ │ 规则预览 │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ 📋 当设计师在本周内完成任务数 ≥ 20 时 │ │ │ │ 🎁 自动发放: 100 积分 + "效率之星" 徽章 │ │ │ │ 👥 预计影响: 约 23 人可能获得此奖励 │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ [取消] [保存规则] │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 4.3 奖励统计面板 ``` ┌─────────────────────────────────────────────────────────────┐ │ 奖励数据统计 [本月 ▼] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 1,234 │ │ 15,680 │ │ 89% │ │ 47 │ │ │ │ 奖励次数 │ │ 发放积分 │ │ 规则命中率│ │ 获奖人数 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌─ 奖励趋势 ───────────────────────────────────────────┐ │ │ │ ▂▃▄▅▆▇█▇▆▅▄▃▂▁▂▃▄▅▆▇█▇▆▅▄▃▂ │ │ │ │ 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ┌─ 规则触发排行 ─────────┐ ┌─ 获奖用户排行 ─────────┐ │ │ │ 1. 五星好评奖励 423次 │ │ 1. 张三 +580 积分 │ │ │ │ 2. 每日任务达人 312次 │ │ 2. 李四 +520 积分 │ │ │ │ 3. 每周效率之星 89次 │ │ 3. 王五 +490 积分 │ │ │ │ 4. 连续签到奖励 67次 │ │ 4. 赵六 +450 积分 │ │ │ │ 5. 首单奖励 45次 │ │ 5. 钱七 +420 积分 │ │ │ └───────────────────────┘ └───────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 五、技术实现 ### 5.1 数据库变更 ```sql -- 1. 新增奖励发放记录表 CREATE TABLE reward_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL COMMENT '用户ID', rule_id BIGINT COMMENT '规则ID', rule_name VARCHAR(100) COMMENT '规则名称', reward_type VARCHAR(50) NOT NULL COMMENT '奖励类型', reward_value TEXT COMMENT '奖励内容JSON', trigger_data TEXT COMMENT '触发数据快照', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_user_id (user_id), INDEX idx_rule_id (rule_id), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='奖励发放记录'; -- 2. 扩展奖励规则表 ALTER TABLE reward_rule ADD COLUMN reward_exp INT DEFAULT 0 COMMENT '奖励经验值'; ALTER TABLE reward_rule ADD COLUMN reward_title VARCHAR(50) COMMENT '奖励称号'; ALTER TABLE reward_rule ADD COLUMN reward_privilege TEXT COMMENT '奖励特权JSON'; ALTER TABLE reward_rule ADD COLUMN max_times_per_user INT DEFAULT 0 COMMENT '每用户最大获得次数(0=无限)'; ALTER TABLE reward_rule ADD COLUMN total_budget INT DEFAULT 0 COMMENT '总预算积分(0=无限)'; ALTER TABLE reward_rule ADD COLUMN used_budget INT DEFAULT 0 COMMENT '已使用预算'; ALTER TABLE reward_rule ADD COLUMN trigger_count INT DEFAULT 0 COMMENT '触发次数'; ALTER TABLE reward_rule ADD COLUMN start_time DATETIME COMMENT '生效开始时间'; ALTER TABLE reward_rule ADD COLUMN end_time DATETIME COMMENT '生效结束时间'; -- 3. 用户徽章表 CREATE TABLE user_badge ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, badge_code VARCHAR(50) NOT NULL COMMENT '徽章代码', badge_name VARCHAR(100) NOT NULL COMMENT '徽章名称', badge_icon VARCHAR(255) COMMENT '徽章图标', source_type VARCHAR(50) COMMENT '来源类型', source_id BIGINT COMMENT '来源ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_user_badge (user_id, badge_code), INDEX idx_user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户徽章'; -- 4. 用户称号表 CREATE TABLE user_title ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, title_code VARCHAR(50) NOT NULL COMMENT '称号代码', title_name VARCHAR(100) NOT NULL COMMENT '称号名称', is_active INT DEFAULT 0 COMMENT '是否激活显示', expire_time DATETIME COMMENT '过期时间', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_user_title (user_id, title_code), INDEX idx_user_id (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户称号'; ``` ### 5.2 后端 API 变更 | 接口 | 方法 | 说明 | |------|------|------| | /api/reward-rules | GET | 获取规则列表(增加统计数据) | | /api/reward-rules/stats | GET | 获取奖励统计数据 | | /api/reward-rules/preview | POST | 预览规则影响范围 | | /api/reward-records | GET | 获取奖励发放记录 | | /api/reward-records/my | GET | 获取我的奖励记录 | | /api/users/{id}/badges | GET | 获取用户徽章 | | /api/users/{id}/titles | GET | 获取用户称号 | | /api/users/{id}/titles/active | PUT | 设置激活称号 | ### 5.3 前端组件 1. **RewardRuleEditor.vue** - 可视化规则编辑器 2. **RewardStats.vue** - 奖励统计面板 3. **RewardRecordList.vue** - 奖励记录列表 4. **UserBadgeWall.vue** - 用户徽章墙 5. **UserTitleSelect.vue** - 用户称号选择器 --- ## 六、实施计划 ### 第一阶段:基础优化(预计 2 天) - [ ] 新增奖励发放记录表 - [ ] 实现奖励记录的存储和查询 - [ ] 规则列表增加统计数据显示 - [ ] 优化规则卡片UI ### 第二阶段:功能扩展(预计 3 天) - [ ] 扩展触发条件类型 - [ ] 支持复合条件配置 - [ ] 实现规则预览功能 - [ ] 新增徽章和称号奖励 ### 第三阶段:统计分析(预计 2 天) - [ ] 实现奖励统计面板 - [ ] 奖励趋势图表 - [ ] 规则效果分析 ### 第四阶段:用户中心(预计 2 天) - [ ] 用户奖励历史页面 - [ ] 徽章墙功能 - [ ] 称号管理功能 --- ## 七、预期效果 1. **管理效率提升**:可视化配置,减少配置错误 2. **激励效果增强**:多样化奖励,提升用户参与度 3. **数据驱动决策**:清晰的统计数据,优化奖励策略 4. **用户体验优化**:清晰的奖励反馈,增强成就感 --- ## 八、风险与应对 | 风险 | 影响 | 应对措施 | |------|------|----------| | 奖励发放过多 | 积分通胀 | 设置规则预算上限 | | 条件配置复杂 | 用户困惑 | 提供常用模板 | | 性能压力 | 系统变慢 | 异步处理+缓存 | | 规则冲突 | 重复奖励 | 优先级+互斥设置 | --- *文档版本:v1.0* *创建时间:2026-01-04*