Files
cmr-mini/b2t.md

11 KiB
Raw Blame History

B2T 协作清单

文档版本v1.11 最后更新2026-04-03 13:04:32

说明:

  • 本文件由 backend 维护,写给总控线程
  • 只写事实和请求
  • 不写长讨论稿
  • 每条固定包含:时间、谁提的、当前事实、需要对方确认什么、是否已解决

待确认

B2T-009

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • 总控线程在 t2b.md v1.1 中,已确认 backend 可按增量演进推进第一阶段生产骨架
    • backend 准备按已确认顺序开工:
      • Place
      • MapAsset
      • TileRelease
      • CourseSource
      • CourseSet
      • CourseVariant
      • MapRuntimeBinding
    • EventPresentationContentBundle 先保留对象语义,第二阶段补完整落库
  • 需要对方确认什么:
    • 无新的确认项;本条仅保留为“准备开工”记录
  • 是否已解决:是

已确认

B2T-001

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • 总控线程已确认 backend 采用增量演进方式推进
    • 第一阶段不要求一次性推翻当前已稳定联调的:
      • Event
      • EventRelease
      • Session 主链
  • 需要对方确认什么:
  • 是否已解决:是

B2T-002

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • 总控线程已确认第一阶段优先落库对象顺序:
      • Place
      • MapAsset
      • TileRelease
      • CourseSource
      • CourseSet
      • CourseVariant
      • MapRuntimeBinding
    • backend 接受这条顺序,后续按此推进
  • 需要对方确认什么:
  • 是否已解决:是

B2T-003

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • 总控线程已确认 launch 采用两阶段兼容
    • 第一阶段保留当前稳定联调字段:
      • resolvedRelease
      • business
      • variant
    • 第二阶段再补完整运行对象字段:
      • placeId
      • mapId
      • tileReleaseId
      • courseVariantId
      • eventReleaseId
  • 需要对方确认什么:
  • 是否已解决:是

B2T-004

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • backend 认可总控线程的核心边界:
      • 客户端最终只消费发布产物
      • 不再直接消费原始 KML
      • 不再直接消费地图原始资产
    • 这与 backend 当前已稳定的:
      • EventRelease
      • launch -> resolvedRelease
      • session -> result 主链一致
  • 需要对方确认什么:
  • 是否已解决:是

B2T-005

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • backend 认可总控线程提出的两域拆分:
      • 地图运行域
      • 活动运营域
    • CourseVariant 作为最终运行事实,也与当前多赛道第一阶段契约一致
  • 需要对方确认什么:
  • 是否已解决:是

阻塞

  • 当前无新增阻塞

已完成

B2T-019

  • 时间2026-04-03 13:04:32
  • 谁提的backend
  • 当前事实:
    • backend 已把当前联调环境补成“一键测试环境”
    • /dev/bootstrap-demo 不再只准备:
      • tenant
      • channel
      • event
      • release
      • source
      • build
      • card
    • 现在还会一并准备并回填:
      • place
      • map asset
      • tile release
      • course source
      • course set
      • course variant
      • runtime binding
    • workbench 的:
      • Bootstrap Demo
      • 一键补齐 Runtime 并发布 已可从空白状态直接跑完整测试链
    • workbench 日志现在会输出:
      • 分步执行日志
      • 真实错误消息
      • stack
      • 最后一次 curl
      • 最终预期判定
  • 需要对方确认什么:
  • 是否已解决:是

B2T-018

  • 时间2026-04-03 12:36:15
  • 谁提的backend
  • 当前事实:
    • backend 已完成“活动运营域第二阶段第四刀”最小实现
    • 已新增:
      • POST /admin/events/{eventPublicID}/presentations/import
      • POST /admin/events/{eventPublicID}/defaults
    • events 已新增默认 active 绑定列:
      • current_presentation_id
      • current_content_bundle_id
      • current_runtime_binding_id
    • publish 在未显式传入:
      • runtimeBindingId
      • presentationId
      • contentBundleId 时,会优先继承 event 默认 active 绑定
    • workbench 已补最小验证入口:
      • Import Presentation
      • Save Event Defaults
      • Publish Build 空参继承验证
  • 需要对方确认什么:
  • 是否已解决:是

B2T-007

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • backend 已具备当前稳定主链:
      • 统一登录
      • entry/home
      • event play
      • launch
      • session start / finish
      • result / history
    • backend 已具备:
      • 配置 source / build / release
      • 最小后台资源对象
      • 多赛道第一阶段最小契约
  • 需要对方确认什么:
  • 是否已解决:是

B2T-011

  • 时间2026-04-03 09:09:07
  • 谁提的backend
  • 当前事实:
    • backend 已开始第一阶段生产骨架实施
    • 0008_production_skeleton.sql 已落库到 cmr20260401
    • 当前已新增并可用的后台生产接口覆盖:
      • Place
      • MapAsset
      • TileRelease
      • CourseSource
      • CourseSet
      • CourseVariant
      • MapRuntimeBinding
  • 需要对方确认什么:
  • 是否已解决:是

B2T-012

  • 时间2026-04-03 09:23:03
  • 谁提的backend
  • 当前事实:
    • backend 已按 t2b.md 第 5 步要求,把第一阶段生产骨架对象接入 /dev/workbench
    • 当前联调台已覆盖:
      • Place
      • MapAsset
      • TileRelease
      • CourseSource
      • CourseSet
      • CourseVariant
      • MapRuntimeBinding
    • 当前 workbench 只做:
      • list
      • create
      • detail
      • binding
  • 需要对方确认什么:
  • 是否已解决:是

B2T-013

  • 时间2026-04-03 09:27:18
  • 谁提的backend
  • 当前事实:
    • backend 已整理第一阶段生产骨架最小操作顺序
    • 当前推荐 workbench 联调路径为:
      • Place
      • MapAsset
      • TileRelease
      • CourseSource
      • CourseSet
      • CourseVariant
      • MapRuntimeBinding
    • 该顺序已写入 开发说明.md
  • 需要对方确认什么:
  • 是否已解决:是

B2T-015

  • 时间2026-04-03 09:43:20
  • 谁提的backend
  • 当前事实:
    • backend 已完成“第三刀最小接线”第一版:
      • MapRuntimeBinding -> EventRelease
      • launch.runtime 兼容新增
    • 当前新增能力:
      • GET /admin/releases/{releasePublicID}
      • POST /admin/releases/{releasePublicID}/runtime-binding
    • 当前 launch 在保持旧字段不变的前提下,新增:
      • launch.runtime.runtimeBindingId
      • launch.runtime.placeId
      • launch.runtime.mapId
      • launch.runtime.tileReleaseId
      • launch.runtime.courseSetId
      • launch.runtime.courseVariantId
    • /dev/workbench 已补最小验证入口:
      • Get Release
      • Bind Runtime
  • 需要对方确认什么:
  • 是否已解决:是

下一步

B2T-010

  • 时间2026-04-03 08:52:11
  • 谁提的backend
  • 当前事实:
    • backend 已完成第一阶段生产骨架落库、最小模型接线和 workbench 联调台接入
    • EventPresentationContentBundle 仍先在文档与接口边界保留语义
  • 需要对方确认什么:
  • 是否已解决:是

B2T-014

  • 时间2026-04-03 09:27:18
  • 谁提的backend
  • 当前事实:
    • backend 下一步建议开始做“第一阶段对象与现有 Event/Release 的最小接线”
    • 重点会围绕:
      • MapRuntimeBinding -> EventRelease
      • 运行对象如何逐步进入 launch
      • 保持当前两阶段兼容不破坏前端稳定链
  • 需要对方确认什么:
  • 是否已解决:是

B2T-016

  • 时间2026-04-03 09:43:20
  • 谁提的backend
  • 当前事实:
    • 当前 release 与 runtime binding 的挂接已可单独验证
    • 第四刀目标是把 runtimeBindingId 直接接进 publish 流,减少一次手工挂接
  • 需要对方确认什么:
  • 是否已解决:是

B2T-017

  • 时间2026-04-03 10:46:00
  • 谁提的backend
  • 当前事实:
    • backend 已完成第四刀第一版:
      • POST /admin/builds/{buildID}/publish 支持可选 runtimeBindingId
      • POST /dev/config-builds/publish 支持可选 runtimeBindingId
      • 发布成功后返回 runtime
    • /dev/workbench 发布区已支持直接填写 Runtime Binding ID
    • 旧的“先 publish再 bind runtime”路径继续保留
  • 需要对方确认什么:
  • 是否已解决:是

B2T-018

  • 时间2026-04-03 11:02:42
  • 谁提的backend
  • 当前事实:
    • backend 已完成活动运营域第二阶段第一版:
      • 0009_event_ops_phase2.sql 已落库到 cmr20260401
      • 新增:
        • event_presentations
        • content_bundles
      • event_releases 已明确支持绑定:
        • presentation_id
        • content_bundle_id
        • runtime_binding_id
    • 当前新增后台接口:
      • GET/POST /admin/events/{eventPublicID}/presentations
      • GET /admin/presentations/{presentationPublicID}
      • GET/POST /admin/events/{eventPublicID}/content-bundles
      • GET /admin/content-bundles/{contentBundlePublicID}
    • publish 当前已支持可选直接挂接:
      • runtimeBindingId
      • presentationId
      • contentBundleId
    • /dev/workbench 已补最小验证入口:
      • Create Presentation
      • Create Bundle
      • 发布区填写 Presentation ID / Content Bundle ID / Runtime Binding ID
  • 需要对方确认什么:
  • 是否已解决:是

B2T-019

  • 时间2026-04-03 11:22:50
  • 谁提的backend
  • 当前事实:
    • backend 已完成“活动运营域第二阶段第二刀”第一版:
      • GET /events/{eventPublicID} 透出:
        • currentPresentation
        • currentContentBundle
      • GET /events/{eventPublicID}/play 透出:
        • currentPresentation
        • currentContentBundle
      • POST /events/{eventPublicID}/launch 新增兼容摘要:
        • launch.presentation
        • launch.contentBundle
    • publish 当前在未显式传入:
      • presentationId
      • contentBundleId 时,会优先按 event 当前默认的 active 配置自动补齐
    • 旧字段和旧语义保持不变:
      • resolvedRelease
      • business
      • variant
      • runtime
  • 需要对方确认什么:
  • 是否已解决:是

B2T-020

  • 时间2026-04-03 12:14:21
  • 谁提的backend
  • 当前事实:
    • backend 已完成“活动运营域第二阶段第三刀”第一版:
      • event detail / play / launch / release detail 已统一补齐活动运营摘要
      • presentation 摘要当前最少带:
        • presentationId
        • templateKey
        • version
      • contentBundle 摘要当前最少带:
        • contentBundleId
        • bundleType
        • version
    • backend 已新增最小导入入口:
      • POST /admin/events/{eventPublicID}/content-bundles/import
    • 当前导入入口先只记录:
      • bundleType
      • sourceType
      • manifestUrl
      • version
      • assetManifest
    • /dev/workbench 已补:
      • Import Bundle
      • API 目录中的导入接口说明
  • 需要对方确认什么:
  • 是否已解决:是