thread-master/backend/internal/library/outreach/persona_voice.go

33 lines
952 B
Go

package outreach
import (
"strings"
"haixun-backend/internal/library/style8d"
personadomain "haixun-backend/internal/model/persona/domain/usecase"
)
// FormatVoicePersonaBlock builds the LLM persona block from a full persona profile.
func FormatVoicePersonaBlock(vp *personadomain.PersonaSummary) string {
if vp == nil {
return ""
}
block := style8d.ResolvePersonaBlock(vp.Persona, vp.StyleProfile, vp.Brief)
if block == "" {
return ""
}
extras := make([]string, 0, 3)
if name := strings.TrimSpace(vp.DisplayName); name != "" {
extras = append(extras, "角色名稱:"+name)
}
if goals := strings.TrimSpace(vp.Goals); goals != "" {
extras = append(extras, "回覆目標:"+goals)
}
if benchmark := strings.TrimSpace(vp.StyleBenchmark); benchmark != "" {
extras = append(extras, "語氣參考:"+benchmark)
}
if len(extras) == 0 {
return block
}
return strings.TrimSpace(block + "\n\n" + strings.Join(extras, "\n"))
}