feat(flow): toolCalls 覆盖率追到全部编排回合(L3)—— 图带权威回合标识
- 新增 StartRoundWithTurnID(ctx, owner, text):从 ctx 取权威回合标识(与 chat_messages.turn_id
同值);Run 的唯一生产建图入口切到它;原 StartRound 语义逐字不变(1 行包装)
- 归属桶(并行按路分图)保持不变;落盘查询键 lane_turn_id 对单路也有值 ⇒ 消息面按等值查得到图
- 无权威标识时**保持缺席**(不拿桶里的路标识顶上:不许臆造)
- 不需要迁移 0024(0023 的列+索引已在位;老单路行标识根本没存过,回填=编造)
形状变化(已登记契约):graph.id 对单路也追加 #{回合标识}(web-7 → web-7#turn-…),
顺带修掉「重启后单路轮次 upsert 掉旧行」的隐患。3 个变异自检(退回老入口/无视 ctx/臆造回退)。
This commit is contained in:
1 parent
6475eb875d
commit
4a937bd269
6 files changed
+353
-21
No files matched your search
@@ -125,16 +125,20 @@ func TestFlowPublisher_RoundsShareRoundNumberButNeverID(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestFlowPublisher_SingleLegUnchanged 钉住**单路逐字不变**:归属桶就是会话 id,
|
||||
// 图 id 仍是 `{会话}-{轮次}`(没有路后缀),帧上 `turnId` 键缺席。既有回归
|
||||
// (flow_snapshot_test.go 的 web-1/web-2)与本条是同一口径的两侧。
|
||||
// TestFlowPublisher_SingleLegUnchanged 钉住**老入口(无 ctx 通道)的单路逐字不变**:
|
||||
// 归属桶就是会话 id,图 id 仍是 `{会话}-{轮次}`(没有后缀),帧上 `turnId` 键缺席。
|
||||
// 既有回归(flow_snapshot_test.go 的 web-1/web-2)与本条是同一口径的两侧。
|
||||
//
|
||||
// 单路在**有 ctx 通道**时的形状(覆盖全部编排回合的那条路)见 flow_turnid_test.go:
|
||||
// 那里 `turnId` 是**在场**的(权威回合标识),因为「单路没有权威标识」这件事本身
|
||||
// 已经随 CODE-TC-2 消失 —— 本入口的缺席只说明**它没有 ctx 可读**。
|
||||
func TestFlowPublisher_SingleLegUnchanged(t *testing.T) {
|
||||
p := NewFlowPublisher(nil, func(string) bool { return true })
|
||||
p.StartRound("web", "你好")
|
||||
p.EndRound("web", "你也好")
|
||||
g := p.LastGraph("web")
|
||||
if g == nil || g.ID != "web-1" || g.TurnID != "" {
|
||||
t.Fatalf("单路图 = %+v,want id=web-1 且无 turnId(逐字不变)", g)
|
||||
t.Fatalf("单路图 = %+v,want id=web-1 且无 turnId(老入口逐字不变)", g)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user