feat(gateway): 接线 chat_messages.turn_id 写入(A–D 四点齐)
A 新起一路:publishLegStart 在 persistUserMessages 之前 withTurnID(ctx, leg.turnID)
(该行随 ef3dcb6 已进 HEAD)。
B 队首续跑路:completeTurn 在 o.mu.Unlock() 之后 assignTurnID(sessionID, runLeg.turnID, next.persisted)。
C 被 steer 吃进:consumePending 认领成功后 assignTurnID(sessionID, s.turnID, steerRows(candidates))。
D 助手回复:persistTurnReply 增 turnID 形参,completeTurn 传 leg.turnID —— 刻意**不用** turnIDOfLeg:
interrupt scope=all 会清空 st.legs,而被打断那一路已产出的正文仍要照原样落库(内容是真的),
按 gen 回查只能拿到空串 ⇒ 配对丢失。
删掉 history_turnid_test.go 的 t.Skip:TestSubmitWiresTurnIDForBothRows 真跑并通过。
新增 session_turnid_wiring_test.go(真 SQLite 内存存储 + 真编排器 + 可逐路放行 runner):
单路两条同值 / 并行两路各自同值且两两不同 / 续跑补写(先钉「补写前为空」)/ steer 补写(用该路自己的转向源)/
TestAssistantTurnIDSurvivesInterruptAll(钉住 D 的取值来源)。
变异 5 条(A/B/C/D 各自 + D′ 改回 turnIDOfLeg —— 只有那条守门用例红,证明它守的正是这个取舍)。
诚实边界:turnIDOfLeg 现无生产调用方(保留为兜底);先到先得竞态未构造对抗用例;
IM 渠道桥不走本编排器 ⇒ 其行 turn_id 留空属预期(契约里键缺席)。
This commit is contained in:
1 parent
3589f4b14f
commit
d804c4e675
5 files changed
+281
-10
No files matched your search
@@ -302,13 +302,11 @@ func TestTurnIDOfLegResolvesInFlightLeg(t *testing.T) {
|
||||
// 同值且非空」的**端到端**验收:真存储 + 真编排器,走 Submit → 起路 → 落库 → 结算
|
||||
// 的完整链路,断言提交回报的 TurnID 与落库那两条的 turn_id 完全一致。
|
||||
//
|
||||
// ⏳ 它今天被 Skip 挡住:写入点必须在四个「本子代理硬约束禁止改动」的文件里接线
|
||||
// (session_parallel.go 的 publishLegStart、session_orchestrator.go 的续跑分支、
|
||||
// session_steer.go 的 Steer、session_turn_reply.go 的 persistTurnReply)。接线完成后
|
||||
// 删掉下面这行 Skip,本用例即成为该契约的端到端验收。
|
||||
// 它需要四个写入点全部接线才可能通过(session_parallel.go 的 publishLegStart 走
|
||||
// ctx 通道、session_turn_reply.go 的 persistTurnReply 由 leg.turnID 透传、
|
||||
// session_orchestrator.go 的续跑分支与 session_steer.go 的 Steer 走 assignTurnID
|
||||
// 补写),因此它就是那一批接线的端到端验收。
|
||||
func TestSubmitWiresTurnIDForBothRows(t *testing.T) {
|
||||
t.Skip("待接线:编排器的四个写入点尚未把 TurnID 交给落库(见交接报告),本用例是接线后的端到端验收")
|
||||
|
||||
ctx := context.Background()
|
||||
_, _, _, st := newHistoryEnv(t)
|
||||
run := newGatedLegRunner()
|
||||
|
||||
Reference in new issue
Block a user