# 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`
- 不开新战线，只做收口、稳定、验证。
