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
@@ -32,11 +32,15 @@ import (
|
||||
// 一条按结束原因区分的诚实说明。
|
||||
//
|
||||
// 真实文本按渠道既有行为去掉首尾空白后交付(内容一字不改),与加入本保证之前
|
||||
// 的行为完全一致。
|
||||
// 的行为完全一致 —— **唯一例外**是与网关同一次(同一份)的段落包裹规整
|
||||
// (turnreply.NormalizeParagraphs):它给未被 `<p>` 包裹的段落补上包裹,
|
||||
// 于是**落库文本**(主人私聊会镜像进 Web 主会话)与**出站气泡切分**
|
||||
// (splitBubbles 按 `<p>` 切)吃的是同一份文本,客户端那侧「整条塌成一段」
|
||||
// 的同一条判据在 IM 侧不会再出现第二个答案。
|
||||
func turnVisibleReply(ctx context.Context, res *loop.Result, runErr error) (string, bool) {
|
||||
text := turnreply.Text(res)
|
||||
if res != nil && res.Text == text {
|
||||
return strings.TrimSpace(text), true
|
||||
return strings.TrimSpace(turnreply.NormalizeParagraphs(res.Text)), true
|
||||
}
|
||||
if errors.Is(runErr, context.Canceled) || ctx.Err() != nil {
|
||||
return "", false
|
||||
|
||||
Reference in new issue
Block a user