docs(voice): 收口「没会话/没绑定就走 default」的镜像注释(r4)
唯一 finding:audio.go 的 speechRequest.SessionID 注释原本写「省略它时本口没有会话
概念 ⇒ 走 emotionTTS 的 default 分支」——**反了**。真实链路是
effectivePersona(ctx,"") → sessionPersona("") 为空**不是终点** → Effective =
defaultPersonaID() → 常规安装必有全局默认人格 ⇒ personaId 非空 ⇒ 走 personas 映射。
照那句话改的人会写出 `if req.SessionID == "" { personaID = "" }`,正是 r2 修掉的病。
改为:省略时按**全局默认人格**选发音人(会话绑定 → 全局默认人格 → 两者都没有才落到
default 字符),并显式写了"不要写成 if SessionID == \"\" { personaID = \"\" }"。
顺手同根三处(不留第四轮):
- tts/config.go 的 Config.Default 注释:成因表「会话无绑定 / 读取失败 / 该出口本身
没有会话」已过时 ⇒ 改为「空串的唯一合法成因是连全局默认人格都没有」,并写明不是
"会话未绑定"、也不是"出站口没有会话"。
- runtimeconfig/voicetts.go 的 Default 字段注释与文件头同族措辞同步;
- selection.go 的 WithPersonaID / Resolve 分支表、service.go 的分支小标把
「解析不到」统一改成「连全局默认人格都没有」;
- voice_emotiontts_test.go 的 TestSpeechEndpointNoSessionUsesDefault 注释同步(该用例
没接人格库,所以确实落到 default —— 但成因写对了);
- wire_voice_tts_test.go nit:改成「已废弃的全局 `character` 不生效」(墓碑键仍在)。
纯注释:`git diff` 里非注释改动行为空。go build/vet 通过;四包 go test -count=1 全绿。
This commit is contained in:
1 parent
1c2944fcf4
commit
b90811fae4
8 files changed
+41
-22
No files matched your search
@@ -61,10 +61,10 @@ var (
|
||||
//
|
||||
// 四条分支(与主人的验收清单逐条对应):
|
||||
//
|
||||
// personaID 有映射 ⇒ (Selection{mapped}, nil)
|
||||
// personaID 为空/解析不到 + 配了 Default ⇒ (Selection{default}, nil)
|
||||
// personaID 为空/解析不到 + 没配 Default ⇒ ("", ErrNoCharacter)
|
||||
// personaID 非空 + 没有映射(含映射值为空) ⇒ ("", ErrPersonaUnmapped)
|
||||
// personaID 有映射 ⇒ (Selection{mapped}, nil)
|
||||
// personaID 为空(连全局默认人格都没有)+ 配了 Default ⇒ (Selection{default}, nil)
|
||||
// personaID 为空 + 没配 Default ⇒ ("", ErrNoCharacter)
|
||||
// personaID 非空 + 没有映射(含映射值为空) ⇒ ("", ErrPersonaUnmapped)
|
||||
//
|
||||
// 🔴 第四行**不会**看 Default —— 这正是"不许借用另一个角色"的编码位置。
|
||||
func (c Config) Resolve(personaID string) (Selection, error) {
|
||||
@@ -85,8 +85,9 @@ func (c Config) Resolve(personaID string) (Selection, error) {
|
||||
// personaKey 是 ctx 里携带 personaId 的键(每次请求现传,绝不缓存成全局)。
|
||||
type personaKey struct{}
|
||||
|
||||
// WithPersonaID 返回携带本次请求所属角色 id 的 ctx。空串是合法的(= 解析不到),
|
||||
// 与"没设置"同义 —— 两者都走 default 分支。
|
||||
// WithPersonaID 返回携带本次请求**生效人格** id 的 ctx。空串是合法的,但它的唯一
|
||||
// 合法成因是"连全局默认人格都没有"——**不是**"会话未绑定"(未绑定但存在全局默认人格
|
||||
// 时,调用方应传全局默认人格)。传空串只在 Resolve 层意味着"走 default 分支"。
|
||||
//
|
||||
// 调用方是**知道会话**的那一层(网关的两条出站口):它先按当次请求解析出
|
||||
// `chat_sessions.persona_id`,再交给语音面。语音面自己不去查库,因此这里没有
|
||||
|
||||
Reference in new issue
Block a user