完善联调标准化与诊断链路
This commit is contained in:
220
b2f.md
220
b2f.md
@@ -1,6 +1,6 @@
|
||||
# b2f
|
||||
> 文档版本:v1.10
|
||||
> 最后更新:2026-04-03 20:10:25
|
||||
> 文档版本:v1.19
|
||||
> 最后更新:2026-04-03 16:43:25
|
||||
|
||||
|
||||
说明:
|
||||
@@ -12,6 +12,172 @@
|
||||
|
||||
## 待确认
|
||||
|
||||
### B2F-032
|
||||
|
||||
- 时间:2026-04-03 16:43:25
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已收到 frontend 最新一轮结构化调试日志,并确认积分赛主链已打通
|
||||
- 当前日志事实一致指向:
|
||||
- `entry-home.cardEventIds` 已包含 `evt_demo_score_o_001`
|
||||
- `event-play.pageEventId = evt_demo_score_o_001`
|
||||
- `event-prepare.pageEventId = evt_demo_score_o_001`
|
||||
- `launch.response.releaseId = rel_74bb47a0d0d3d252`
|
||||
- `runtime-compiler.details.game.mode = score-o`
|
||||
- `runtime-compiler.details.playfield.kind = control-set`
|
||||
- 当前 backend 没再看到“明明选积分赛却实际跑成顺序赛”的问题
|
||||
- 当前日志链还有 3 个口径优化项:
|
||||
- 非多赛道玩法时,`assignmentMode` 现在是空字符串 `\"\"`
|
||||
- `variantId` 为空时,`runtimeCourseVariantId` 仍可能有值,前端展示层不要把两者混为“用户选了赛道”
|
||||
- `occurredAt` 和 `receivedAt` 会有轻微时钟漂移,排查顺序时建议增加前端本地递增序号
|
||||
- 需要对方确认什么:
|
||||
- frontend 后续日志上报请优化为:
|
||||
- 非多赛道玩法时:
|
||||
- `assignmentMode = null` 或不传
|
||||
- `variantId = null` 或不传
|
||||
- 新增:
|
||||
- `details.seq`
|
||||
- 如需展示赛道来源,请区分:
|
||||
- `launchVariantId`
|
||||
- `runtimeCourseVariantId`
|
||||
- 是否已解决:否
|
||||
|
||||
### B2F-031
|
||||
|
||||
- 时间:2026-04-03 16:37:41
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已收到 frontend 新增的结构化调试日志
|
||||
- 这批日志已经明确说明:本轮前端实际进入的是经典顺序赛,不是积分赛
|
||||
- 关键事实如下:
|
||||
- `entry-home.cardEventIds = [evt_demo_001, evt_demo_variant_manual_001]`
|
||||
- `event-play.pageEventId = evt_demo_001`
|
||||
- `event-prepare.pageEventId = evt_demo_001`
|
||||
- `launch.response.releaseId = rel_demo_001`
|
||||
- `runtime-compiler.details.game.mode = classic-sequential`
|
||||
- backend 已确认根因不是积分赛 release 缺失,而是 demo 首页卡片入口配置错误:
|
||||
- 当前首页卡片查询只取 `home_primary`
|
||||
- score-o demo 卡此前被种到了 `home_secondary`
|
||||
- 所以前端首页根本拿不到积分赛入口
|
||||
- backend 已修复:
|
||||
- `card_demo_score_o_001` 改为 `home_primary`
|
||||
- 同时把优先级调高到 `98`
|
||||
- 需要对方确认什么:
|
||||
- frontend 请在 backend 重启后重新执行:
|
||||
- `Bootstrap Demo`
|
||||
- 进入首页再看 `cardEventIds`
|
||||
- 并确认首页卡片中是否已经出现:
|
||||
- `evt_demo_score_o_001`
|
||||
- 是否已解决:否
|
||||
|
||||
### B2F-030
|
||||
|
||||
- 时间:2026-04-03 16:16:38
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已新增 dev 调试接口:
|
||||
- `POST /dev/client-logs`
|
||||
- `GET /dev/client-logs`
|
||||
- `DELETE /dev/client-logs`
|
||||
- workbench 已新增:
|
||||
- `前端调试日志`
|
||||
- `拉取前端日志`
|
||||
- `清空前端日志`
|
||||
- 这套能力只用于联调,不参与正式生产日志链路
|
||||
- backend 当前建议 frontend 在关键阶段主动上报日志,至少覆盖:
|
||||
- launch 返回后
|
||||
- 地图页拿到最终 manifest 后
|
||||
- 运行时编译完成后
|
||||
- 发现缓存命中 / 恢复 session / 模式不符时
|
||||
- 需要对方确认什么:
|
||||
- frontend 请按最小字段约定接入并回传一轮:
|
||||
- `source`
|
||||
- `level`
|
||||
- `category`
|
||||
- `message`
|
||||
- `eventId`
|
||||
- `releaseId`
|
||||
- `sessionId`
|
||||
- `manifestUrl`
|
||||
- `route`
|
||||
- `details.schemaVersion`
|
||||
- `details.playfield.kind`
|
||||
- `details.game.mode`
|
||||
- `details.phase`
|
||||
- 是否已解决:否
|
||||
|
||||
### B2F-029
|
||||
|
||||
- 时间:2026-04-03 15:44:32
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已确认一个具体问题:
|
||||
- 所有“带 `Bootstrap Demo` 的一键按钮”,此前都会先把默认 demo 数据重新写回表单
|
||||
- 这会把前面已经选好的积分赛入口再次冲回顺序赛默认链
|
||||
- 受影响的不只是:
|
||||
- `整条链一键验收`
|
||||
- 还包括:
|
||||
- `看首页是否正常`
|
||||
- `快速进一局`
|
||||
- `发布活动配置(自动补 Runtime)`
|
||||
- backend 已修复为:
|
||||
- 这些一键流在调用 `Bootstrap Demo` 后,会按当前已选中的 `event` 回填对应的 `source / build / release / runtime`
|
||||
- 不再无条件回退到 `evt_demo_001`
|
||||
- 需要对方确认什么:
|
||||
- frontend 请重启 backend 后复验:
|
||||
- `Use Score-O Demo`
|
||||
- `整条链一键验收`
|
||||
- 并确认地图信息面板里是否已切到:
|
||||
- `eventPublicID = evt_demo_score_o_001`
|
||||
- `game.mode = score-o`
|
||||
- `playfield.kind = control-set`
|
||||
- 是否已解决:否
|
||||
|
||||
### B2F-028
|
||||
|
||||
- 时间:2026-04-03 15:29:07
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已核对积分赛 demo 当前发布链,以下 3 层结果一致:
|
||||
- 本地源配置 [score-o.json](D:/dev/cmr-mini/event/score-o.json)
|
||||
- OSS 配置 [score-o.json](https://oss-mbh5.colormaprun.com/gotomars/event/score-o.json)
|
||||
- 当前 event `evt_demo_score_o_001` 的正式 release manifest
|
||||
- 当前后端确认值为:
|
||||
- `schemaVersion = 1`
|
||||
- `playfield.kind = control-set`
|
||||
- `game.mode = score-o`
|
||||
- 当前积分赛正式 release 为:
|
||||
- `eventPublicID = evt_demo_score_o_001`
|
||||
- `releaseId = rel_1c7601964d7f3d00`
|
||||
- `manifestUrl = https://oss-mbh5.colormaprun.com/gotomars/event/releases/evt_demo_score_o_001/rel_1c7601964d7f3d00/manifest.json`
|
||||
- 如果 frontend 当前跑出来仍是顺序赛,优先怀疑“实际消费的不是当前 launch 返回的 manifest”,或“运行时仍走旧缓存/旧默认逻辑”
|
||||
- backend 已在 workbench 新增:
|
||||
- `当前 Launch 实际配置摘要`
|
||||
- 该摘要会由 backend 代读当前 launch 对应 manifest,并直接显示:
|
||||
- `configUrl`
|
||||
- `releaseId`
|
||||
- `manifestUrl`
|
||||
- `schemaVersion`
|
||||
- `playfield.kind`
|
||||
- `game.mode`
|
||||
- 这块摘要只用于联调排查,不参与正式客户端运行链路
|
||||
- 需要对方确认什么:
|
||||
- frontend 请先排查并回传这 4 项事实:
|
||||
- `POST /events/{eventPublicID}/launch` 响应里的:
|
||||
- `launch.config.configUrl`
|
||||
- `launch.resolvedRelease.manifestUrl`
|
||||
- `launch.config.releaseId`
|
||||
- 地图页/运行时真正读取的最终 manifest URL
|
||||
- 最终加载后的 manifest 摘要:
|
||||
- `schemaVersion`
|
||||
- `playfield.kind`
|
||||
- `game.mode`
|
||||
- 如仍表现为顺序赛,请同时给出:
|
||||
- 控制台日志
|
||||
- 网络请求日志
|
||||
- 是否存在本地缓存/上次 session 恢复痕迹
|
||||
- 是否已解决:否
|
||||
|
||||
### B2F-001
|
||||
|
||||
- 时间:2026-04-01
|
||||
@@ -103,6 +269,56 @@
|
||||
|
||||
## 已确认
|
||||
|
||||
### B2F-027
|
||||
|
||||
- 时间:2026-04-03 14:37:00
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- workbench 已提供 3 个显式玩法测试入口:
|
||||
- `Use Classic Demo`
|
||||
- `Use Score-O Demo`
|
||||
- `Use Manual Variant Demo`
|
||||
- 对应联调 event 为:
|
||||
- `evt_demo_001`
|
||||
- `evt_demo_score_o_001`
|
||||
- `evt_demo_variant_manual_001`
|
||||
- 积分赛入口已固定到:
|
||||
- `rel_demo_score_o_001`
|
||||
- `score-o.json`
|
||||
- 需要对方确认什么:
|
||||
- frontend 后续若要测顺序赛或积分赛,优先使用上述显式入口,而不是自行猜 event/release
|
||||
- 是否已解决:是
|
||||
|
||||
### B2F-026
|
||||
|
||||
- 时间:2026-04-03 14:29:42
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已把 manual 多赛道 demo 的赛道输入切到真实 KML
|
||||
- 当前 `Bootstrap Demo` 会准备两条真实赛道输入:
|
||||
- `variant_a -> c01.kml`
|
||||
- `variant_b -> c02.kml`
|
||||
- 当前地图仍继续共用同一组真实 tiles / mapmeta,这符合当前多赛道联调阶段的实际需要
|
||||
- 需要对方确认什么:
|
||||
- frontend 如需回归 manual 多赛道,请先重新执行一次 `Bootstrap Demo`
|
||||
- 是否已解决:是
|
||||
|
||||
### B2F-025
|
||||
|
||||
- 时间:2026-04-03 14:21:24
|
||||
- 谁提的:backend
|
||||
- 当前事实:
|
||||
- backend 已开始“真实输入替换第一刀”
|
||||
- 当前 `Bootstrap Demo` 不再给生产骨架使用 `example.com` 占位赛道/地图地址
|
||||
- 当前已改成真实可访问输入:
|
||||
- `CourseSource.fileUrl = https://oss-mbh5.colormaprun.com/gotomars/kml/lxcb-001/10/c01.kml`
|
||||
- `TileRelease.tileBaseUrl = https://oss-mbh5.colormaprun.com/gotomars/map/lxcb-001/tiles/`
|
||||
- `TileRelease.metaUrl = https://oss-mbh5.colormaprun.com/gotomars/map/lxcb-001/tiles/meta.json`
|
||||
- 这批真实输入仍走同一条一键回归链,不要求 frontend 改联调方式
|
||||
- 需要对方确认什么:
|
||||
- frontend 如需复验真实输入,请重新执行一次 `Bootstrap Demo`
|
||||
- 是否已解决:是
|
||||
|
||||
### B2F-024
|
||||
|
||||
- 时间:2026-04-03 20:10:25
|
||||
|
||||
Reference in New Issue
Block a user