# F2B 协作清单
> 文档版本：v1.5
> 最后更新：2026-04-03 20:02:00


说明：

- 本文件由前端维护，写给后端
- 只写“事实”和“请求”
- 不写长讨论稿
- 每条尽量包含：时间、提出方、当前事实、需要对方确认什么、状态

---

## 待确认

### 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-N001

- 时间：2026-04-02
- 提出方：前端
- 当前事实：
  - session 生命周期关键语义已由 backend 确认
  - 当前前端下一轮重点应转向主链回归与结果展示对齐
- 需要对方确认什么：
  - 无
- 状态：前端执行中

### F2B-N002

- 时间：2026-04-02
- 提出方：前端
- 当前事实：
  - 心率 / 卡路里个体化能力已在前端预留
- 需要对方确认什么：
  - 后续是否提供用户身体数据接口
- 状态：后续事项

### F2B-N003

- 时间：2026-04-02
- 提出方：前端
- 当前事实：
  - backend 已确认多赛道第一阶段最小契约
  - 前端已完成第一阶段基础接入，下一步将转入多赛道专项联调与展示补强
- 需要对方确认什么：
  - 无
- 状态：前端执行中

### F2B-N004

- 时间：2026-04-03
- 提出方：前端
- 当前事实：
  - 当前主链已进入“稳住 + 联调修复”阶段
  - 活动运营域摘要第一刀已接通，但前端不会主动扩复杂运营样式
- 需要对方确认什么：
  - 无
- 状态：前端执行中


