Files
cmr-mini/b2t.md

426 lines
14 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.
# B2T 协作清单
> 文档版本v1.47
> 最后更新2026-04-07 18:15:01
说明:
- 本文件由 backend 维护,写给总控
- 只保留当前主线、有效结论和压缩归档
- 已完成历史项不再逐条保留长记录
---
## 待确认
### B2T-044
- 时间2026-04-07 17:23:15
- 谁提的backend
- 当前事实:
- backend 建议把活动模型先收成最小可玩单元:
- `单地图`
- `单路线组`
- `单玩法`
- 当前不建议第一阶段直接支持:
- 一个活动多地图
- 一个活动多路线组
- 一个活动多玩法
- 复杂需求优先通过“活动实例化”解决,而不是把单个活动扩成多对多容器。
- 多地图 / 多玩法的前台需求,建议通过“组合卡片 / 组合入口层”承接:
- 组合入口可以指向多个活动实例
- 单个活动实例仍保持最小可玩单元
- 这样可以同时简化:
- 前台活动卡片逻辑
- 发布语义
- 结果追溯
- 运维后台第一期流程
- 需要对方确认什么:
- 运维后台与活动编排后续按“单地图 + 单路线组 + 单玩法”继续推进。
- 多地图 / 多路线组 / 多玩法先作为后续模板化实例生成能力与组合入口能力,不在第一阶段直接进入活动主模型。
- 是否已解决:否
### B2T-045
- 时间2026-04-07 17:52:18
- 谁提的backend
- 当前事实:
- 运维后台已继续从“对象平铺页”往“主流程后台”收。
- 当前左侧导航改成:
- `资源总览`
- `地图 / 地点管理`
- `路线资源管理`
- `活动管理`
- `活动编排`
- `发布中心`
- `资源录入` 作为辅助入口保留
- `资源总览` 已提升为运行时信息面板,优先展示关键统计与当前活动的 `release / runtime / presentation / content bundle`
- 地图页已不再平铺关联活动详情,只保留:
- 关联活动数量
- 默认体验活动数量
- 关联活动摘要
- 跳转到活动管理
- 需要对方确认什么:
- 运维后台继续按“总览优先 + 单主视图 + 地图页只看地图本身、活动详情去活动管理”这条交互结构推进。
- 是否已解决:否
### B2T-046
- 时间2026-04-07 18:03:42
- 谁提的backend
- 当前事实:
- `地图 / 地点管理` 已继续从“按钮 + 手填 ID”收成“列表 -> 详情”流程。
- 当前已支持:
- 地点列表
- 地图列表
- 地点关键字筛选
- 地图关键字筛选
- 点地点自动读取地点详情与该地点下地图
- 点地图自动读取地图详情、当前瓦片版本、默认活动概况
- 地图页继续只保留关联活动数量与摘要,不在地图页平铺活动详情。
- 需要对方确认什么:
- 地图 / 地点管理继续按“列表-详情主流程”推进,活动详情统一留在活动管理 / 活动编排。
- 是否已解决:否
### B2T-045
- 时间2026-04-07 17:30:06
- 谁提的backend
- 当前事实:
- 运维后台当前已继续从“功能平铺页”收成“导航驱动的流程页”:
- 左侧导航
- 中间单主视图
- 右侧常驻状态栏
- 当前不再把地图管理、资源录入、KML 管理、活动管理、发布中心同时平铺在一个长页面里。
- 主区当前也已改成宽屏自适应,不再使用固定窄宽度。
- 需要对方确认什么:
- 运维后台后续继续按“符合人使用习惯的流程导航页”推进,不再回退到功能平铺式工作台。
- 是否已解决:是
### B2T-043
- 时间2026-04-07 16:45:40
- 谁提的backend
- 当前事实:
- 运维后台当前在开发环境里默认免登录。
- 本轮已修复 dev-only 鉴权陷阱:
- 浏览器残留旧的玩家 token、失效 token 或非 ops token 时
- `/ops/admin/*` 之前会返回 `401 invalid_token`
- 现在开发环境会自动回退到 dev ops 上下文
- 生产环境不变,仍要求正式 ops token。
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-042
- 时间2026-04-07 16:29:08
- 谁提的backend
- 当前事实:
- frontend 反馈游客模式第一刀里:
- `GET /public/experience-maps` 正常
- `GET /public/events/{eventPublicID}/play` 正常
- `POST /public/events/{eventPublicID}/launch` 返回 `500 internal_error`
- backend 已定位根因:
- 游客 launch 会创建 `guest_device` 身份
- 旧库约束不允许 `login_identities.identity_type = 'guest'`
- 已补 migration
- [0015_guest_identity.sql](D:/dev/cmr-mini/backend/migrations/0015_guest_identity.sql)
- 本次修复不改游客接口契约,只修数据库约束。
- 需要对方确认什么:
- 游客模式第一刀继续以:
- `evt_demo_001`
作为基线回归。
- 是否已解决:是
### B2T-041
- 时间2026-04-07 16:08:37
- 谁提的backend
- 当前事实:
- 运维后台当前已从“底层对象调试台”继续往“主流程管理台”收口:
- 地图管理
- KML / 赛道管理
- 活动管理
- 发布中心
- 当前已补运维地图主流程接口:
- `GET /admin/map-assets`
- `PUT /admin/map-assets/{mapAssetPublicID}`
- `GET /ops/admin/map-assets`
- `PUT /ops/admin/map-assets/{mapAssetPublicID}`
- `GET /ops/admin/course-sources`
- `GET /ops/admin/course-sources/{sourcePublicID}`
- `GET /ops/admin/course-sets/{courseSetPublicID}`
- 运维后台当前目标已明确:
- 运维先看地图列表
- KML / 赛道围绕地图管理
- 活动围绕地图查看关联活动、默认体验活动和发布状态
- 活动管理当前也已补成与地图同一套路:
- 列表
- 新建
- 修改
- 读取详情
- 当前新增:
- `POST /ops/admin/events`
- `PUT /ops/admin/events/{eventPublicID}`
- 当前 API 总数更新为:
- `115`
- 需要对方确认什么:
- 运维后台第一期继续按“地图列表 -> 地图详情 -> KML / 赛道 -> 活动绑定 -> 发布中心”这条主流程推进。
- 不再把 `Place / MapAsset / TileRelease / CourseSource / CourseSet` 直接当首页认知入口。
- 是否已解决:否
### B2T-040
- 时间2026-04-07 20:12:00
- 谁提的backend
- 当前事实:
- backend 已补游客模式第一刀最小公开接口:
- `GET /public/experience-maps`
- `GET /public/experience-maps/{mapAssetPublicID}`
- `GET /public/events/{eventPublicID}`
- `GET /public/events/{eventPublicID}/play`
- `POST /public/events/{eventPublicID}/launch`
- 当前规则:
- 只允许默认体验活动
- 只允许基于已发布 release
- guest launch 使用独立 `guest_device` 身份落到正常 session 模型
- 返回 `launch.business.isGuest = true`
- 当前 API 总数更新为:
- `106`
- 需要对方确认什么:
- 游客模式第一刀按这组公开接口继续前后端联调。
- 若后续需要 guest 结果页或 guest 本地成绩迁移,再作为下一刀,不混入当前最小链。
- 是否已解决:否
### B2T-039
- 时间2026-04-07 16:42:15
- 谁提的backend
- 当前事实:
- 运维后台已开始落地“地图资源管理第一刀”:
- `GET /ops/admin/places`
- `POST /ops/admin/places`
- `GET /ops/admin/places/{placePublicID}`
- `POST /ops/admin/places/{placePublicID}/map-assets`
- `GET /ops/admin/map-assets/{mapAssetPublicID}`
- `POST /ops/admin/map-assets/{mapAssetPublicID}/tile-releases`
- `/admin/ops-workbench` 当前已新增独立“地图资源管理”区,可直接:
- 建地点
- 建地图
- 看当前瓦片版本
- 看默认活动摘要
- 需要对方确认什么:
- 运维后台第一期按“地图资源管理 -> 资源录入 -> 赛道集管理 -> 活动绑定 -> 发布中心”这条顺序继续推进。
- 是否已解决:否
### B2T-038
- 时间2026-04-07 16:08:20
- 谁提的backend
- 当前事实:
- backend 已按“地图列表下的默认活动”补最小公开接口:
- `GET /experience-maps`
- `GET /experience-maps/{mapAssetPublicID}`
- 默认活动关系当前统一收口到:
- `events.is_default_experience`
- `events.show_in_event_list`
- 当前已发布 `release` 绑定到的 `runtime.mapAsset`
- `cards / home / me/entry-home` 当前也已补:
- `showInEventList`
- 需要对方确认什么:
- 后续活动列表与地图入口第一刀以这组字段为准继续联调。
- 如需更复杂地图分组、排序、租户筛选,放到下一刀,不在这次最小实现里扩。
- 是否已解决:否
### B2T-034
- 时间2026-04-07 13:12:00
- 谁提的backend
- 当前事实:
- backend 已按“准备页地图预览 V1”预留最小字段到
- `GET /events/{eventPublicID}`
- `GET /events/{eventPublicID}/play`
- 当前 preview 仍保持:
- 只读增强项
- 不进入正式 launch 主链
- 不单独造新地图资源体系
- 需要对方确认什么:
- backend 继续按“只读预览 V1”推进不扩新对象层级。
- 是否已解决:否
---
## 已确认
### B2T-037
- 时间2026-04-07 14:45:37
- 谁提的backend
- 当前事实:
- 运维后台当前已开始与玩家链路分离:
- 运维账号接口:`/ops/auth/*`
- 运维管理接口:`/ops/admin/*`
- `/admin/ops-workbench` 当前只服务运维录资源、活动绑定、发布中心。
- 开发环境当前默认免登录放行,方便录资源和调发布;生产环境再收口到手机号验证码运维账号。
- 运维总览统计当前已改为只读取服务端聚合摘要,不再用前端列表长度硬凑。
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-036
- 时间2026-04-07 13:51:50
- 谁提的backend
- 当前事实:
- backend 已开始落地运维入口第一期,不再只靠手工脚本或改代码上传资源。
- 当前先开放两条最小录入链:
- `POST /admin/ops/tile-releases/import`
- `POST /admin/ops/course-sets/import-kml-batch`
- 运维入口第二期也已起步,开始支持统一资源纳管:
- `GET /admin/assets`
- `POST /admin/assets/register-link`
- `POST /admin/assets/upload`
- `GET /admin/assets/{assetPublicID}`
- 当前已新增独立运维工作台:
- `GET /admin/ops-workbench`
- 当前开始把:
- `/dev/workbench`
- `/admin/ops-workbench`
两套入口按“调试后台 / 运维后台”正式拆开
- `Import Tile Release / Import KML Batch` 已从 `/dev/workbench` 主操作区迁到:
- `/admin/ops-workbench`
- `/dev/workbench` 当前只保留运维入口说明与跳转
- `/admin/ops-workbench` 当前已收成第一版运维台结构:
- 资源总览
- 资源录入
- 赛道集管理
- 活动绑定
- 发布中心
- 当前 API 总数同步更新为:
- `101`
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-035
- 时间2026-04-07 12:38:13
- 谁提的backend
- 当前事实:
- 正式资源目录约束已收口:
- 正式资源只认 `OSS / CDN`
- 本地 `tmp/` 只作为临时收件箱,不作为正式发布源
- manual 多赛道 demo 当前已切到 4 条正式 OSS KML
- `gotomars/kml/lxcb-001/2026-04-07/route01.kml`
- `gotomars/kml/lxcb-001/2026-04-07/route02.kml`
- `gotomars/kml/lxcb-001/2026-04-07/route03.kml`
- `gotomars/kml/lxcb-001/2026-04-07/route04.kml`
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-033
- 时间2026-04-07 10:55:40
- 谁提的backend
- 当前事实:
- `Bootstrap Demo只准备数据` 当前会准备三条标准 demo 的基础已发布态:
- `runtime`
- `presentation`
- `content bundle`
- 当前 release
- frontend 从首页点三种玩法时,已可直接按“当前已发布 release”语义联调。
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-029
- 时间2026-04-03 22:34:08
- 谁提的backend
- 当前事实:
- backend 已完成活动卡片列表最小产品化第一刀:
- `GET /cards`
- `GET /home`
- `GET /me/entry-home`
- 已补齐最小摘要字段:
- `summary`
- `status`
- `statusCode`
- `timeWindow`
- `ctaText`
- `isDefaultExperience`
- `eventType`
- `currentPresentation`
- `currentContentBundle`
- 需要对方确认什么:
-
- 是否已解决:是
### B2T-028
- 时间2026-04-03 16:16:38
- 谁提的backend
- 当前事实:
- backend 已提供联调结构化日志通道:
- `POST /dev/client-logs`
- `GET /dev/client-logs`
- `DELETE /dev/client-logs`
- workbench 已有前端调试日志面板。
- 需要对方确认什么:
-
- 是否已解决:是
---
## 阻塞
- 当前无 backend 主线阻塞。
- 当前不建议开启:
- 新对象扩张
- 正式后台 UI
- 与活动系统最小成品闭环无关的新玩家功能
---
## 已完成
### 归档摘要(保留必要结论)
- 时间2026-04-07 12:18:00
- 谁提的backend
- 当前事实:
- 联调标准化阶段已完成:
- 一键测试链
- 详细日志
- 稳定 demo 数据
- workbench 回归汇总
- 真实输入替换第一刀已完成:
- 真实 KML
- 真实地图 URL
- dev content/presentation 入口
- 中文活动文案样例
- 三条标准 demo 当前都可稳定联调:
- 顺序赛
- 积分赛
- manual 多赛道
- 历史 demo ongoing 残留已收口。
- 需要对方确认什么:
-
- 是否已解决:是
---
## 下一步
- backend 当前继续围绕:
- 活动系统最小成品闭环
- 活动列表第一页联调小修
- 运维后台第一期里的地图 / 地点管理
- 运维后台当前新增已落地:
- 地图 / 地点管理改成“地图列表优先”
- 右上角入口:`添加地图 / 添加地点`
- 地点编辑区接入省 / 市两级选择
- backend 新增:`GET /ops/admin/region-options`
- 不开新战线,只做收口、稳定、验证。