feat(channels): IM 车道生成并写入真实 turn_id(user/assistant 成对 + 同源 WithTurnID;群聊隔离与静默语义不变)
This commit is contained in:
1 parent
ba1974038a
commit
8f6a75b7d7
9 files changed
+215
-21
No files matched your search
@@ -22,7 +22,10 @@ import (
|
||||
// SetMessagesTurnID。
|
||||
//
|
||||
// 空串(列的默认值)意味着「这一行不属于任何已知的回合」:加入该列之前的历史行、
|
||||
// 未经编排器的写入路径(IM 镜像)都是这种情形,读起来与以往逐字相同。
|
||||
// 以及**本就不属于任何回合**的写入路径(被静默登记的非主人消息、无入站回合的主动
|
||||
// 推送)都是这种情形,读起来与以往逐字相同。IM 车道不在其列 —— 它没有编排器,但
|
||||
// 渠道桥自己就是那条车道的回合权威,在落库前生成并写入这一列
|
||||
// (internal/services/channelbridge/turnid.go)。
|
||||
|
||||
// SetMessagesTurnID 把 ids 所指的消息行的 turn_id 落定为 turnID —— 两段式写入的
|
||||
// 第二段(起跑 / 被 steer 消费时补写)。
|
||||
|
||||
@@ -63,13 +63,15 @@ type Message struct {
|
||||
// 逐字相同。
|
||||
ClientMsgID string
|
||||
// TurnID 是这条消息所属的那一**路**回合的权威标识(design/15 §2.5.9):
|
||||
// 编排器生成,与该路全部流帧 / `turn_begin` 帧壳上的 turnId **同值**。因此
|
||||
// 同一路的 user 行与 assistant 行带同一个值 —— 客户端据此精确配对「回复 ↔
|
||||
// 提问」,并在重连 / 回放时从历史行恢复回复侧的分组小标(真并行下同一会话
|
||||
// 有两个交错的回答,只按顺序渲染会配错)。
|
||||
// 由驱动该回合的那一方生成(Web 由编排器、IM 由渠道桥,见
|
||||
// internal/services/channelbridge/turnid.go),与该路全部流帧 / `turn_begin`
|
||||
// 帧壳上的 turnId **同值**。因此同一路的 user 行与 assistant 行带同一个值 ——
|
||||
// 客户端据此精确配对「回复 ↔ 提问」,并在重连 / 回放时从历史行恢复回复侧的
|
||||
// 分组小标(真并行下同一会话有两个交错的回答,只按顺序渲染会配错)。
|
||||
//
|
||||
// 它可选:空串意味着「这一行不属于任何已知的回合」—— 加入该列之前的行、以及
|
||||
// 未经编排器的写入路径(IM 镜像等)都是这种情形。
|
||||
// **本就不属于任何回合**的写入路径(被静默登记的非主人消息、主动推送)都是
|
||||
// 这种情形。
|
||||
//
|
||||
// 两个写入时点(与 Document 同一手法,见 turn_id.go):① 消息落库时它所属的
|
||||
// 路已经存在(新起的一路、以及助手回复)⇒ 随 INSERT 写入;② 排队 / 被转向
|
||||
|
||||
Reference in new issue
Block a user