32 KiB
32 KiB
b2f
文档版本:v1.26 最后更新:2026-04-03 19:18:34
说明:
- 只写事实和请求
- 每条固定包含:时间、谁提的、当前事实、需要对方确认什么、是否已解决
待确认
B2F-038
- 时间:2026-04-03 19:13:57
- 谁提的:backend
- 当前事实:
- backend 已按“活动卡片列表最小产品化第一刀”补齐以下返回中的活动卡片最小摘要字段:
GET /cardsGET /homeGET /me/entry-home
- 当前最小摘要字段为:
summarystatusstatusCodetimeWindowctaTextisDefaultExperienceeventTypecurrentPresentationcurrentContentBundle
- backend 当前希望 frontend 这轮优先做的是:
- 活动列表页按这组字段完成最小接线
- 详情页继续沿用:
play.canLaunchcurrentPresentationcurrentContentBundle这组已发布 release 语义
- 联调时继续通过 frontend 调试日志回传以下事实:
- 列表页实际拿到的
cardEventIds - 点击卡片后的
eventId - 详情页实际显示的
status / canLaunch / currentPresentation / currentContentBundle
- 列表页实际拿到的
- backend 已按“活动卡片列表最小产品化第一刀”补齐以下返回中的活动卡片最小摘要字段:
- 需要对方确认什么:
- frontend 请按这组字段完成活动卡片列表最小实现,并回写:
- 当前字段是否足够
- 列表页是否还缺必需字段
- 最新日志里是否已能稳定看到:
cardEventIdsclickedEventIddetail.statusdetail.canLaunch
- frontend 请按这组字段完成活动卡片列表最小实现,并回写:
- 是否已解决:否
B2F-037
- 时间:2026-04-03 22:52:10
- 谁提的:backend
- 当前事实:
- backend 已根据 frontend 在
F2B-013的结构化日志,确认 manual 多赛道当前不显示赛道选择区的根因不在 frontend 展示层 - 当前 frontend 日志事实为:
event-play.pageEventId = evt_demo_variant_manual_001event-play.variantCount = 0event-prepare.variantCount = 0event-prepare.selectableVariantCount = 0event-prepare.showVariantSelector = false
- backend 进一步核对当前数据库里的该活动当前发布 release:
eventPublicID = evt_demo_variant_manual_001releaseId = rel_69d4778bdbb398b4- 该 release 的
payload_jsonb当前缺少:play.assignmentModeplay.courseVariants
- 根因是:
- manual demo 的 source/build 数据此前仍按单赛道顺序赛模板生成
- 导致后续 publish 出来的新 release 没把多赛道配置带进去
- backend 已修复:
Bootstrap Demo准备 manual demo source/build 时,会显式写入:play.assignmentMode = manualplay.courseVariants = [variant_a, variant_b]
- backend 已根据 frontend 在
- 需要对方确认什么:
- 无,当前这条已通过本轮联调日志确认
- 是否已解决:是
B2F-036
- 时间:2026-04-03 22:34:08
- 谁提的:backend
- 当前事实:
- backend 已按活动卡片列表最小产品化第一刀,统一补齐以下返回里的卡片摘要字段:
GET /cardsGET /homeGET /me/entry-home
- 当前新增/补齐字段为:
summarystatusstatusCodetimeWindowctaTextisDefaultExperienceeventTypecurrentPresentationcurrentContentBundle
- 当前口径固定如下:
summary缺失时回退:当前暂无活动摘要timeWindow缺失时回退:时间待公布ctaText当前由 backend 派生:- 默认体验活动:
进入体验 - 进行中:
进入活动 - 已结束:
查看回顾 - 其余:
查看详情
- 默认体验活动:
currentPresentation / currentContentBundle继续表示当前已发布 release 摘要,不是 event 草稿默认值
- backend 已给
cards落显式字段:is_default_experience
- 当前 demo 数据已标记:
- 顺序赛为默认体验活动
- 积分赛、多赛道为普通活动
- backend 已按活动卡片列表最小产品化第一刀,统一补齐以下返回里的卡片摘要字段:
- 需要对方确认什么:
- frontend 可按以上字段和降级规则开始活动卡片列表最小产品化第一刀
- frontend 请回写:
- 当前字段是否足够启动列表页最小实现
- 是否还缺列表页必需名称摘要
- 是否已解决:否
B2F-035
- 时间:2026-04-03 18:16:19
- 谁提的:backend
- 当前事实:
- backend 已根据 frontend 在
F2B-012的反馈,正式收紧play.canLaunch和POST /events/{eventPublicID}/launch的前置条件 - 当前规则已改为:
- 仅当当前 event 满足以下条件时,
play.canLaunch = true- event
status = active - 已存在当前发布 release
- 当前发布 release 有
manifest - 当前发布 release 已绑定
runtime - 当前发布 release 已绑定
presentation - 当前发布 release 已绑定
content bundle
- event
- 仅当当前 event 满足以下条件时,
- 当前若缺任一项,backend 会返回更明确原因,例如:
current published release is missing runtime bindingcurrent published release is missing presentation bindingcurrent published release is missing content bundle binding
launch当前也已按同一套规则阻断,避免出现:play.canLaunch = false- 但直接调用
launch仍能进局
- backend 已根据 frontend 在
- 需要对方确认什么:
- frontend 请在 backend 重启后复验:
- 当
currentPresentation / currentContentBundle / runtime任意缺失时,play.canLaunch是否已变为false play.reason是否已返回更具体缺失原因
- 当
- frontend 页面当前可继续沿用:
canLaunch=false时禁用进入动作- 同时展示 backend 返回的
reason
- frontend 请在 backend 重启后复验:
- 是否已解决:否
B2F-034
- 时间:2026-04-03 18:05:19
- 谁提的:backend
- 当前事实:
- backend 当前已确认一个需要 frontend 明确区分的语义:
currentPresentationcurrentContentBundle当前表示的是“当前已发布 release 上实际绑定的展示版本 / 内容包版本摘要”
- 它们当前不是:
- 活动草稿默认值
- event 默认绑定草稿态
- 这也解释了为什么:
- 后台未完成导入 + 默认绑定 + publish 之前,这两项可能为空
- 一旦跑过后台发布链,它们就会开始显示
- backend 当前正式规则也已明确:
- 玩家进入游戏必须基于“已发布 release”
- 不能基于未发布默认配置直接放行
- backend 当前已确认一个需要 frontend 明确区分的语义:
- 需要对方确认什么:
- frontend 请按以下口径调整页面语义:
- 文案优先改成:
当前发布展示版本当前发布内容包版本
- 玩家能否继续进入,优先只看:
play.canLaunch
- 当这两项为空时,优先解释为:
- 当前发布 release 未绑定
- 或当前尚未发布
- 不要把它们展示成“活动默认配置已存在,只是未显示”
- 文案优先改成:
- frontend 请按以下口径调整页面语义:
- 是否已解决:否
B2F-032
- 时间:2026-04-03 16:43:25
- 谁提的:backend
- 当前事实:
- backend 已收到 frontend 最新一轮结构化调试日志,并确认积分赛主链已打通
- 当前日志事实一致指向:
entry-home.cardEventIds已包含evt_demo_score_o_001event-play.pageEventId = evt_demo_score_o_001event-prepare.pageEventId = evt_demo_score_o_001launch.response.releaseId = rel_74bb47a0d0d3d252runtime-compiler.details.game.mode = score-oruntime-compiler.details.playfield.kind = control-set
- 当前 backend 没再看到“明明选积分赛却实际跑成顺序赛”的问题
- 当前日志链还有 3 个口径优化项:
- 非多赛道玩法时,
assignmentMode现在是空字符串\"\" variantId为空时,runtimeCourseVariantId仍可能有值,前端展示层不要把两者混为“用户选了赛道”occurredAt和receivedAt会有轻微时钟漂移,排查顺序时建议增加前端本地递增序号
- 非多赛道玩法时,
- 需要对方确认什么:
- frontend 后续日志上报请优化为:
- 非多赛道玩法时:
assignmentMode = null或不传variantId = null或不传
- 新增:
details.seq
- 如需展示赛道来源,请区分:
launchVariantIdruntimeCourseVariantId
- 非多赛道玩法时:
- frontend 后续日志上报请优化为:
- 是否已解决:否
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_001event-prepare.pageEventId = evt_demo_001launch.response.releaseId = rel_demo_001runtime-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
- frontend 请在 backend 重启后重新执行:
- 是否已解决:否
B2F-030
- 时间:2026-04-03 16:16:38
- 谁提的:backend
- 当前事实:
- backend 已新增 dev 调试接口:
POST /dev/client-logsGET /dev/client-logsDELETE /dev/client-logs
- workbench 已新增:
前端调试日志拉取前端日志清空前端日志
- 这套能力只用于联调,不参与正式生产日志链路
- backend 当前建议 frontend 在关键阶段主动上报日志,至少覆盖:
- launch 返回后
- 地图页拿到最终 manifest 后
- 运行时编译完成后
- 发现缓存命中 / 恢复 session / 模式不符时
- backend 已新增 dev 调试接口:
- 需要对方确认什么:
- frontend 请按最小字段约定接入并回传一轮:
sourcelevelcategorymessageeventIdreleaseIdsessionIdmanifestUrlroutedetails.schemaVersiondetails.playfield.kinddetails.game.modedetails.phase
- frontend 请按最小字段约定接入并回传一轮:
- 是否已解决:否
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
- 这些一键流在调用
- backend 已确认一个具体问题:
- 需要对方确认什么:
- frontend 请重启 backend 后复验:
Use Score-O Demo整条链一键验收
- 并确认地图信息面板里是否已切到:
eventPublicID = evt_demo_score_o_001game.mode = score-oplayfield.kind = control-set
- frontend 请重启 backend 后复验:
- 是否已解决:否
B2F-028
- 时间:2026-04-03 15:29:07
- 谁提的:backend
- 当前事实:
- backend 已核对积分赛 demo 当前发布链,以下 3 层结果一致:
- 本地源配置 score-o.json
- OSS 配置 score-o.json
- 当前 event
evt_demo_score_o_001的正式 release manifest
- 当前后端确认值为:
schemaVersion = 1playfield.kind = control-setgame.mode = score-o
- 当前积分赛正式 release 为:
eventPublicID = evt_demo_score_o_001releaseId = rel_1c7601964d7f3d00manifestUrl = 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,并直接显示:
configUrlreleaseIdmanifestUrlschemaVersionplayfield.kindgame.mode
- 这块摘要只用于联调排查,不参与正式客户端运行链路
- backend 已核对积分赛 demo 当前发布链,以下 3 层结果一致:
- 需要对方确认什么:
- frontend 请先排查并回传这 4 项事实:
POST /events/{eventPublicID}/launch响应里的:launch.config.configUrllaunch.resolvedRelease.manifestUrllaunch.config.releaseId
- 地图页/运行时真正读取的最终 manifest URL
- 最终加载后的 manifest 摘要:
schemaVersionplayfield.kindgame.mode
- 如仍表现为顺序赛,请同时给出:
- 控制台日志
- 网络请求日志
- 是否存在本地缓存/上次 session 恢复痕迹
- frontend 请先排查并回传这 4 项事实:
- 是否已解决:否
B2F-001
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- backend 当前主链已经可联调:
POST /auth/login/wechat-miniGET /me/entry-homeGET /events/{eventPublicID}/playPOST /events/{eventPublicID}/launchPOST /sessions/{sessionPublicID}/startPOST /sessions/{sessionPublicID}/finishGET /sessions/{sessionPublicID}/result
- 当前建议统一使用 demo 入口:
eventPublicID = evt_demo_001channelCode = mini-demochannelType = wechat_mini
- backend 当前主链已经可联调:
- 需要对方确认什么:
- frontend 是否按这组 demo 数据作为当前唯一联调入口
- 是否已解决:否
B2F-002
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- 进入游戏的正式流程必须以
launch返回值为准 - backend 当前约定字段:
launch.resolvedRelease.releaseIdlaunch.resolvedRelease.manifestUrllaunch.resolvedRelease.manifestChecksumSha256launch.config.configUrllaunch.config.configLabellaunch.config.releaseIdlaunch.config.routeCodelaunch.business.sessionIdlaunch.business.sessionTokenlaunch.business.sessionTokenExpiresAt
- 进入游戏的正式流程必须以
- 需要对方确认什么:
- frontend 是否确认正式流程只消费上述字段,不再自行推断 release URL
- 是否已解决:否
B2F-015
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已阅读前端多赛道文档:
- backend 认可第一阶段先做“最小契约”,不先做完整后台模型
- backend 当前建议的第一阶段正式口径为:
play.assignmentModeplay.courseVariants[]idnamedescriptionrouteCodeselectable
launch.variant.idlaunch.variant.namelaunch.variant.routeCodelaunch.variant.assignmentModesession / ongoing / recent / result摘要中补:variantIdvariantNamerouteCode
- backend 第一阶段实现目标仍然保持保守:
- 一个 session 只绑定一个最终
variantId launch返回最终绑定结果- 恢复链不重新分配 variant
- 一个 session 只绑定一个最终
- 当前兼容性约束:
- 如果
assignmentMode=manual且前端暂时未传variantId - backend 当前会先回退到首个可选 variant,避免旧主链直接被打断
- 如果
- backend 当前已完成第一阶段最小实现:
GET /events/{eventPublicID}/playPOST /events/{eventPublicID}/launchGET /me/entry-homeGET /sessions/{sessionPublicID}GET /sessions/{sessionPublicID}/resultGET /me/resultsGET /me/sessions- 上述链路已能携带第一阶段 variant 摘要字段
- 需要对方确认什么:
- frontend 可按这组字段开始第一阶段联调
- 是否已解决:是
已确认
B2F-033
- 时间:2026-04-03 17:25:35
- 谁提的:backend
- 当前事实:
- backend 已把玩法切换对应的联调资源补齐到 workbench:
presentation schemacontent manifestasset manifest
- 玩法切换现在会自动填真实 dev 资源地址,不再继续保留
example.com占位:GET /dev/demo-assets/presentations/{demoKey}GET /dev/demo-assets/content-manifests/{demoKey}
- 当前联调样例文案也已统一成中文活动样例,便于 frontend 直接核对页面显示与日志事实
- backend 已把玩法切换对应的联调资源补齐到 workbench:
- 需要对方确认什么:
- frontend 如需核对当前玩法对应的展示/内容输入,可直接对照 workbench 当前表单值与上述两条 dev 资源地址
- 是否已解决:是
B2F-027
- 时间:2026-04-03 14:37:00
- 谁提的:backend
- 当前事实:
- workbench 已提供 3 个显式玩法测试入口:
Use Classic DemoUse Score-O DemoUse Manual Variant Demo
- 对应联调 event 为:
evt_demo_001evt_demo_score_o_001evt_demo_variant_manual_001
- 积分赛入口已固定到:
rel_demo_score_o_001score-o.json
- workbench 已提供 3 个显式玩法测试入口:
- 需要对方确认什么:
- frontend 后续若要测顺序赛或积分赛,优先使用上述显式入口,而不是自行猜 event/release
- 是否已解决:是
B2F-026
- 时间:2026-04-03 14:29:42
- 谁提的:backend
- 当前事实:
- backend 已把 manual 多赛道 demo 的赛道输入切到真实 KML
- 当前
Bootstrap Demo会准备两条真实赛道输入:variant_a -> c01.kmlvariant_b -> c02.kml
- 当前地图仍继续共用同一组真实 tiles / mapmeta,这符合当前多赛道联调阶段的实际需要
- 需要对方确认什么:
- frontend 如需回归 manual 多赛道,请先重新执行一次
Bootstrap Demo
- frontend 如需回归 manual 多赛道,请先重新执行一次
- 是否已解决:是
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.kmlTileRelease.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
- frontend 如需复验真实输入,请重新执行一次
- 是否已解决:是
B2F-024
- 时间:2026-04-03 20:10:25
- 谁提的:backend
- 当前事实:
- backend 已确认
evt_demo_variant_manual_001曾存在历史残留的launchedsession,导致play.primaryAction=continue - backend 已把清理逻辑并入
POST /dev/bootstrap-demo - 现在每次准备 demo 数据时,都会自动把 demo event 下残留的:
launchedrunningsession 改成cancelled
- 这意味着前端后续再用标准测试链回归时,不需要手工清理旧 demo ongoing
- backend 已确认
- 需要对方确认什么:
- frontend 遇到这类“明明本地没有恢复快照,但后端仍返回 continue”的情况,优先先重新执行一次
Bootstrap Demo
- frontend 遇到这类“明明本地没有恢复快照,但后端仍返回 continue”的情况,优先先重新执行一次
- 是否已解决:是
B2F-023
- 时间:2026-04-03 13:24:38
- 谁提的:backend
- 当前事实:
- backend 已把标准联调回归收成一键流
- workbench 当前新增:
一键标准回归回归结果汇总
- 这条链会在标准发布链之后继续自动验证:
GET /events/{eventPublicID}/playPOST /events/{eventPublicID}/launchGET /sessions/{sessionPublicID}/resultGET /me/sessionsGET /me/results
- 回归结果会直接显示分项通过/未通过,不再要求 frontend 自己口头判断
- 需要对方确认什么:
- frontend 当前回归优先使用这条一键标准回归链
- 是否已解决:是
B2F-022
- 时间:2026-04-03 13:18:42
- 谁提的:backend
- 当前事实:
- backend 当前已进入“联调标准化阶段”
- 当前推荐 frontend 优先使用 workbench 的:
Bootstrap Demo一键补齐 Runtime 并发布作为联调回归入口
- backend 现在提供的不是零散 demo 文本,而是一套可重复创建的真实测试对象:
placemap assettile releasecourse sourcecourse setcourse variantruntime bindingpresentationcontent bundlerelease
- 如果联调失败,workbench 当前会直接给出:
- 分步日志
- 真实错误消息
- stack
- 最后一次 curl
- 预期判定
- 需要对方确认什么:
- frontend 回归时优先基于这条一键测试链,不再先手工拼测试数据
- 是否已解决:是
B2F-019
- 时间:2026-04-03 12:36:15
- 谁提的:backend
- 当前事实:
- backend 已完成活动运营域第二阶段第四刀的后台最小实现:
presentation importevent 默认 active 绑定publish默认继承
- 本刀没有改前端当前稳定消费字段语义:
resolvedReleasebusinessvariantruntimepresentationcontentBundle
- 这次新增能力主要影响后台运营链和发布默认行为,不要求 frontend 立即改接入
- backend 已完成活动运营域第二阶段第四刀的后台最小实现:
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-018
- 时间:2026-04-03 11:22:50
- 谁提的:backend
- 当前事实:
- backend 已进入活动运营域第二阶段第二刀
- 当前客户端可消费新增摘要:
GET /events/{eventPublicID}返回:currentPresentationcurrentContentBundle
GET /events/{eventPublicID}/play返回:currentPresentationcurrentContentBundle
POST /events/{eventPublicID}/launch返回:launch.presentationlaunch.contentBundle
- 当前字段只做摘要透出,不下发复杂 schema
- 当前旧字段保持完全兼容:
resolvedReleasebusinessvariantruntime
- 需要对方确认什么:
- frontend 后续如要消费活动运营域摘要,先以这些新增摘要字段为准
- 是否已解决:是
B2F-003
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已确认 session 三态正式语义:
- 正常完成 ->
finished - 超时或规则失败 ->
failed - 主动退出 / 放弃恢复 ->
cancelled
- 正常完成 ->
- backend 已确认 session 三态正式语义:
- 需要对方确认什么:
- frontend 按这套语义继续联调
- 是否已解决:是
B2F-004
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- 正式联调时不应回退到本地样例配置路径
- 不应直接读取根目录
event/*.json - 应只认 launch 返回的
manifestUrl
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-005
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- 接口说明优先看 workbench 里的中文 API 列表
- 深入字段说明再看 接口清单
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-006
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已确认“放弃恢复”官方语义为
POST /sessions/{sessionPublicID}/finish且status=cancelled - 同一局的旧
sessionToken在该场景允许继续用于finish(cancelled) cancelled和failed后都不会再作为ongoingSession返回
- backend 已确认“放弃恢复”官方语义为
- 需要对方确认什么:
- frontend 可正式把“放弃恢复”接到
finish(cancelled)
- frontend 可正式把“放弃恢复”接到
- 是否已解决:是
B2F-007
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已把
start / finish收口成幂等处理 - 重复
start:launched-> 推进到runningrunning/ 终态 -> 直接返回当前 session
- 重复
finish:- 已终态 -> 直接返回当前 session / result
- backend 已把
- 需要对方确认什么:
- frontend 继续按当前补报 / 重试逻辑联调
- 是否已解决:是
B2F-016
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已确认
launch当前关键字段为前端正式联调契约:resolvedRelease.manifestUrlresolvedRelease.releaseIdbusiness.sessionIdbusiness.sessionTokenbusiness.sessionTokenExpiresAt
- 当前阶段 backend 不会单边调整这些字段名或层级
- 如后续确需调整,backend 会先在
b2f.md明确通知,再安排联调变更
- backend 已确认
- 需要对方确认什么:
- frontend 继续按当前字段接入,不做额外推断
- 是否已解决:是
B2F-017
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已完成对 ongoing 口径的代码回归确认
- 当前实现中:
- 只有
launched和running会被识别为 ongoing cancelled、failed、finished都不会再进入 ongoing
- 只有
/me/entry-home与/events/{eventPublicID}/play当前都复用同一 ongoing 判定逻辑/me/results当前只返回终态 session:finishedfailedcancelled
- 当前首页摘要、play 摘要、result 详情都会复用同一组 session 基础摘要字段:
idstatuseventIdeventNamereleaseIdconfigLabelrouteCode
- 需要对方确认什么:
- frontend 可以按这套 ongoing / result 口径继续回归
- 是否已解决:是
阻塞
B2F-008
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- 如果 frontend 再出现 manifest 加载失败,backend 仅靠一句“加载失败”无法定位
- 需要对方确认什么:
- 如再出现此类问题,请一次性提供:
eventPublicIDreleaseIdmanifestUrl- 页面报错文案
- 控制台日志
- 网络请求日志
- 如再出现此类问题,请一次性提供:
- 是否已解决:否
已完成
B2F-009
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- backend 已修复
publish build只写 DB、不上传 OSS 的问题 - 新发布的 demo release manifest 已可正常访问
- 当前可用 release:
eventPublicID = evt_demo_001releaseId = rel_e7dd953743c5c0d2manifestUrl = https://oss-mbh5.colormaprun.com/gotomars/event/releases/evt_demo_001/rel_e7dd953743c5c0d2/manifest.json
- backend 已修复
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-010
- 时间:2026-04-01
- 谁提的:backend
- 当前事实:
- backend workbench 已支持中文 API 列表
- 当前可用于日常联调:
POST /dev/bootstrap-demoGET /dev/workbench
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-011
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已新增后台第一版资源对象接口:
/admin/maps/admin/playfields/admin/resource-packs
- backend 已新增后台
event组装接口:/admin/events/admin/events/{eventPublicID}/source
- 这批接口主要服务后续后台配置运营,不影响当前小程序主链联调
- backend 已新增后台第一版资源对象接口:
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-012
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已补后台运营闭环接口:
GET /admin/events/{eventPublicID}/pipelinePOST /admin/sources/{sourceID}/buildGET /admin/builds/{buildID}POST /admin/builds/{buildID}/publish
- 当前后台侧已经可以完成:
- 资源对象录入
- event source 组装
- preview build
- publish release
- backend 已补后台运营闭环接口:
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-013
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已补后台
rollback接口:POST /admin/events/{eventPublicID}/rollback
- 当前后台侧已具备完整最小闭环:
- 资源对象
- event source 组装
- build
- publish
- rollback
- backend 已补后台
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-018
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已补一条可联调的
manual多赛道 demo 活动:eventPublicID = evt_demo_variant_manual_001releaseId = rel_demo_variant_manual_001channelCode = mini-demochannelType = wechat_mini
- 当前 demo 配置为:
assignmentMode = manualcourseVariants = [variant_a, variant_b]
- 当前两条可选赛道:
variant_aname = A 线routeCode = route-variant-a
variant_bname = B 线routeCode = route-variant-b
- 该活动已由
POST /dev/bootstrap-demo自动准备
- backend 已补一条可联调的
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-019
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- backend 已完成
variant_b的 service 层回归验证 - 已确认从
launch选定的variantId会稳定回流到:GET /me/entry-homeGET /sessions/{sessionPublicID}/resultGET /me/results
- 实测链路为:
play.assignmentMode=manualplay.courseVariants=2launch.variant.id=variant_bentry-home recent.variantId=variant_bresult.session.variantId=variant_bresults[0].session.variantId=variant_b
- backend 已完成
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-020
- 时间:2026-04-03 09:43:20
- 谁提的:backend
- 当前事实:
- backend 已在保持旧字段不变的前提下,为
launch新增兼容字段:launch.runtime
- 当前最小字段包括:
runtimeBindingIdplaceIdmapIdtileReleaseIdcourseSetIdcourseVariantId
- 这是一组新增字段,不替代也不改变现有:
resolvedReleasebusinessvariant
- frontend 当前可以忽略该字段,也可以开始做观测和日志透出
- backend 已在保持旧字段不变的前提下,为
- 需要对方确认什么:
- 无
- 是否已解决:是
B2F-021
- 时间:2026-04-03 12:14:21
- 谁提的:backend
- 当前事实:
- backend 已完成活动运营域第二阶段第三刀第一版
- 当前活动运营摘要已统一补齐最小字段:
currentPresentation.templateKeycurrentPresentation.versioncurrentContentBundle.bundleTypecurrentContentBundle.versionlaunch.presentation.templateKeylaunch.presentation.versionlaunch.contentBundle.bundleTypelaunch.contentBundle.version
- 上述字段当前已在以下接口可用:
GET /events/{eventPublicID}GET /events/{eventPublicID}/playPOST /events/{eventPublicID}/launch
- 旧字段继续完全兼容:
resolvedReleasebusinessvariantruntime
- 需要对方确认什么:
- frontend 如果开始消费活动运营摘要细项,请优先读取新增的
templateKey / version / bundleType
- frontend 如果开始消费活动运营摘要细项,请优先读取新增的
- 是否已解决:是
下一步
B2F-014
- 时间:2026-04-02
- 谁提的:backend
- 当前事实:
- session P0 已完成一轮收口
- 当前最值得继续联调确认的是:
- 放弃恢复 ->
finish(cancelled) failed / cancelled后 ongoing 消失- 重复
start / finish不再打断主链
- 放弃恢复 ->
- 需要对方确认什么:
- frontend 当前优先配合:
- 用当前 demo release 回归
play -> launch -> map load - 回归“继续恢复 / 放弃恢复”两条路径
- 如确认进入多赛道第一阶段联调,请先回复
B2F-015 - 如发现状态口径不一致,直接在
f2b.md标具体接口和返回值
- 用当前 demo release 回归
- frontend 当前优先配合:
- 是否已解决:否