34 lines
953 B
Go
34 lines
953 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"))
|
||
|
|
}
|