qiangdanxitong/奖励规则优化方案.md

19 KiB
Raw Blame History

奖励规则功能优化方案

一、现状分析

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)

{
  "logic": "AND",
  "conditions": [
    { "type": "task_count", "operator": ">=", "value": 10 },
    { "type": "five_star_rate", "operator": ">=", "value": 90 }
  ]
}

时间范围条件

{
  "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 数据库变更

-- 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