Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-合批预审主会话裁决-2026-09-29.md
Liubing\LB 6813da149a feat(upserver): 保存M2客户端KV迁移至本人统计写检查点
保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
2026-09-30 19:19:05 +08:00

32 lines
4.8 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.
# M2 合批预审主会话裁决
日期:2026-09-29。当前动作是吸收预审并补全同一合批方案,不恢复 DP1 单独实施轮。用户裁定的 KV 替代 PF 玩家数据读写、新 PlayerId、原游戏服流程、客户端不碰服务器、单编码端及减少审核次数均保持。
## 证据与权限
- 最新输入:[合批工作稿独立预审意见](M2-合批工作稿独立预审意见-2026-09-29.md),SHA256 `8C8F1BD7F703260BB764568DB13F4FB3F94C86D8B62A3A3099816FFFA752F879`。原文明确“这不是 hash 门控的正式前审”;没有绑定工作稿及代码的受审清单,不能事后生成 hash 冒充已审基线。
- 补充输入:[DP1 独立方案审查](M2-DP1独立方案审查.md),SHA256 `8C577A6D81ADAEC4E175F186EA2E4D1674588F2C47269C8B38A6EBAFD16E1ACF`。主会话复算旧 DP1 清单 **18/18 长度与 SHA256 一致**,清单 SHA256 `858C43EF26361EB348D4CE36C7F3AFC8AF4DAF85E754A45F3D960A2D078145FA`。这证明旧方案基线未漂移,不代表最新合批方案已完整评审。
- 项目 `AGENTS.md` 要求“修改代码前完成相关方案的完整评审,记录裁决和开发边界”。本裁决不批准生产或测试代码修改;开发侧继续完善可执行方案和白名单,不让用户重复决定既定迁移目的。
## 逐项裁决
| 输入 | 裁决 | 同批落地要求 |
|---|---|---|
| 预审 §1 事实核验 | 接受 | 新 ID、KV 存储与普通游戏服请求沿用原流程已定;不再追索所有旧接口的完整文档。 |
| P2-A 地区码缺失导致地区榜与全局榜同名 | 接受缺陷事实 | 地区来源为 KV 资料中的 `ContinentCode`;缺失与非法值不能拼成全局榜名。保留地区榜目标;来源未补齐时明确缺少地区资料,不伪造地区或悄悄查询全局榜。跨玩家聚合读取交由服务器开发侧,本 Agent 只记录字段需求。 |
| P2-B / DP1-R1 宽 IUserService 与模块构造 | 接受 DI 事实,覆盖旧恒空身份建议 | 新 KV 类实现共用用户契约;就绪后公开新 ID 和真实授权状态。现有 `EntityKey` 类型泄漏须明确处理,不能一边实现该属性一边声称没有 SDK 类型依赖。 |
| P2-B / DP1-R2 测试迁移 | 接受 | ServiceHost Program/Stubs/csproj 一起纳入候选白名单;formal 用例转向新 KV 类。保留 PF、AGG、kv-loop 和受控加载回归,明确三个签名耦合文件的核验责任。 |
| P2-B / DP1-R3 登录退出中立入口 | 选择窄生命周期契约 | `IUserService.CustomId` 增加 setter;登录不再下转旧类赋值。31 模块 Reset/Replace/Discard 与登录退出状态分别采用有实际消费者的窄契约,具体成员见工作稿。 |
| P2-C 身份发布必须早于场景切换 | 接受 | 在原 handle、当前 epoch、资料和普通请求租约就绪后同步发布身份;登录完成和场景切换入口都检查同一服务的有效状态。FishingStage 5 秒软等待不能作为 KV 成功凭据。401/退出先失效身份再等待关闭。 |
| P3-D 短 ID 默认名与 Survey 抽样 | 接受并定算法 | 默认名只截取至 `min(5, id.Length)`;KV Survey 按规范十进制新 ID 的末位 `%10`,对应现有 TailNumberList;PF 保持旧十六进制规则。不得误写为 `%16` 或随机/进程 hash。 |
| P3-E 重读 SaveBackend | 选择正式 KV 仅使用冻结选择 | 新 KV 类不再读取配置重新选择后端。已冻结选择、准入名单、固定地址仍由现有 RuntimeSelection 决定;保留 PF/kv-loop 既有兼容入口,不额外引入开关。 |
| DP1-P3-1 时间/地区/语言默认值 | 旧建议不用于首场景 | AccountDescriptor 已有 CreateTimeUtc/ServerTimeUtc;用户资料从 KV 读。未知历史登录时间与地区不能伪装为已知值,消费者需显式处理缺失。 |
| DP1-P3-2 Duel EntityKey | 接受并登记实际调用 | Duel 仍有三个直接 EntityKey 成员访问(两段业务)。纳入共用契约去 PF 类型与 Duel PF 能力调用的完整设计;KV 不制造 EntityKey。 |
| DP1-P3-3 编辑器认证探针 | 接受,无修改 | S101LoginWindow 不受本批用户服务注册替换影响。 |
## 本次补全与剩余开发责任
已把 7 项预审输入写入[合批工作稿](M2-合批实施方案工作稿-2026-09-29.md)的实现决定、身份来源、时序、候选文件与验收矩阵。仍须完成同一方案中的奖励写入边界、首场景动态存档链及跨账号资料消费者处理,才可称完整可编码方案;不把预审的“方向通过”扩张成这些未审实现的许可。
没有新增用户产品问题。服务器依赖只集中记录在[同一沟通文档](M2-客户端致服务端线上合同集中问题单-2026-09-29.md),不发送消息、不访问服务器源码、不操作正式账号。后续仍是一份完整合批方案、一份受审基线、一次正式前审,批准范围内连续实施。