跳到主要内容

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→SCS_SevenDayInfo面板信息
C→SCS_SevenDayClaim领取任务/阶段奖励
C→SCS_FundBuy购买基金
C→SCS_FundClaim领取返还
S→CSC_SevenDayInfo任务/进度/倒计时
S→CSC_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. 验收标准​

  • 七日任务/阶段奖励按天数和活跃点正确发放。
  • 基金购买、等级返还、补发正确。
  • 重复领取/跳级/跨天无重复或漏发。
  • 客户端倒计时、进度与服务端一致。
  • 活动结束后未领取奖励有明确处理。