fix: 修「假话但绿」的用例 + 补 VoiceTranscoder 注入(W4)

- history_toolcalls_gap_test.go 改成正向断言:单路回合经 StartRoundWithTurnID 带权威 turnId
  ⇒ 落库行按该标识查得到 ⇒ HTTP 出口 toolCalls 在场;并保留「无权威标识 ⇒ 整体缺席」边界用例
- 组合根补 VoiceTranscoder: a.transcoder ⇒ 微信/QQ 的 AMR 语音在落盘前先转 wav 再落副本
- 4 个变异自检(删注入/摘 ctx 标识/清 turn_id/调换 wiring 顺序,均红)
This commit is contained in:
AskaEth committed 2026-10-06 15:59:14 +08:00
1 parent a30f4a49ff
commit ddd3d00d09
3 files changed
+196 -42

No files matched your search

+6
View File
@@ -133,6 +133,12 @@ func (a *app) wireChannels() error {
// a.voice 同时服务 Web 侧 WS 的 voice_input(同一条降级链,不另建一条)。
VoiceSTT: a.voice,
VoiceSTTTimeout: time.Duration(a.cfg.Voice.VoiceSTTTimeoutSec) * time.Second,
// VoiceTranscoder 把本地转码引擎交给入站语音副本链(design/25 §7.1 第 ④ 步;
// 裁决 11):**不可播格式(微信/QQ 的 AMR)必须先转成可播副本再落盘**,否则
// 那条语音只能不落副本(`category=transcode_not_wired` 的诚实 WARN),客户端
// 便拿不到可回放的字节。注入的是 `wireTranscode` 装配的**同一个**引擎实例
// (与工具面的 `transcode` 工具同源),不是第二条降级链。
VoiceTranscoder: a.transcoder,
})
if berr != nil {
return fmt.Errorf("channel bridge: %w", berr)