PRD-011 七日目标与成长基金
文档编号:PRD-011
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
关联模块:SessionServer/Activity.cpp、RecordServer、tbl/SevenDay.xml
1. 背景与目标
七日目标用于新手前 7 天的目标引导与付费转化。当前存在天数计算错误、奖励可重复领取、基金购买后不生效等问题。本 PRD 统一七日任务、阶段奖励、成长基金购买与返还。
2. 核心规则
2.1 七日任务
- 以角色创建时间起算 7 个自然日,不按登录天数。
- 每日一组任务,完成获得活跃点与奖励。
- 每日任务 0 点刷新,未完成不累计到次日。
- 第 7 天结束后活动关闭,未领取奖励邮件补发(可配置)。
2.2 阶段奖励
- 累计活跃点达到 20/40/60/80/100 领取阶段宝箱。
- 每档只能领取一次。
- 阶段奖励包含装备、材料、元宝/绑元。
2.3 成长基金
- 玩家购买基金后,达到指定等级返还元宝/绑元。
- 返还在等级达成时自动发放,邮件通知。
- 基金分档(30/68/128 元),每档独立计算。
- 未领取的返还在活动结束后邮件补发。
3. 服务端设计
3.1 数据结构
struct SevenDayState {
uint64_t role_id;
uint32_t create_day; // YYYYMMDD
uint32_t current_day; // 1-7
uint32_t active_points;
uint32_t claimed_mask;
uint32_t task_mask;
};
struct GrowthFund {
uint64_t role_id;
uint32_t fund_id;
uint32_t buy_time;
uint32_t claimed_levels;
};
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_SevenDayInfo | 面板信息 |
| C→S | CS_SevenDayClaim | 领取任务/阶段奖励 |
| C→S | CS_FundBuy | 购买基金 |
| C→S | CS_FundClaim | 领取返还 |
| S→C | SC_SevenDayInfo | 任务/进度/倒计时 |
| S→C | SC_FundInfo | 基金状态 |
3.3 天数与结算
current_day = today - create_day + 1,夹在 1–7。- 任务完成事件由统一 EventBus 驱动,避免每个任务单独统计。
- 购买基金走
BillServer,成功后写基金记录。 - 返还按等级阈值发放,幂等键
role_id + fund_id + level。
4. 客户端设计
- 七日面板:7 个页签,锁定/进行中/已完成/已领取。
- 每日任务列表:任务名、进度、奖励、前往按钮。
- 阶段宝箱进度条,达到后高亮。
- 基金页:档位、购买、等级返还进度、领取按钮。
- 剩余时间倒计时,最后 24 小时提示。
5. 配置
SevenDay.xml:day、tasks、active_points、stage_rewards、fund_tiers、level_rewards。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 角色创建超过 7 天 | 活动关闭,未领取按配置补发 |
| 重复领取 | 幂等 |
| 基金购买失败 | 不写记录,提示重试 |
| 等级跳级 | 一次性补发所有达成档位 |
| 服务器维护跨天 | 按自然日计算,不因维护顺延 |
| 角色转服 | 基金/七日活动数据随角色迁移 |
7. 验收标准
- 七日任务/阶段奖励按天数和活跃点正确发放。
- 基金购买、等级返还、补发正确。
- 重复领取/跳级/跨天无重复或漏发。
- 客户端倒计时、进度与服务端一致。
- 活动结束后未领取奖励有明确处理。