文档版本:v1.15 最后更新:2026-04-03 19:26:23
说明:
backend 当前已完成:
/dev/workbench 最小联调台MapRuntimeBinding -> EventRelease -> launch.runtime 主链接通EventPresentation / ContentBundle / EventRelease 第一阶段接通Event 默认 active 三元组固化:
currentPresentationIdcurrentContentBundleIdcurrentRuntimeBindingIdpublish 默认继承当前 active 三元组Bootstrap Demo 与 一键补齐 Runtime 并发布 已可从空白状态跑完整测试链一键标准回归 与 回归结果汇总 已接入标准联调入口前端调试日志 与 当前 Launch 实际配置摘要 已接入 workbenchevt_demo_001evt_demo_score_o_001evt_demo_variant_manual_001当前主线不再是继续补对象,而是进入:
联调标准化阶段
本阶段 backend 的核心任务只有 3 件事:
当前认为“真实输入替换第二刀”已经完成,backend 当前已完成:
活动卡片列表最小产品化配合第一刀
优先顺序建议:
说明:
content manifestpresentation schema活动文案样例这三类输入已接入,当前不再作为本轮重点。
原则:
当前 backend 不建议切去做:
backend 当前这一轮已完成:
当前进入:
活动卡片列表最小产品化第一刀联调回归与小范围修复配合阶段
要求:
当前进一步明确 backend 的执行口径如下:
请继续以这条链作为唯一标准联调入口维护:
Bootstrap Demo
-> 一键补齐 Runtime 并发布
-> launch / play / result / history 回归
要求:
workbench 和相关 backend 调试输出,当前应至少统一包含:
不要只输出“失败了”,要能回答:
当前 demo 数据不要继续散落手工维护,统一以 backend 准备的一键测试数据为准。
后续逐步支持以下更接近生产的真实输入:
联调标准化阶段不要继续发散去做:
当前不建议 backend 继续发散去做:
本次不是让 backend 一次性做完整后台,而是先搭出最小生产骨架,让下面这条链能真正闭环:
地图输入
-> 瓦片版本
-> KML 导入
-> 赛道 variant
-> 活动绑定
-> release
-> launch
-> 客户端消费
当前重点是:
补充确认:
EventEventReleaseSession
主链当前补充确认:
定义并落库以下核心对象:
PlaceMapAssetTileReleaseCourseSetCourseVariantCourseSourceEventEventPresentationContentBundleMapRuntimeBindingEventRelease先让 KML 不再只是文件,而能转成 CourseVariant
先让活动不再只是页面概念,而能正式绑定:
第一阶段优先落以下对象:
PlaceMapAssetTileReleaseCourseSourceCourseSetCourseVariantMapRuntimeBinding第一阶段允许暂缓完整落库:
EventPresentationContentBundle
但对象语义必须先在架构上定清楚PlaceMapAssetTileReleaseCourseSetCourseVariantCourseSourceEventEventPresentationContentBundleMapRuntimeBindingEventRelease建议 backend 先按这个关系理解:
Place 1 -> N MapAssetMapAsset 1 -> N TileReleaseMapAsset 1 -> N CourseSetCourseSet 1 -> N CourseVariantCourseVariant N -> 1 CourseSource
Event 1 -> N EventPresentation
Event 1 -> N ContentBundle
Event 1 -> N MapRuntimeBinding
Event 1 -> N EventRelease
其中:
MapRuntimeBinding 负责引用:
placeIdmapIdtileReleaseIdcourseSetIdcourseVariantId建议先把表和基础模型定下来。
第一阶段优先级建议:
placesmap_assetstile_releasescourse_sourcescourse_setscourse_variantsmap_runtime_bindings第二阶段再补:
event_presentationscontent_bundles说明:
events / event_releases / sessions 主链保留目标:
CourseSourceCourseVariantCourseSet目标:
Event 可绑定:
EventPresentationContentBundleMapRuntimeBinding目标:
EventReleaselaunch 先继续返回当前稳定字段:
resolvedReleasebusinessvariantplaceIdmapIdtileReleaseIdcourseVariantIdeventReleaseId/dev/workbench目标:
本步建议只做:
Place 列表PlacePlace 下新建 MapAssetMapAsset 下新建 TileReleaseCourseSource 列表CourseSourceCourseSetCourseSet 下新建 CourseVariantMapRuntimeBinding 列表MapRuntimeBindingplacemaptile releasecourse variant本步明确不做:
EventPresentation 可视化搭建ContentBundle 大资源管理台一句话:
workbench 当前只做“第一阶段生产骨架联调台”,不做“正式后台管理系统”。
目标:
MapRuntimeBinding 和当前 EventRelease 接起来launch本步建议优先做:
EventRelease 接 MapRuntimeBindingEventRelease 上补 runtimeBindingIdEventRelease 时可带出最小 runtime binding 摘要launch 新增 runtime 摘要块resolvedReleasebusinessvariantruntime 块,建议最少返回:
runtimeBindingIdplaceIdmapIdtileReleaseIdcourseSetIdcourseVariantIdplaceNamemapNamerouteCodeworkbench 最小接线验证/dev/workbench 上增加:
EventRelease 选择或查看runtimeBinding本步明确要求:
launch 链断掉当前阶段建议 backend 后续接口逐步收敛到:
launch关键要求:
launch 采用两阶段兼容,不要求第一阶段打断当前前端稳定链backend 下一步建议把以下接口先接到 /dev/workbench:
PlaceMapAssetTileReleaseCourseSourceCourseSetCourseVariantMapRuntimeBinding接入目标:
不建议当前阶段接入:
backend 下一步建议新增或补齐以下能力:
EventRelease 挂接 runtimeBindingIdEventRelease 时返回最小运行绑定摘要launch 返回新增 runtime 摘要块当前目标不是让前端强依赖新字段,而是先让:
launch 能把运行对象透出来在第三刀已经完成:
MapRuntimeBinding -> EventReleaselaunch.runtime 兼容透出之后,下一步建议进入真正的发布闭环阶段。
目标:
runtimeBindingId 的完整 EventRelease本步建议优先做:
runtimeBindingIdruntimeBindingId/dev/workbench 的发布操作区增加 Runtime Binding 选择runtimeBindingIdGet Releaselaunch都继续透出当前最小 runtime 摘要,供前端和总控验证。
本步关键要求:
ContentBundlePlace,不要让 MapAsset 直接当最上层EventReleaseplaceIdmapIdtileReleaseIdcourseVariantIdeventReleaseId请 backend 线程后续重点回写以下确认:
Place / MapAsset / TileRelease / CourseSource / CourseSet / CourseVariant / MapRuntimeBinding 是否按当前顺序推进CourseSource -> CourseVariant 落EventEventPresentationContentBundleMapRuntimeBindingEventReleaselaunch 两阶段兼容方案是否按当前确认推进本轮新增执行项:
是否按“第三刀最小接线”推进:
MapRuntimeBinding -> EventReleaselaunch.runtime 摘要透出是否按“第四刀发布闭环”推进:
runtimeBindingId是否进入“活动运营域第二阶段”:
EventPresentation 最小落库ContentBundle 最小落库EventRelease 明确绑定 presentation / bundle / runtime是否进入“活动运营域第二阶段第二刀”:
event detail 透出最小 presentation / bundle 摘要release detail 透出最小 presentation / bundle / runtime 摘要launch 增加兼容性的 presentation / contentBundle 摘要块presentation / bundle本次给 backend 的实施要求很简单:
先别继续围绕散装页面和散装配置推进,先把地图运行域和活动运营域的最小骨架搭起来。
当前下一步重点已经进一步明确为:
活动运营域第二阶段第三刀第一版已完成,backend 下一步切到“展示定义统一导入与默认绑定”阶段。
当前 backend 已完成第四刀第一版:
runtimeBindingIdRuntime Binding IDruntime因此下一步建议正式进入前端接线阶段。
目标:
launch.runtime前端第一阶段建议优先做:
launch.runtime 消费runtimeBindingIdplaceIdmapIdtileReleaseIdcourseSetIdcourseVariantIdplaceNamemapNamerouteCodeplacemapvariantrouteCode当前阶段原则:
resolvedRelease / business / variant 旧字段仍继续保留和可用当前 backend 已完成:
0009_event_ops_phase2.sqlEventPresentation 最小落库ContentBundle 最小落库EventRelease 已可绑定:
presentationIdbundleIdruntimeBindingIdpresentationIdcontentBundleIdruntimeBindingId因此下一步建议进入“活动运营域第二阶段第二刀”。目标是:
EventPresentation / ContentBundle 不只存在于后台和 publish 输入里建议顺序:
event detail 透出当前展示与内容包摘要建议最少返回:
currentPresentation
presentationIdtemplateKeyversioncurrentContentBundle
bundleIdbundleTypeversionGet Release 透出完整最小摘要建议 release detail 同时包含:
presentationcontentBundleruntime前两者先以摘要形式返回,不先做复杂 schema 下发。
launch 增加兼容性的活动运营摘要块在保持旧字段与当前 runtime 不变的前提下,新增:
presentationcontentBundle建议最少包括:
presentationIdtemplateKeybundleIdbundleType如果 publish 未显式传入:
presentationIdcontentBundleId允许按 event 当前默认配置自动补齐。
本步明确不建议做:
当前已确认:
本刀建议拆成两步,但按一个阶段推进。
目标:
EventRelease 真正成为活动运营域统一发布产物event detailevent playlaunchrelease detail建议 release detail 最少透出:
presentation
presentationIdtemplateKeyversioncontentBundle
bundleIdbundleTypeversionruntime
runtimeBindingIdplaceIdmapIdtileReleaseIdcourseVariantId同时建议 /dev/workbench 的 release 查看区,能直接验证这三类摘要。
ContentBundle 统一导入入口目标:
ContentBundle当前阶段建议只做“入口”和“元信息”,不做完整资源平台。
建议最小能力:
ContentBundle Import 最小接口bundleTypesourceTypemanifestUrl 或等价资源清单入口versiontitlebundleIdbundleTypeversionassetManifeststatus当前明确不做:
关键原则:
ContentBundle 先做统一导入入口,不先做复杂资源管理系统当前已确认:
event detail / play / launch / release detail 活动运营摘要闭环ContentBundle 统一导入入口第一版所以下一步 backend 不建议继续围绕玩家侧摘要补字段,而应继续把活动运营域生产链做完整。
EventPresentation 统一导入入口目标:
建议最小能力:
EventPresentation Import 最小接口templateKeysourceTypeschemaUrl 或等价 schema 入口versiontitlepresentationIdtemplateKeyversionschemastatusEvent 当前默认 active 绑定目标:
Event 当前默认使用的:
presentationcontentBundleruntimeBinding
三者关系稳定下来建议至少明确:
currentPresentationIdcurrentContentBundleIdcurrentRuntimeBindingId以及 publish 在未显式传入时,默认如何继承这三者。
/dev/workbench 增加最小验证建议补:
Import Presentation当前明确不做:
关键原则:
EventPresentation 和 ContentBundle 都要有统一导入入口Event 继续做业务壳和默认绑定,不吞大资源