文档版本:v0.1 最后更新:2026-04-02 18:33:00
本文档用于定义“多 KML / 多赛道 variant”第一阶段联调所需的最小前后端契约。
目标:
variantId 工作说明:
第一阶段只解决下面 4 件事:
variantlaunch 能明确返回本局最终绑定的 variantIdresult / ongoing / recovery 能持续追溯同一个 variantId一句话目标:
让 variantId 成为贯穿一局的稳定事实。
launch 返回的最终绑定结果variantId都建议能反查:
variantIdvariantName建议活动可玩信息中增加一个最小赛道编排块,例如在 play 返回里体现:
含义:
建议最小取值:
manualrandomserver-assigned含义:
建议最小字段:
idnamedescriptionrouteCodeselectable备注:
play 里返回所有复杂资源推荐最小形态示意:
{
"play": {
"assignmentMode": "manual",
"courseVariants": [
{
"id": "variant_a",
"name": "A 线",
"description": "适合首次体验",
"routeCode": "A",
"selectable": true
},
{
"id": "variant_b",
"name": "B 线",
"description": "稍长路线",
"routeCode": "B",
"selectable": true
}
]
}
}
launch 必须承担“最终绑定本局赛道”的责任。
建议在现有 launch 返回中增加一个明确的 variant 绑定块。
launch.variant.idlaunch.variant.namelaunch.variant.routeCodelaunch.variant.assignmentMode如需保守,也可挂到 business 下,但建议语义上单独成块,避免和 release/session 混淆。
如果是手选模式,前端建议向 launch 传:
variantId如果是随机模式,前端可以:
assign=random 请求意图无论前端是否传入 variantId,launch 返回都必须给出最终绑定结果。
因为地图页只应消费:
variantId不应再依赖准备页上的临时选择状态。
推荐最小形态示意:
{
"launch": {
"variant": {
"id": "variant_b",
"name": "B 线",
"routeCode": "B",
"assignmentMode": "manual"
},
"resolvedRelease": {
"releaseId": "rel_xxx",
"manifestUrl": "https://..."
},
"business": {
"sessionId": "ses_xxx",
"sessionToken": "..."
}
}
}
建议在以下位置都可见:
ongoingSessionrecentSessionsession detail最小补充:
variantIdvariantNamerouteCode建议 GET /sessions/{sessionPublicID}/result 至少返回:
result.session.variantIdresult.session.variantNameresult.session.routeCode这样前端单局结果页和历史结果页都能统一展示。
前端第一阶段建议只做下面几件事:
assignmentModecourseVariants[]manual 下展示可选赛道列表random 下展示“随机分配”server-assigned 下只展示结果launch.variant.* 写入 GameLaunchEnvelopevariantId 一起进入地图页和恢复快照variantName / routeCodevariantIdvariantId后端第一阶段建议只做下面几件事:
assignmentModecourseVariants[]variantIdvariant 信息variantId这样就足够完成第一阶段联调。
这份最小契约不替代现有六层检查,后续一旦开始实现,仍建议按六层检查推进:
特别是:
courseVariantsvariantId 产出 runtime profile这三层都不能跳。
多赛道第一阶段联调只需要先定住 assignmentMode、courseVariants[]、launch.variant.*、session/result.variant* 这四组最小字段,让 variantId 成为贯穿一局的稳定事实。