server/laf-cloud/三模块上线范围与检查.md

86 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 七日签到、新手礼包、战令:本次上线范围与检查
日期:2026-09-10。后端基线 `main@e2a5c3d`,客户端参考 `MatchMaster@85d3dd6`。本次仅检查与整理发布范围,未部署、未调用真实支付。
用户已明确:**每日任务不进行上线操作,本次仅包含七日签到、新手礼包、战令。** 之前全仓复查中的每日任务、Jungle、五彩迁移等独立模块失败不作为本次三模块的验收失败计数。共享依赖和支付链路仍须核对。
## 1. 检查结论
| 模块 | 结果 | 上线前要求 |
| --- | --- | --- |
| 七日签到 | 后端测试通过;**客户端仍存在领取已落库但资产未发放的恢复缺口** | 客户端接收并按 `todayClaim.claimId` 处理收据,不能仅按 `canClaim` 判断是否恢复奖励;覆盖响应丢失、加载失败、退出重进和 Day 7 完成态 |
| 新手礼包 | 期限、重开、购买快照、埋点、支付确认和补单相关测试通过;没有发现本次合并新增的礼包协议破坏 | 确认奖励采用实际客户端的 3000 金币、三种道具各 3、1800 秒无限体力;完成真机支付、提醒弹窗及真实埋点验收 |
| 战令 | 原 main 的战令兼容实现保留;支付共存测试和客户端—当前后端联动测试通过 | 核对 `passCheckUpgrade` 对外 POST 路由、依赖和实际生产部署代码;完成真实支付验收 |
不能因后端测试通过就认定三模块已全部具备上线条件。当前明确的功能问题仍是签到客户端收据恢复;礼包另有两项提醒测试未完成有效验证,见第 4 节。
## 2. 生产函数发布核对清单
以下均相对独立 server 仓库 `laf-cloud/functions/`。只对比并更新本清单与其必需依赖;同名线上函数已是目标实现时无需重复替换。不执行整仓、整目录同步。
| 归属 | 函数/模块 |
| --- | --- |
| 七日签到 | `SignInActivity.ts`、`signInClaim.ts`、`signInActivityInfo.ts` |
| 新手礼包 | `limitedTimeEvent.ts` |
| 战令 | `passCheckUpgrade.ts`、`passCheck.ts` |
| 三模块涉及的共享支付链路 | `wx/orderPaySig.ts`、`wx/iosorderPaySig.ts`、`wx/KeFuInfo.ts`、`wx/checkIos.ts`、`wx/payCallBack.ts`、`wx/getPayInfo.ts`、`wx/iosgetPayInfo.ts`、`wx/getOrderReward.ts` |
| 礼包迁移与战令补单关联 | `login.ts`、`wucaiMigration.ts` |
共 16 个函数/模块需核对,实际增量以正式当前版本为准。`login/wucaiMigration` 的核对仅针对礼包期限/轮次保留、登录配置及战令补单,不扩展为五彩迁移功能上线。
需要保留的现有依赖:`Utils`、`jungleConfig`、运行库 `thinkingdata-node`、`ip2region` 及现有存储桶私钥访问能力。`jungleConfig` 是共享支付代码现有 import,保留与调用方法匹配的线上实现,不因此发布 Jungle 活动入口或改奖励配置。发奖依赖的现有资产接口继续原流程,无需为本次发布携带每日任务新增道具字段。
**明确排除:** `dayTaskInfo`、`getTaskReward`、`dailyTaskService`、`dailyTaskConfig`、`dailyTaskDebug`、每日/周任务配置及 Postman 发布资料;也不发布 `signInTestAdmin`、废弃 `starterPackConfig`,不顺带更新 `drawHead/userLevel/userProp` 等非本次增量文件。
### 路由与顺序
1. 先准备配置、变量及现有依赖,再发布公共实现 `SignInActivity`、`limitedTimeEvent`、`passCheckUpgrade`、`wucaiMigration`。
2. 发布 `signInClaim` 后再发布 `signInActivityInfo`;先有 `passCheckUpgrade` 再更新 `passCheck` 和引用它的支付函数。
3. 更新支付链路与 `login`,核对客户端发布版本后启用签到配置,执行专用账号冒烟。
4. 当前仓库 **`SignInActivity.ts`、`wx/iosorderPaySig.ts`、`passCheckUpgrade.ts` 没有对应 YAML**。确认发布工具或控制台显式创建/更新函数;`passCheckUpgrade` 和 iOS 下单需有客户端使用的 POST 路由,不能只凭源码存在判定部署完成。
5. `signInClaim` 必须作为内部依赖发布;是否关闭它的外部 POST 要按正式客户端兼容情况决定。生产不开放签到测试管理接口。
### 每日任务隔离边界
合并后的 `login` **没有 import/call `dailyTaskService`**;此次清单不会新增 V2 任务生成入口。每日任务不更新、且生产用户仍为旧任务结构时,上次发现的 V2 任务兼容问题不作为这次上线阻塞项。
唯一共享前提:若生产此前已存在 `users.task.version=2` 数据,旧登录刷新逻辑仍可能影响这三个模块的用户登录。这是需在发布前只读核对的线上存量条件,不能仅凭“本次不发布每日任务”判断不存在;当前没有读取生产数据。无需因此上线每日任务代码或执行任务数据迁移。
## 3. 本范围内仍需确认的配置
- 签到配置来自 `sign-in-activity-config.json`:等级 23、14 个 UTC+8 自然日累计 7 次、猫皮肤 ID 12;保留已有参加者引用的配置,恰有一条有效启用配置。签到状态和领取集合按原上线文档准备。
- 支付环境:`PAYMENT_APP_ENV`、`WX_MIDAS_PAY_SIGN_KEY`;保留测试订单分流时还需 `TEST_WX_PAY_NOTIFY_URL`。
- 登录:`WX_MINIGAME_APP_ID`、`WX_MINIGAME_APP_SECRET`、`IDCOUNT_NAME`,且对应 idcount 文档存在;新建用户分号使用原生 `cloud.mongo.db`。
- 旧 iOS 商户链路:`WX_MCH_ID`、`WX_MCH_CERT_SERIAL_NO`、`WX_PAY_NOTIFY_URL`、现有私钥;`iosgetPayInfo` 仍有硬编码商户/证书信息,需核对一致性。
- 战令现有周期配置:`passCheck` 使用 idcount 文档 `69fac1528463a95668c5e5db` 的 `passcheckTime`,不能遗漏目标环境的记录。
- 埋点 SDK 必须支持 `trackFirst`;重试依赖订单快照及后续回调/查单,不等于已有可靠消息队列。
- 当前礼包客户端测试要求开发版、体验版、正式版都经真实支付确认。旧 README 关于开发版/体验版免费发货的文字不能作为本版本验收依据。
## 4. 本次限定范围的验证
| 验证 | 结果 |
| --- | --- |
| 后端:签到、礼包期限、礼包埋点/战令共存、支付分流 | **59/59 通过** |
| 战令客户端—后端联动 | **18/18 通过**;测试读取后端函数时在内存中映射到独立 server 当前 main,非只测试 MatchMaster 内嵌副本 |
| 客户端:礼包、签到体力/加载、战令 UI | **56/58 通过,2 项失败** |
| 合计 | **135 项,133 通过、2 失败**;不包含每日任务等范围外测试 |
后端命令:
```powershell
$env:TEST_WX_PAY_NOTIFY_URL = 'https://sor779u2w8.sealoshzh.site/wx/payCallBack'
node --test --test-reporter=spec laf-cloud/tests/sign-in-activity.test.mjs laf-cloud/tests/starter-pack.test.mjs laf-cloud/tests/rookie-gift.test.mjs laf-cloud/tests/payment-routing.test.mjs
```
客户端测试文件:`tools/test-battle-pass.cjs`、`tools/test-battle-pass-ui.cjs`、`tools/test-starter-pack.cjs`、`tools/test-seven-day-stamina.cjs`、`tools/test-seven-day-loading.cjs`。
战令联动覆盖旧周期经验及领取记录、18/30/12 商品、旧上传兼容、并发发货、赠金/经验只发一次、丢失响应恢复、旧订单补发和过期订单保留。
两项失败位于 `MatchMaster/tools/test-starter-pack.cjs:129` 和 `:140`,分别是首次/每日提醒以及 Prefab 失败重试。错误为测试 VM 中 `HomePopupQueue is not defined`,该测试抽取方法但未注入队列依赖;实际 `assets/Script/JiaZai.ts:12` 有正确 import。**这是现有测试运行环境的缺口,不直接等同于业务运行时缺少 import,也不能把这两个场景记为已通过。** 本次没有修改客户端测试或业务代码。
上述测试没有覆盖签到 `todayClaim` 的完整客户端恢复路径;该问题已由前两次源码核对及定向模拟确认,当前客户端对应代码未变,因此仍列为待处理。没有调用真实微信支付、修改线上记录或触发真实数数事件。
## 5. 对原文档的使用说明
本文件是当前发布范围和验收结论的优先依据。`main合并local后兼容性复查.md` 保留全仓历史审计结果;`七日签到与新手礼包生产上线文档.md` 中的回滚、配置和奖励验收细节仍可参考,但每日任务及其他范围外模块不再按其旧清单执行。