287 lines
7.1 KiB
Markdown
287 lines
7.1 KiB
Markdown
# F2B 协作清单
|
||
> 文档版本:v1.3
|
||
> 最后更新:2026-04-02 15:19:37
|
||
|
||
|
||
说明:
|
||
|
||
- 本文件由前端维护,写给后端
|
||
- 只写“事实”和“请求”
|
||
- 不写长讨论稿
|
||
- 每条尽量包含:时间、提出方、当前事实、需要对方确认什么、状态
|
||
|
||
---
|
||
|
||
## 待确认
|
||
|
||
### F2B-007
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- 前端已完成多赛道第一阶段接入:
|
||
- 活动页、准备页可展示 `assignmentMode / courseVariants`
|
||
- 当 `assignmentMode=manual` 时,准备页会让用户选择赛道
|
||
- 前端会把选中的 `variantId` 带入 `POST /events/{eventPublicID}/launch`
|
||
- 需要对方确认什么:
|
||
- 请 backend 提供一个可联调的 `manual` 多赛道活动或 demo 数据
|
||
- 该活动需确保 `play.courseVariants[]`、`launch.variant.*` 可稳定返回
|
||
- 状态:待确认
|
||
|
||
### F2B-008
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- 前端已开始在首页 ongoing/recent、单局结果页、历史结果页展示 `variantName / routeCode`
|
||
- 当前需要确认从 `launch` 选定的 `variantId` 是否会稳定回流到:
|
||
- `/me/entry-home`
|
||
- `/sessions/{sessionPublicID}/result`
|
||
- `/me/results`
|
||
- 需要对方确认什么:
|
||
- 请 backend 确认以上摘要链是否已完成 variant 回写
|
||
- 如还未全部完成,请给出可联调时间点或先可用的接口范围
|
||
- 状态:待确认
|
||
|
||
---
|
||
|
||
## 已确认
|
||
|
||
### 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-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-N001
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- session 生命周期关键语义已由 backend 确认
|
||
- 当前前端下一轮重点应转向主链回归与结果展示对齐
|
||
- 需要对方确认什么:
|
||
- 无
|
||
- 状态:前端执行中
|
||
|
||
### F2B-N002
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- 心率 / 卡路里个体化能力已在前端预留
|
||
- 需要对方确认什么:
|
||
- 后续是否提供用户身体数据接口
|
||
- 状态:后续事项
|
||
|
||
### F2B-N003
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- backend 已确认多赛道第一阶段最小契约
|
||
- 前端已完成第一阶段基础接入,下一步将转入多赛道专项联调与展示补强
|
||
- 需要对方确认什么:
|
||
- 无
|
||
- 状态:前端执行中
|
||
|
||
### F2B-N004
|
||
|
||
- 时间:2026-04-02
|
||
- 提出方:前端
|
||
- 当前事实:
|
||
- 多赛道下一步最值钱的是专项联调,而不是继续扩页面
|
||
- 当前优先链路为:
|
||
- `manual` 赛道选择 -> `launch.variant`
|
||
- `launch.variant` -> `ongoing / result / results`
|
||
- 需要对方确认什么:
|
||
- 无
|
||
- 状态:等待 backend 提供联调数据
|
||
|
||
|