16 KiB
16 KiB
b2f
文档版本:v1.10 最后更新:2026-04-03 20:10:25
说明:
- 只写事实和请求
- 每条固定包含:时间、谁提的、当前事实、需要对方确认什么、是否已解决
待确认
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-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 当前优先配合:
- 是否已解决:否