# b2f > 文档版本:v1.40 > 最后更新:2026-04-07 16:29:08 说明: - 本文件由 backend 维护,写给 frontend - 只保留当前有效事项、联调基线和压缩归档 - 已完成旧项不再逐条长留,只保留必要结论 --- ## 待确认 ### B2F-045 - 时间:2026-04-07 16:29:08 - 谁提的: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 - `public launch` 返回结构与正式 launch 基本同构 - 会额外返回: - `launch.source = public-default-experience` - `launch.business.isGuest = true` - 当前不开放: - `/me/entry-home` - `/me/results` - 历史成绩 - 报名态 - 本轮已定位并修复 `F2B-019` 的根因: - `POST /public/events/{eventPublicID}/launch` 在创建游客身份时会写入 `login_identities` - 旧库约束不允许 `identity_type = 'guest'` - 已补 migration: - [0015_guest_identity.sql](D:/dev/cmr-mini/backend/migrations/0015_guest_identity.sql) - 需要对方确认什么: - frontend 重启 backend 并应用最新 migration 后,重新回归: - `POST /public/events/evt_demo_001/launch` - 若仍异常,只回传: - `status` - `error.code` - `eventId` - `deviceKey` - 是否已解决:是 ### B2F-044 - 时间:2026-04-07 16:08:20 - 谁提的:backend - 当前事实: - backend 已补地图列表与默认活动最小接口: - `GET /experience-maps` - `GET /experience-maps/{mapAssetPublicID}` - 当前地图列表字段: - `placeId` - `placeName` - `mapId` - `mapName` - `coverUrl` - `summary` - `defaultExperienceCount` - `defaultExperienceEventIds` - 当前地图详情字段: - `tileBaseUrl` - `tileMetaUrl` - `defaultExperiences[]` - `defaultExperiences[]` 已带: - `eventId` - `title` - `subtitle` - `eventType` - `status` - `statusCode` - `ctaText` - `isDefaultExperience` - `showInEventList` - `currentPresentation` - `currentContentBundle` - 需要对方确认什么: - frontend 地图列表第一刀可直接按这组字段开始接线。 - 如仍缺字段,只回传“字段名 + 使用位置”。 - 是否已解决:否 ### B2F-041 - 时间:2026-04-07 13:12:00 - 谁提的:backend - 当前事实: - backend 已把准备页地图预览 V1 的只读字段挂到: - `GET /events/{eventPublicID}` - `GET /events/{eventPublicID}/play` - 当前字段为: - `preview.mode` - `preview.baseTiles.tileBaseUrl` - `preview.baseTiles.zoom` - `preview.baseTiles.tileSize` - `preview.viewport.width / height / minLon / minLat / maxLon / maxLat` - `preview.variants[].controls` - `preview.variants[].legs` - `preview.selectedVariantId` - 三条标准 demo 当前都已具备 preview 元数据。 - 需要对方确认什么: - frontend 可按这组字段开始准备页地图预览 V1 接线。 - 当前只做只读预览,不把 preview 当成正式 launch 前置条件。 - 是否已解决:否 ### B2F-040 - 时间:2026-04-07 10:58:18 - 谁提的:backend - 当前事实: - 首页 `ongoingSession` 语义已固定: - 只认 `launched` - 只认 `running` - 以下状态都不算进行中: - `finished` - `failed` - `cancelled` - backend 已支持: - `POST /sessions/{sessionPublicID}/finish` - `status = cancelled` - 需要对方确认什么: - frontend 首页“进行中”只在 `ongoingSession` 存在时显示。 - 建议按钮: - `恢复` - `放弃` - `放弃` 必须调用 `finish(cancelled)`,然后清本地恢复快照,再刷新 `/me/entry-home`。 - 是否已解决:否 ### B2F-038 - 时间:2026-04-03 19:13:57 - 谁提的:backend - 当前事实: - backend 已给活动列表第一刀补齐最小摘要字段,返回位于: - `GET /cards` - `GET /home` - `GET /me/entry-home` - 当前字段为: - `summary` - `status` - `statusCode` - `timeWindow` - `ctaText` - `isDefaultExperience` - `eventType` - `currentPresentation` - `currentContentBundle` - 需要对方确认什么: - frontend 按这组字段完成列表页最小接线。 - 如果仍缺字段,请只回传“缺什么字段、用于哪个页面块”。 - 是否已解决:否 --- ## 已确认 ### B2F-043 - 时间:2026-04-07 13:51:50 - 谁提的:backend - 当前事实: - backend 已开始提供运维入口第一期: - `POST /admin/ops/tile-releases/import` - `POST /admin/ops/course-sets/import-kml-batch` - backend 也已开始提供统一资源纳管入口: - `GET /admin/assets` - `POST /admin/assets/register-link` - `POST /admin/assets/upload` - `GET /admin/assets/{assetPublicID}` - 当前已新增独立运维工作台: - `GET /admin/ops-workbench` - 这批接口与页面主要服务运维录入和发布准备,不要求 frontend 直接接入。 - 当前 API 总数同步更新为: - `101` - 需要对方确认什么: - 无 - 是否已解决:是 ### B2F-042 - 时间:2026-04-07 12:38:13 - 谁提的:backend - 当前事实: - 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` - frontend 当前只需消费发布结果,无需读取本地临时目录。 - 需要对方确认什么: - 无 - 是否已解决:是 ### B2F-034 - 时间:2026-04-07 09:46:00 - 谁提的:backend - 当前事实: - 玩家进入游戏只认“已发布 release”。 - `currentPresentation / currentContentBundle` 当前表示的是: - 当前已发布 release 实际绑定的展示版本 - 当前已发布 release 实际绑定的内容包 - 它们不是 event 草稿默认值。 - `play.canLaunch` 当前已收紧,不是“有 release 就真”。 - 需要对方确认什么: - frontend 页面文案应按“当前发布展示版本 / 当前发布内容包版本”理解。 - 是否已解决:是 ### B2F-032 - 时间:2026-04-03 18:42:00 - 谁提的:backend - 当前事实: - backend 已接收 frontend 调试日志,并以此作为联调事实依据。 - 当前建议前端日志至少带: - `eventId` - `releaseId` - `manifestUrl` - `game.mode` - `playfield.kind` - `details.seq` - 需要对方确认什么: - frontend 继续按结构化日志回传事实,不靠截图猜测。 - 是否已解决:是 --- ## 阻塞 - 当前无 backend 侧新增阻塞。 - 若 frontend 发现问题,请直接回传: - 当前 `eventId` - 当前 `releaseId` - 当前 `manifestUrl` - 当前页面阶段 - 结构化日志片段 --- ## 已完成 ### 归档摘要(保留必要结论) - 时间:2026-04-07 12:18:00 - 谁提的:backend - 当前事实: - `Bootstrap Demo` 当前会准备三条标准 demo 的基础已发布态: - `evt_demo_001` - `evt_demo_score_o_001` - `evt_demo_variant_manual_001` - 三条 demo 当前都已清理历史残留 ongoing session。 - manual 多赛道当前已确认: - `assignmentMode = manual` - `variantCount = 2` - `detailCanLaunch = true` - 积分赛当前已确认: - `game.mode = score-o` - `playfield.kind = control-set` - 活动列表当前已能稳定返回 3 张标准 demo 卡片。 - 需要对方确认什么: - 无 - 是否已解决:是 --- ## 下一步 - frontend 继续按当前联调基线推进: - 活动列表第一刀 - 详情页/准备页语义收口 - 准备页地图预览 V1 - backend 继续保持: - 一键测试链稳定 - 结构化日志可追踪 - demo 数据可重复复现