Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-当前开发进度与执行TODO-2026-09-30.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

134 lines
22 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 当前开发进度与执行 TODO
> **2026-09-30 当前:C3e本人统计写已按原C3c第六轮许可实施并验证。** [裁决、实施记录及服务端统计合同](M2-C3e本人统计写裁决与实施记录-2026-09-30.md)。唯一生产SetLeadboardData的KV分支写本人LevelB/地区LevelB,原公式、SetLvData、调度及PF/AGG分支保持;最终双条件各33组646断言,CLI Loop编译0错269警告、非Play。原R2-S写入挂起已解除并完成,不再等待这项审核;榜读/好友/远端普通等级/公告/匹配、双闸及完整通关仍待后续。同批正常验证不另送审;未操作服务器、正式账号或打包。下方旧待R2-S裁决状态为历史。
> **2026-09-30 当前:客户端剩余项核查完成,本人统计写独立实施并入原C3c待裁决。** 见[本轮核查与R2-S裁决材料](M2-C3c客户端剩余项核查与本人统计独立实施待裁决-2026-09-30.md)。C3d交付13/13一致,已完成部分不重审;剩余共用业务8处直接SDK调用、GetPlayLv远端等级及开发冻结已分项定位。本人KV写能力已有,但第四/第五轮挂起限制尚未解除;本轮仅列具体文件/方法/测试与失败、多键、Flush差异供原报告一次裁决,未编码。旧暂存方案不恢复,原PF/AGG有效分支保留。此条覆盖下方历史状态。
> **C3d已按用户澄清实施并验证,getter边界不再阻塞。** [实施记录](M2-C3d资料缓存用户澄清与实施记录-2026-09-30.md):唯一生产KVUserService恢复原缓存默认值/同一资料对象/本人事件,他人昵称头像接既有SearchFriend;GetPlayLv最小解耦且原对外行为不变、未接远端等级。双条件各24组491断言通过,CLI Loop最终C#编译错误0、非Play;开工2120项源码仅两既有文件改变+一个测试新增。四项服务端能力、双闸及真实最终通关仍未完成;下方旧“第五轮尚未编码/待澄清”是历史状态,不再重复送审。
> **第五轮审核更新已确认,尚未编码。** 见[状态核验与边界](M2-C3c第五轮状态核验与缓存联动边界-2026-09-30.md):审核侧范围性批准唯一KVUserService文件的缓存及SearchFriend昵称/头像接线,四项服务端能力继续挂起;28/28、31/31、交付13/13 hash一致。发现GetPlayerLv默认1会经直接调用改变GetPlayLv未加载失败语义,与“后者不动”冲突,须在同一裁决澄清最小解耦边界,不能机械改值。C3ProfileCacheTests未建;首场景双闸与最终通关仍未关闭。本轮仅状态核验,不把审核通过等同实施完成。
> **当前服务端交付材料已完整汇总:** [四项PlayFab能力迁移对接文档](M2-四项PlayFab能力迁移-服务端开发对接文档-2026-09-30.md)包含等级榜、好友/公开资料、公告、匹配的原调用、输入输出、拟接口与JSON、原业务边界及联合验收。公告与匹配四步提案已补齐,旧清单“尚未设计”不再是当前文档状态;已有等价服务优先复用。LevelB只做原样存储平移。下一步服务端对照实际实现反馈,合入C3c完整审核后客户端接线。本轮无生产/服务器代码修改、无线上请求。
> **当前待设计事项统一以[待设计与接线清单](M2-C3c当前待设计与接线清单-2026-09-30.md)为准。** 仅补等级榜读取、好友/公开资料、公告、匹配的KV替代合同;已有等价入口直接复用,字段不足最小补字段,确无入口才补接口。LevelB公式/名称/更新时机、本人KV保存方向和LastLoginTimeUtc均已定,不再作为新设计。榜单原客户端入口保留,拟leaderboard/GetLeaderboard不是必须新增URL。C3c仍须整批审核后编码;旧条目保留历史,不能恢复已撤回提议。本轮仅文档更新。
> **最新用户纠正:只设计等级榜读取接口,LevelB不重新设计。** 原客户端计算、统计名称、数值、更新时机全部沿用,原PF统计写仅平移为本人KV写;当前源码仍调用PF,不能声称已存KV。此前把统计键列为新增设计/待决策项的表述撤回,见[范围纠正](M2-等级榜设计范围纠正-LevelB沿用原逻辑-2026-09-30.md)。C3c完整审核门槛保持,不单独增加LevelB审核。本轮仅文档,无代码/线上变更。
> **2026-09-30 当前:用户授权的等级榜读取与本人统计键设计已落盘。** 见[等级榜接口设计](M2-等级榜读取与本人统计键接口设计-待完整审核-2026-09-30.md):本人沿原LevelB/地区LevelB键写同一复合分数,拟由leaderboard/GetLeaderboard返回前50排名及公开资料。与好友接口纳入同一C3c完整审查;新接口是提案,不是线上事实。原统计配置对照与两键写具体调用仍须审清,整体未批准编码;下方旧“暂存+通用Flush/报告未落盘”等条目仅为历史,不能作为执行许可。本轮只更新文档,未改客户端、测试或服务器,未发正式请求。
> **用户已授权设计好友服务端接口**:已完成[好友KV资料接口设计](M2-好友KV资料服务端接口设计-待完整审核-2026-09-30.md)及6项受审hash。拟扩展原GetFriendsList,在原好友项增加Profile投影KV名字/头像/LevelB/LastLoginTimeUtc,保留字符串数组及原消费逻辑;缺值/失败/旧协议区别已写清。由服务端开发实施服务器部分,客户端不改服务器;当前是待完整审核合同,不再仅等待他方给字段名,也未声称部署或编码通过。
> **用户已明确本人存储裁决**:本人的LevelB和LastLogin可以存KV。LevelB沿原计算/触发点;登录时间沿已有LastLoginTimeUtc及原每日刷新顺序,不新加同义键。是否允许本人存储不再是未决项;好友/榜单返回及完整合同仍需审核,未局部开工。见[用户裁决](M2-本人LevelB与登录时间KV存储用户裁决-2026-09-30.md)。
> **第四轮已复核,下一步输入已整理**:审核确认方向/隔离/原消费边界准确,仍明确整体不可编码。四项具体协议事实已写为[服务端接口事实确认单](M2-C3c服务端接口事实确认单-2026-09-30.md),可直接转给现有接口负责侧填写;不再重问迁移方向或已测路由。原28/28、31/31一致,前8项增量仅审核报告因新增第四轮变化,已记录;本轮无代码修改或线上请求。
> **第三轮审核材料已更新**:本人KV无需目标玩家ID,现有客户端不需要删除参数;跨玩家走服务端公开资料/好友投影,原业务目标ID仍保留。LevelB本人KV统计写的方向已纳入,具体完成/失败合同仍待完整审查。统一读[隔离边界复审确认](M2-C3c隔离边界修订与复审确认-2026-09-30.md)及8项增量hash;待确定事项已去除过时重复问题。原28/28、31/31一致,本轮只更新文档,无新请求或编码。
> **KV跨账号读取已按用户要求实测**:101请求102、102请求101,各试JSON的playerId/playFabId/userId及URL的playerId,8/8 HTTP200但始终返回认证本人数据,摘要与本人基线相同;非403拒绝。14次登录/读取请求,无KV或好友写。具体结论见[跨账号实测](M2-C3c-KV跨账号读取实测结论-2026-09-30.md),不能再以SearchFriend成功声称KV可读他人,也不扩大为服务器无任何公开资料能力。
> **第二轮裁决已核;SearchFriend正式证据已补**:最新报告仍未整批PASS。按既有授权实测101/102四次自查/互查均HTTP200/code=1、返回正确目标UserID;等级均1,对照本人KV62/60,昵称/头像为空,无LevelB/LastLogin。现有ID场景不再列为只做过离线测试;不存在/失败场景和资料等价性仍未证实。本轮8次登录/读取请求,无KV/好友/资料写入,无生产测试源码修改。见[本轮记录](M2-C3c第二轮裁决核验与SearchFriend实测-2026-09-30.md)。
> **既有决定复核纠正**:登录时间已有先按KV保存、最终查询留联调的阶段方向,撤回重复要求用户选择DB/KV的问题。用户确认服务器相关接口未变,已测登录/KV读取/互加/好友列表和C3b离线兼容证据继续有效,不重复索要路由或样例。具体未返回的LastLogin/LevelB与其他SDK替代映射仍须核清。见[证据复核](M2-C3c既有裁决与接口证据复核-2026-09-30.md),完整审核通过后编码的门槛不变。
> **最新审核更新已复核:仍未整体通过。** 原ZCode新增修正与状态补充,采纳Nullable异常类型及缺时间不能扩大过滤的纠正,确认局部许可已撤回;未批准新接线。主会话再核统一28/28、原C3c 31/31一致。继续等待用户确定好友时间来源及统计/榜单、好友字段、公告、匹配的准确接口证据;禁止局部先编码。
> **当前硬门槛:C3c相关内容须全部审核通过后编码。** 用户已否定局部先行实施;主会话资料缓存开工裁决撤回,未改生产/测试代码,28/28基线一致。先按[待确定事项](M2-C3c完整审核前待确定事项-2026-09-30.md)与用户明确未定方向及补齐接口事实,再交审核端;不以局部可实施建议开工。
> **当前交审入口已完成**:用户将交AI审查,请统一使用[纯平移审查入口](M2-C3c纯平移统一审查入口-2026-09-30.md)和[28项受审基线](M2-C3c纯平移统一审查基线.json)。已列原调用链、撤回项、真实接口证据、R1–R6裁决问题和实施/测试边界;查询时重算LevelB也不默认批准。28/28及原C3c 31/31核验一致,报告仍统一交付M2-C3c剩余SDK接线独立差异审查-2026-09-30.md。当前无新编码许可,未改生产/服务器或运行线上测试。
> **最新用户纠正:LevelB保持PlayFab原方案,只平移到KV。** 已撤回上一条本人统计临时快照实施候选,不再等待其批准或继续送审。原计算、统计更新时点、排行榜/好友读取语义和业务流程均保持;KV承接原能力。见[当前裁决](M2-LevelB保持PlayFab原语义裁决-2026-09-30.md)。原暂存提议及hash仅为历史证据,未实施,无生产代码需要回滚;后续按原统计链完成等价接线核查,不擅自引入临时副本或新Flush流程。
> **15:55当前执行点:本人统计暂存的具体方案已完成,待现有C3c集中裁决。** 见[M2-C3c本人统计KV暂存实施增量-2026-09-30.md](M2-C3c本人统计KV暂存实施增量-2026-09-30.md)。生产候选只有LeadboardData两方法,复用固定store,原分数/await/失败log后正常完成保持;缺地区不造别名,LastLoginTimeUtc不改。真实类入宿主、双条件回归及CLI Loop测试范围已列清。31/31原C3c项、2122/2122 Client项一致;独立报告仍未落盘,本检查点未编码、未测试、未新增正式请求。方案细化不再是待办,下一步是核报告与正式裁决,再连续实施批准范围。
> **用户最新阶段方向:先存KV,后联调。** 已记录《M2-先存KV后联调的阶段移植方案-2026-09-30.md》:LevelB可作为迁移期KV分数快照候选,登录时间复用已有LastLoginTimeUtc;跨玩家返回与最终时间来源留到真正服务端联调。暂存不等于全链完成,原业务/跨日顺序不变,最终恢复冻结并清理闲置实现。本轮只落文档,LevelB新增生产接线尚未实施;具体增量并入现有C3c完整裁决,不拆逐字段审核。
> **服务器参考源码只读核查增量**:用户本次授权参考D:/ft/server/N3-Server(仅只读)。发现账号服务已更新DBPlayer.LastLoginTime,但四字段PlayerInfo没有投影时间;建议复用此值随好友列表返回LastLogin,保留客户端每日刷新KV时间原时序。LevelB由客户端等级×100000+建筑等级生成,建议作为KV派生响应字段,普通Level不改语义。该目录仍是旧十六进制ID/PF好友路线且无线上GetFriendsList action,不当作线上版本。详见《M2-LevelB与LastLogin服务器只读核查及建议-2026-09-30.md》;仅建议,尚未实施新合同。
> **15:36互加好友完成**:按用户批准,101邀请102、102接受,双方各返回对方,关系保留。非空项仅PlayFabId/DisplayName/AvatarUrl/Level;Level均1,KV实际等级101=62、102=60;未返回LastLogin/建筑等级,两账号KV也尚无LastLoginTimeUtc。本次14次正式请求含2次好友写,无KV写/资料更新。见《M2-C3c正式互加好友结果与字段差异-2026-09-30.md》。已取得非空结构,不再等待样例;剩余资料投影差异仍纳入同一次C3c裁决。103–110已获必要时使用授权,本次未使用。
> **15:09线上事实增量**:正式friend/GetFriendsList在101/102均HTTP200、code=1,接口已证实存在;两账号friends均为空,不能确认单项LastLogin/等级字段或KV来源。撤回“当前不支持”的推断,后续依据非空响应核字段。成功执行2次登录+2次好友只读请求,未写KV或改变好友关系;详见《M2-C3c好友列表线上事实补充-2026-09-30.md》。下文“无正式请求”为以前检查点快照。
> **C3c当前工作点:必要的集中差异审查。** 已找到历史friend/GetFriendsList及现有SearchFriend候选,但普通Level不能直接代替LevelB,缺LastLogin会影响伙伴邀请的`.Value`读取;榜单/公告/匹配还缺准确映射。已备[M2-C3c集中差异与待审方案](M2-C3c剩余SDK接线集中差异与待审方案-2026-09-30.md)和受审hash,审查侧一次核清,主会话核hash后按裁决连续接线。本轮无生产/测试变更;2122项Client与C3b的4交付+8证据均核验一致。
> SDK调用核对增量:PlayFabClientAsyncAPI有13处实际操作(另2处重试包装),其中4处共用业务仍直连PF:等级榜写/读、好友列表、公告。公告本次补入迁移TODO;他人等级/资料的KV远端读取仍缺接线。具体字段与保留流程见《M2-KV替代范围重申与剩余SDK接线集中核查-2026-09-30.md》。本次仅核查,无生产修改或新测试结论。
> C3b增量:旧字段名+新UserID普通请求兼容已核对并新增测试,双条件各21组380断言通过;生产不变。当前具体结果以M2-C3b-UserID兼容接线裁决与执行记录-2026-09-30.md为准。
更新:2026-09-30。本文件为当前进度汇总;旧接手卡、日志和阶段方案保留历史证据,旧“待审/尚未恢复”等状态以本文为准。本轮仅整理文档,不改生产代码、测试、服务器或配置。
## 当前结论
已完成独立KV用户服务、个人存档主干接线、已识别业务改动的纯平移核减及当前离线回归。处于 **C2d已实施、C3a补充离线验证通过;C3真实集成未完成、C4未关闭**。M2尚未整体完成,不能用调用数或断言数换算整体完成百分比。
迁移目标:KV模式下由KV管理器承接原PlayFab能力,保留原业务流程。等级榜、公开资料、好友列表、匹配属于原功能的迁移,不是新增需求。当前首先要完成客户端等价接线核对,不能因客户端包装器没有方法便认定服务端缺功能或将整个工作转交服务端。用户将与服务器开发侧沟通,客户端仍负责映射、接线与验证。
## 分项进度
| 项目 | 当前状态 | 剩余边界 |
|---|---|---|
| 独立KV登录/用户服务 | 已实现 | 固定提供方、新身份、原handle/31模块、注销撤销和原普通游戏服请求接线;真实首场景未验 |
| 个人存档迁移 | 主干已实现 | 原调用台账记录198/202业务项迁入共同store;其余3项已有固定KV提示路线并保留PF分支,1项原无消费者实现待核清理;另2处即时保存已映射。此数不代表全功能运行覆盖 |
| 问卷、邀请、邮件、商店、签到、活动等 | 本批接线与纯平移核减完成 | 保留原奖励/扣费/调用/异常/UI顺序;尚未逐功能真实线上验收 |
| HomePanel补单 | 保持原实现,冻结基线hash一致 | 没有增加await或重排补单流程 |
| 多余迁移实现 | 本批已回收 | 已撤回奖励等待/新增防重入/展示延后和旧缺陷修正;删除无消费者PlayerSaveAction、ReadEventArchive;最终仍需全量闲置审计 |
| 等级榜、他人资料、好友列表、公告、匹配 | 等价接线未完成;C3c待集中差异审查 | 具体字段差异及候选接口已形成受审包,不再把个人存档方向或新ID当待确认项 |
| 首场景 | 双阶段闸仍保留 | 等级榜/好友实际调用链尚含PF;全链就绪及实证前不放开 |
| 最终清理及通关 | 未完成 | 开发冻结/忽略路径恢复、实际保存退出恢复、渠道与Player验证、C4独立实施复核 |
## ID口径
KV模式业务玩家身份统一采用服务器登录认证返回的PlayerId,客户端公开为UserId/ApiPlayerId,并用于对应KV档案归属。不要从任意可修改的KV字段重新决定身份,不新增一套玩家ID。InternalId仅保留给原有明确使用它的接口,CustomId是登录输入。旧playFabId请求字段名可先保留兼容、字段值改新UserID,字段改名由双方同步另行处理。邮件ID、匹配票据ID等业务对象ID不替换成玩家ID。
此项沿用已定身份方向,不构成额外业务重构,也不证明服务端内部仍使用PlayFab。
## 已有验证证据
| 验证项 | 最新结果 | 说明 |
|---|---|---|
| Unity CLI Loop Editor编译 | 0错误、269警告 | C2d最终编译;其后无生产代码变化 |
| 实际服务离线宿主 | NON_ANDROID、ANDROID+AGG各18组254断言 | 含真实KV服务/存储与部分业务消费者,网络及配置等使用夹具 |
| 完整加载回归 | 90组、2006断言、0失败 | 计数波动不当作新增覆盖 |
| 原耗能/奖励链 | 19组85断言 / 55组243断言 | 离线真实模型及订阅者,不代表正式场景运行 |
| 原装备链 | 9组28断言 | 隔离现场已恢复 |
| M08-M23 / B2-20 | 28断言 / 真实31模块83断言 | 原对象保持、隔离容器恢复 |
| 退出回调 | 10组35断言 | 补临时契约编译输入;验证OnStarted,不是整个真实退出链 |
| 非Editor工厂探针 | 2类验证工厂不可用检查通过 | 需临时排除不相关测试驱动;不是Unity Player编译 |
最后Unity状态playing/enabled/ready/permitExists均false。当前无正式账号请求、Play、支付或打包。旧测试工程两处编译输入问题通过可复跑临时targets补齐,原工程未被永久修复,不能隐藏该限制。
## 最新审核状态与裁决
已读取原ZCode《M2-当前状态独立审核-防跑偏核查-2026-09-30.md》,报告hash为022BC91E3B295F38044D0E1F697502FFDD9EA0F28241139ED386055348551B07。
- 接受其限定结论:当前代码与纯平移裁决一致,未发现跑偏。该报告只读静态核查、未运行测试,不是C4终审,也没有批准提前解除阶段闸。
- 主会话重算C2d交付113项:112项一致,唯一差异AGENTS.md。AGENTS新增条目由开发侧根据用户“请记住需求”及已有规则授权写入,并非声称用户亲自编辑;当前hash与《M2-KV替代范围重申-规则增量hash.json》一致。已具备授权与追溯,不重复要求用户确认。
- 报告提到的3个归档/工具链提交确实存在。本轮与前述C2d/C3a操作未执行git提交,也不凭提交者名称推断操作者或授权;本进度整理不对此作新的归属结论,不回滚现有工作树。
- 已审同合同替换不重复送审。剩余SDK→KV映射若涉及尚未覆盖的能力/合同,集中一次完整核查;最终整批一次实施复核。
## 后续 TODO(执行顺序)
- [x] 独立KV服务、个人存档主干和两个即时保存入口接线。
- [x] 核减额外业务改动,保留HomePanel原补单及原奖励/异常流程。
- [x] 补齐两个旧钓鱼离线验证宿主注入,完成C2d/C3a当前回归。
- [x] 恢复debugconfig的EventApiURL为http://s101.local:18080/,其余字段不变。
- [x] 读取最新防跑偏审核、复算hash、记录限定裁决与AGENTS授权来源。
- [x] 客户端核查剩余SDK调用、历史候选路由、真实消费者差异,封存C3c一次性审查输入。
- [ ] 审查侧一次核清五类剩余SDK能力到KV的具体映射及文件边界;依据C3c第3节裁决,只有缺事实项才集中外部沟通。
- [ ] 在完整裁决范围内连续实现剩余接线,保持新UserID与原流程,不逐功能重复送审。
- [ ] 完成真实首场景、PF调用计数为0及代表业务保存→退出→新进程恢复验证,再按既定条件同时解除两阶段闸。当前真实运行授权/条件尚未具备。
- [ ] 逐项恢复所有开发冻结/忽略路径,清理此次迁移造成的闲置实现,保留仍使用的PF/AGG与原功能;更新调用台账实际运行覆盖。
- [ ] C4整批独立实施复核及最终通关。Player/渠道验证仍欠证,当前暂不打包。
- [ ] 整个迁移完成后,再按用户授权处理PlayerKV命名及已登记原业务缺陷/优化。
## 原始证据索引
- M2-合批-C2d检查点与交付hash.json:代码交付基线,后续仅AGENTS规则存在已登记增量。
- M2-纯平移主会话裁决与C2d实施记录-2026-09-30.md:本批核减、原缺陷登记与验证限制。
- M2-C3a验证边界与执行记录-2026-09-30.md / M2-C3a验证证据hash.json:补充回归及实际未接通调用链。
- M2-KV替代范围重申与剩余SDK接线集中核查-2026-09-30.md:工作归属纠偏与一次性核查输入。
- M2-当前状态独立审核-防跑偏核查-2026-09-30.md:最新独立静态核查,原文保持不改。
固定http://s101.local:18080/;仅Unity CLI Loop;不使用UnitySkills;不访问或修改本地/远程服务器代码;保留现有工作树;不夹带业务修复或重构。