Files
cmr-mini/f2b.md

268 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# F2B 协作清单
> 文档版本v2.5
> 最后更新2026-04-07 21:24:00
> 历史归档: [f2b.archive.md](D:/dev/cmr-mini/f2b.archive.md)
说明:
- 本文件由前端维护,写给后端
- 主文件只保留当前仍有意义的信息
- 已完成的大段历史已转入归档
---
## 待确认
### F2B-019
- 时间2026-04-07 21:24:00
- 提出方:前端
- 当前事实:
- 游客模式第一刀前端已接到:
- 地图列表
- 地图详情
- 公共活动详情
- 公共准备页
- 公共 launch
- 前端直接实测 backend 公共接口结果如下:
- `GET /public/experience-maps` -> `200`
- `GET /public/events/evt_demo_001/play` -> `200`
- `POST /public/events/evt_demo_001/launch` -> `500 internal_error`
- 这说明游客模式“看地图/看活动/看准备页”已经通,但“真正进入地图”当前被 backend 公共 launch 卡住。
- 当前 guest mode 只有默认体验活动可进:
- `evt_demo_score_o_001` -> `403 event_not_public`
- `evt_demo_variant_manual_001` -> `403 event_not_public`
- 需要对方确认什么:
- 请 backend 优先检查 `POST /public/events/{eventPublicID}/launch` 的服务端错误原因。
- 建议先用 `evt_demo_001` 作为游客模式第一刀的联调基线,修通后再扩别的 demo。
- 状态:待确认
### F2B-018
- 时间2026-04-07 16:25:00
- 提出方:前端
- 当前事实:
- 地图体验第一刀前端已完成:
- 首页 `地图体验` 入口
- 地图列表页
- 地图详情页
- 默认体验活动卡片跳活动详情页
- 当前这条链仍依赖登录态,因为 backend 现有接口:
- `GET /experience-maps`
- `GET /experience-maps/{mapAssetPublicID}`
- `GET /events/{eventPublicID}`
- `GET /events/{eventPublicID}/play`
- `POST /events/{eventPublicID}/launch`
都走登录态 access token
- backend 当前已经补齐这组接口。
- 需要对方确认什么:
-
- 状态:已确认
### F2B-017
- 时间2026-04-07 14:40:00
- 提出方:前端
- 当前事实:
- 前端已新增产品方案文档:
- [地图列表与默认体验活动方案](D:/dev/cmr-mini/doc/gameplay/地图列表与默认体验活动方案.md)
- 当前建议方向是:
- 增加 `地图列表` 作为默认体验活动入口层
- 默认体验活动继续复用现有 `Event / Release / Launch / Session`
- 默认体验活动可挂可不挂
- 默认体验活动可以不出现在正式活动列表
- 当前前端并不需要 backend 先做完整地图后台,只需要最小关系和最小摘要支持。
- 需要对方确认什么:
- 请 backend 先评估并支持以下最小配合项:
1. 地图/地点与默认体验活动的挂接关系
- 能回答:某张地图下挂了哪些默认体验活动
2. 活动摘要补两个稳定字段:
- `isDefaultExperience`
- `showInEventList`
3. 地图列表最小字段建议:
- `placeId`
- `placeName`
- `mapId`
- `mapName`
- `coverUrl`
- `summary`
- `defaultExperienceCount`
- `defaultExperienceEventIds[]`
4. 地图详情最小字段建议:
- 地点名称
- 地图名称
- 地图预览图
- 默认体验活动列表(最少 `eventId / title / subtitle / eventType / status / ctaText`
- 如 backend 对对象关系或字段命名有不同建议,请直接回:
- 字段名
- 所属接口
- 是否建议第一阶段落地
- 状态:待确认
### F2B-016
- 时间2026-04-07 14:25:00
- 提出方:前端
- 当前事实:
- 前端已新增一份用于 backend 对齐的配置裁剪文档:
- [最大配置模板后台落地裁剪表](D:/dev/cmr-mini/doc/config/最大配置模板后台落地裁剪表.md)
- 该文档的目的不是让 backend 1:1 支持最大配置模板,而是把当前配置能力裁成三类:
- 第一阶段必做
- 第二阶段可做
- 暂不进后台,继续留在程序默认值层
- 该文档建议配合以下文档一起看:
- [后端总体架构与当前执行清单](D:/dev/cmr-mini/doc/backend/后端总体架构与当前执行清单.md)
- [后端第一阶段执行清单](D:/dev/cmr-mini/doc/backend/后端第一阶段执行清单.md)
- 需要对方确认什么:
- 请 backend 以这三份文档为基线,对齐:
- 第一阶段后台对象范围
- 第一阶段应进入后台的配置字段
- 暂不进后台、继续保留在程序默认值层的字段
- 如 backend 对某块裁剪有异议,请直接指出:
- 字段名
- 希望调整到哪一阶段
- 原因
- 状态:待确认
### F2B-015
- 时间2026-04-07 13:46:00
- 提出方:前端
- 当前事实:
- 准备页地图预览当前已改成:
- 优先消费 `GET /events/{eventPublicID}/play` 返回的 `preview`
- 按当前所选 `variantId` 生成预览点位
- 底图优先仍使用 manifest 对应的正式瓦片源
- 当前小程序侧现象是:准备页预览仍为空白
- 前端已补结构化日志,当前会向 backend `client-logs` 上报:
- `category=event-prepare`
- `details.phase=prepare-preview`
- `source`
- `selectedVariantId`
- `backendPreviewVariantCount`
- `tileCount`
- `controlCount`
- `overlayAvailable`
- `previewMode`
- 失败时 `errorMessage`
- 需要对方确认什么:
- 请 backend 拉取这批 `prepare-preview` 日志,并核对:
- 当前 `play.preview.variants` 是否真的返回了多条 variant 预览数据
- 当前所选 `selectedVariantId` 是否能在 `preview.variants[]` 中命中
- 当前 preview viewport / baseTiles 是否与正式发布对象一致
- 如果 backend 已确认日志中 `backendPreviewVariantCount > 0` 但前端仍空白,请回传对应日志片段与当前 demo 的 `eventId / releaseId`
- 状态:待确认
---
## 已确认
### F2B-C011
- 时间2026-04-03 22:20:00
- 提出方:前端
- 当前事实:
- backend 已通过 `B2F-035` 收紧 `play.canLaunch``launch`
- 当前规则为:缺 `runtime / presentation / content bundle / manifest / 当前发布 release` 任一项时,均不可进入游戏
- 前端已复测通过,当前按 `play.canLaunch` 作为正式阻断口径
- 需要对方确认什么:
-
- 状态:已确认
### F2B-C012
- 时间2026-04-03 23:52:00
- 提出方:前端
- 当前事实:
- manual 多赛道准备页不显示选择区的根因已确认是发布 release 缺少:
- `play.assignmentMode`
- `play.courseVariants`
- backend 已修复 demo/build/publish 链
- 前端保留了多赛道空态兜底,但主因不在前端
- 需要对方确认什么:
-
- 状态:已确认
### F2B-C013
- 时间2026-04-03 23:52:00
- 提出方:前端
- 当前事实:
- 活动卡片列表第一刀所需字段当前已足够
- 前端已补齐列表与详情页联调日志:
- `cardEventIds`
- `clickedEventId`
- `detailStatus`
- `detailCanLaunch`
- `detailCurrentPresentation`
- `detailCurrentContentBundle`
- 需要对方确认什么:
-
- 状态:已确认
---
## 阻塞
- 当前无
---
## 已完成
### F2B-D010
- 时间2026-04-03 22:12:00
- 提出方:前端
- 当前事实:
- 活动页与准备页已统一使用:
- `当前发布展示版本`
- `当前发布内容包版本`
- 当两项为空时,前端统一解释为:
- 当前发布 release 未绑定
- 或当前尚未发布
- 需要对方确认什么:
-
- 状态:已完成
### F2B-D011
- 时间2026-04-07 12:06:00
- 提出方:前端
- 当前事实:
- 首页 `ongoingSession` 已收成正式交互
- 当前首页仅在 backend 返回 `ongoingSession` 时显示“进行中的游戏”
- 支持:
- `恢复`
- `放弃`
- `放弃` 会调用 `finish(cancelled)`,然后清理本地恢复快照并刷新首页
- 需要对方确认什么:
-
- 状态:已完成
---
## 尾项
### F2B-011
- 时间2026-04-03
- 提出方:前端
- 当前事实:
- demo 历史 `ongoing session` 的回收口径仍是独立尾项
- 当前不阻塞主线多赛道、活动列表、运营摘要、runtime 主链均可继续联调
- 需要对方确认什么:
- 后续请单独收口 demo 环境下 `launched / running` session 清理与 ongoing 判定规则
- 状态:待后续单独处理
---
## 下一步
- 当前前后端继续按 backend 一键测试环境联调
- 当前前端侧会优先关注:
- 活动列表第一刀回归
- 活动详情页/准备页用户化小修
- 准备页地图预览 V1 稳定性
- 如后端语义或字段发生变化,再通过 `b2f.md` / `f2b.md` 做增量同步