# F2B 协作清单 > 文档版本:v1.9 > 最后更新:2026-04-03 16:45:26 说明: - 本文件由前端维护,写给后端 - 只写“事实”和“请求” - 不写长讨论稿 - 每条尽量包含:时间、提出方、当前事实、需要对方确认什么、状态 --- ## 待确认 ### F2B-011 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - 使用 backend 一键测试环境联调 `evt_demo_variant_manual_001` 时,活动页 / 准备页返回: - `primaryAction = continue` - `reason = user has an ongoing session for this event` - 但前端本地当前没有可恢复快照,且本轮联调主观确认“已经没有需要恢复的游戏” - 当前看起来像是 backend 仍认定该用户在该活动下存在 ongoing session - 需要对方确认什么: - 请 backend 核对该用户在 `evt_demo_variant_manual_001` 下是否仍有 `launched / running` session 未清掉 - 如这是预期行为,请说明推荐的标准清理路径;如不是预期,请修正 ongoing 判定或测试环境回收逻辑 - 状态:待确认 --- ## 已确认 ### F2B-C001 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - 正式联调时,前端以 backend `launch` 下发的 release/manifest 为准 - 不再回退到本地 `event/*.json` - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C002 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - 前后端协作文档改为双文件: - `f2b.md` 由前端维护 - `b2f.md` 由后端维护 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C003 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认 session 三态正式语义: - 正常完成 -> `finished` - 超时或规则失败 -> `failed` - 主动退出 / 放弃恢复 -> `cancelled` - 前端已按这套语义继续联调 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C004 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认“放弃恢复”官方语义为 `finish(cancelled)` - 旧 `sessionToken` 在该场景下允许继续调用 - 前端当前已正式启用该链路 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C005 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认 `start / finish` 按幂等处理 - 前端可继续按当前补报 / 重试逻辑联调 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C006 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认多赛道第一阶段最小契约,且相关字段已可从以下接口返回: - `/events/{eventPublicID}/play` - `/events/{eventPublicID}/launch` - `/me/entry-home` - `/sessions/{sessionPublicID}` - `/sessions/{sessionPublicID}/result` - `/me/results` - `/me/sessions` - 正式口径为: - `play.assignmentMode` - `play.courseVariants[]` - `launch.variant.id/name/routeCode/assignmentMode` - `session / ongoing / recent / result` 摘要中带 `variantId/variantName/routeCode` - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C007 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认 launch 关键字段为正式契约: - `resolvedRelease.manifestUrl` - `resolvedRelease.releaseId` - `business.sessionId` - `business.sessionToken` - `business.sessionTokenExpiresAt` - 如后续字段名或层级需调整,backend 将先在 `b2f.md` 通知 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C008 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认 ongoing / recent / result 摘要口径: - `launched`、`running` 作为 ongoing - `finished`、`failed`、`cancelled` 不再作为 ongoing - `/me/results` 只返回终态对局 - 前端后续按这套摘要口径做显示与回归 - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C009 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - backend 已提供可联调的 `manual` 多赛道 demo 活动: - `evt_demo_variant_manual_001` - backend 已确认 `launch` 选定的 `variantId` 会稳定回流到: - `/me/entry-home` - `/sessions/{sessionPublicID}/result` - `/me/results` - 需要对方确认什么: - 无 - 状态:已确认 ### F2B-C010 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - backend 已透出活动运营域第二阶段摘要字段: - `currentPresentation` - `currentContentBundle` - `launch.presentation` - `launch.contentBundle` - 前端当前按总控口径,仅做类型 / adapter / 活动页与准备页轻摘要接线,不扩新页面链 - 需要对方确认什么: - 无 - 状态:已确认 --- ## 阻塞 ### F2B-B001 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - 当前前端主链已基本可联调 - 目前没有新的 backend 阻塞项 - 需要对方确认什么: - 无 - 状态:已解决 --- ## 已完成 ### F2B-D001 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - 小程序已接通: - 登录 - 首页聚合 - 活动页 `play` - `launch -> 地图页` - `session start` - `session finish` - `session result` - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D002 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - 小程序已接入故障恢复: - 检测未正常结束对局 - 弹“继续恢复 / 放弃” - 继续恢复时恢复本地运行时快照 - 放弃时清本地恢复,并上报 `finish(cancelled)` - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D003 - 时间:2026-04-01 - 提出方:前端 - 当前事实: - `evt_demo_001` 当前 release manifest 已恢复可用 - 前端已能正常进入地图 - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D004 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - 前端已完成多赛道第一阶段接入: - `backendApi / launchAdapter / GameLaunchEnvelope` 已接入 `variant` 字段 - 故障恢复会随 `launchEnvelope` 保留 `variant` 信息 - 活动页、准备页、首页、单局结果页、历史结果页开始展示赛道版本信息 - `manual` 模式下准备页已支持选择赛道并把 `variantId` 带入 launch - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D005 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - 前端已完成活动运营域摘要第一刀的轻接线: - 活动页开始展示 `currentPresentation / currentContentBundle` - 准备页开始展示活动运营摘要 - `launch.presentation / launch.contentBundle` 已进入 `GameLaunchEnvelope` - 会话快照会随 `launchEnvelope` 一起保留这批摘要 - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D006 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - 已按 backend `B2F-028` 的排查口径补充前端诊断链,当前地图信息面板/赛后结果里可直接查看: - `launch.config.configUrl` - `launch.resolvedRelease.manifestUrl` - `launch.config.releaseId` - `launch.resolvedRelease.releaseId` - 最终加载后的: - `Schema版本` - `场地类型(playfield.kind)` - `模式编码(game.mode)` - 当前只补了诊断与观测,没有改动正式 launch 主链 - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D007 - 时间:2026-04-03 16:26:37 - 提出方:前端 - 当前事实: - 已按 `B2F-030` 接入 backend `POST /dev/client-logs` - 当前关键阶段会主动上报最小调试日志: - `entry-home` - `event-play` - `event-prepare` - `launch-diagnostic` - `runtime-compiler` - `session-recovery` - 当前主日志字段已按 backend 建议最小口径回传: - `source` - `level` - `category` - `message` - `eventId` - `releaseId` - `sessionId` - `manifestUrl` - `route` - `details.phase` - `details.schemaVersion` - `details.playfield.kind` - `details.game.mode` - 模拟器日志不再作为当前联调主诊断口,保留地图内调试面板作为本地辅助能力 - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D008 - 时间:2026-04-03 16:45:26 - 提出方:前端 - 当前事实: - backend 已通过 `B2F-031` 明确确认:积分赛误进顺序赛的根因不是前端解析,而是首页卡片入口配置错误 - 具体根因为: - 首页卡片查询此前只取 `home_primary` - 积分赛 demo 卡此前被种到 `home_secondary` - 前端首页因此根本拿不到 `evt_demo_score_o_001` - backend 已修复积分赛卡片入口配置 - 前端当前无需再为该问题修改玩法解析或 manifest 消费逻辑 - 需要对方确认什么: - 无 - 状态:已完成 ### F2B-D009 - 时间:2026-04-03 16:45:26 - 提出方:前端 - 当前事实: - 已按 `B2F-032` 优化前端结构化调试日志口径: - 非多赛道玩法时,不再上报空字符串形式的 `assignmentMode` - 非手选赛道时,不再把空 `variantId` 伪装成已选赛道 - 所有 client log 现在都会附带前端本地递增 `details.seq` - `launchVariantId` 与 `runtimeCourseVariantId` 已明确区分 - 需要对方确认什么: - 无 - 状态:已完成 --- ## 下一步 ### F2B-N001 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - session 生命周期关键语义已由 backend 确认 - 当前前端下一轮重点应转向主链回归与结果展示对齐 - 需要对方确认什么: - 无 - 状态:前端执行中 ### F2B-N002 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - 心率 / 卡路里个体化能力已在前端预留 - 需要对方确认什么: - 后续是否提供用户身体数据接口 - 状态:后续事项 ### F2B-N003 - 时间:2026-04-02 - 提出方:前端 - 当前事实: - backend 已确认多赛道第一阶段最小契约 - 前端已完成第一阶段基础接入,下一步将转入多赛道专项联调与展示补强 - 需要对方确认什么: - 无 - 状态:前端执行中 ### F2B-N004 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - 当前主链已进入“稳住 + 联调修复”阶段 - 活动运营域摘要第一刀已接通,但前端不会主动扩复杂运营样式 - 需要对方确认什么: - 无 - 状态:前端执行中 ### F2B-N005 - 时间:2026-04-03 - 提出方:前端 - 当前事实: - 当前已具备积分赛 demo 发布链诊断信息,下一步将按 backend 一键测试环境回归 `evt_demo_score_o_001` - 如仍表现为顺序赛,前端将回传 launch/config/runtime 三段事实,不再只报“现象” - 需要对方确认什么: - 无 - 状态:前端执行中