feat(utils): add BuildRuntimeMessageText function for message formatting

This commit is contained in:
mlogclub
2026-04-18 22:24:30 +08:00
parent e1ffcc64a9
commit ad83d1dfda
5 changed files with 41 additions and 4 deletions
+20
View File
@@ -105,6 +105,26 @@ func BuildHTMLSummary(content string) string {
return strings.TrimSpace(strings.Join(parts, " "))
}
func BuildRuntimeMessageText(messageType enums.IMMessageType, content string) string {
content = strings.TrimSpace(content)
switch messageType {
case enums.IMMessageTypeHTML:
return BuildHTMLSummary(content)
case enums.IMMessageTypeImage:
if content != "" {
return "[图片] " + content
}
return "[图片]"
case enums.IMMessageTypeAttachment:
if content != "" {
return "[附件] " + content
}
return "[附件]"
default:
return content
}
}
func BuildRenderableMessage(item *models.Message) (content, payload string) {
if item == nil {
return "", ""
+16
View File
@@ -71,6 +71,22 @@ func TestBuildMessageHTMLForResponseAddsSignedURL(t *testing.T) {
}
}
func TestBuildRuntimeMessageTextForHTML(t *testing.T) {
got := BuildRuntimeMessageText(enums.IMMessageTypeHTML, `<p>你好</p><p><img data-provider="local" data-storage-key="images/demo.png" alt="demo"></p>`)
if got != "你好 [图片]" {
t.Fatalf("expected html converted to plain text summary, got: %q", got)
}
}
func TestBuildRuntimeMessageTextForAssetMessages(t *testing.T) {
if got := BuildRuntimeMessageText(enums.IMMessageTypeImage, "demo.png"); got != "[图片] demo.png" {
t.Fatalf("unexpected image runtime text: %q", got)
}
if got := BuildRuntimeMessageText(enums.IMMessageTypeAttachment, "spec.pdf"); got != "[附件] spec.pdf" {
t.Fatalf("unexpected attachment runtime text: %q", got)
}
}
func TestBuildRenderableMessageTransformsPayloadAndHTML(t *testing.T) {
config.SetCurrent(&config.Config{
Storage: config.StorageConfig{