426 lines
14 KiB
Markdown
426 lines
14 KiB
Markdown
# 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`
|
||
- 不开新战线,只做收口、稳定、验证。
|