fix(gateway,channelbridge,turnreply): p 标签半包写入侧规整(修「整条塌成一段」)
裁定(已发安卓):**能修**,走**写入侧规整** —— 不指望模型输出、不动客户端。 - 新增 internal/runtime/turnreply/paragraph.go 的 NormalizeParagraphs: 把未被 <p> 包裹的段落补上 <p>(按空行分段;<action>/<narration> 段也包进 <p>, 与正确形态 <p><action>…</action>…</p> 一致) - **幂等**守门断言:已完全包裹的文本逐字不变(防二次加工) - 落点覆盖 Web 与 IM 两条落库路径(gateway/session_turn_reply.go、channelbridge/turnreply.go、 proactive.go)⇒ 两边共用同一份规整文本 ⇒ **历史一次性变好、两个客户端零改动**、渲染口径不分叉 (测试与变异详见切片报告)
This commit is contained in:
1 parent
d532eb3fcd
commit
5de708a560
17 files changed
+721
-46
No files matched your search
@@ -124,12 +124,12 @@ func TestAssistantTurnIDSurvivesInterruptAll(t *testing.T) {
|
||||
}
|
||||
close(runner.release)
|
||||
waitUntil(t, "被中断路的正文落库", func() bool {
|
||||
_, ok := rig.turn(t, "取消前已经产出的正文")
|
||||
_, ok := rig.turn(t, storedParagraph("取消前已经产出的正文"))
|
||||
return ok
|
||||
})
|
||||
rig.assertTurns(t, map[string]string{
|
||||
"被中断的问题": sr.TurnID,
|
||||
"取消前已经产出的正文": sr.TurnID,
|
||||
"被中断的问题": sr.TurnID,
|
||||
storedParagraph("取消前已经产出的正文"): sr.TurnID,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -159,10 +159,10 @@ func TestOrchestratorWiresTurnIDForParallelLegs(t *testing.T) {
|
||||
rig.run.release(0)
|
||||
waitActiveTurns(t, rig.o, history.MainSessionID, 0)
|
||||
rig.assertTurns(t, map[string]string{
|
||||
"第一路的问题": first.TurnID,
|
||||
"reply-1": first.TurnID,
|
||||
"第二路的问题": second.TurnID,
|
||||
"reply-2": second.TurnID,
|
||||
"第一路的问题": first.TurnID,
|
||||
storedParagraph("reply-1"): first.TurnID,
|
||||
"第二路的问题": second.TurnID,
|
||||
storedParagraph("reply-2"): second.TurnID,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -197,10 +197,10 @@ func TestOrchestratorWiresTurnIDForResumedLeg(t *testing.T) {
|
||||
waitActiveTurns(t, rig.o, history.MainSessionID, 0)
|
||||
|
||||
rig.assertTurns(t, map[string]string{
|
||||
"先来的": first.TurnID,
|
||||
"reply-1": first.TurnID,
|
||||
"排队的那条": resumeTurn,
|
||||
"reply-2": resumeTurn,
|
||||
"先来的": first.TurnID,
|
||||
storedParagraph("reply-1"): first.TurnID,
|
||||
"排队的那条": resumeTurn,
|
||||
storedParagraph("reply-2"): resumeTurn,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -241,8 +241,8 @@ func TestOrchestratorWiresTurnIDForSteeredRow(t *testing.T) {
|
||||
rig.run.release(0)
|
||||
waitActiveTurns(t, rig.o, history.MainSessionID, 0)
|
||||
rig.assertTurns(t, map[string]string{
|
||||
"在飞的问题": first.TurnID,
|
||||
"reply-1": first.TurnID,
|
||||
"被吃进的那条": first.TurnID,
|
||||
"在飞的问题": first.TurnID,
|
||||
storedParagraph("reply-1"): first.TurnID,
|
||||
"被吃进的那条": first.TurnID,
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user