Fix filter to use Chinese (#16673)

This commit is contained in:
Wang Qi
2026-07-06 18:20:42 +08:00
committed by GitHub
parent b3d536c48e
commit 3a247dbb3c
2 changed files with 16 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ import peewee
from api.db.db_models import DB, API4Conversation, APIToken, Dialog
from api.db.services.common_service import CommonService
from api.utils.json_encode import json_dumps
from common.time_utils import current_timestamp, datetime_format
@@ -65,7 +66,13 @@ class API4ConversationService(CommonService):
if user_id:
sessions = sessions.where(cls.model.user_id == user_id)
if keywords:
sessions = sessions.where(peewee.fn.LOWER(cls.model.message).contains(keywords.lower()))
keywords = keywords.lower()
escaped_keywords = json_dumps(keywords)[1:-1]
message = peewee.fn.LOWER(cls.model.message)
if escaped_keywords == keywords:
sessions = sessions.where(message.contains(keywords))
else:
sessions = sessions.where(message.contains(keywords) | message.contains(escaped_keywords))
date_field = cls.model.update_date if orderby.startswith("update_") else cls.model.create_date
if from_date:
sessions = sessions.where(date_field >= cls._normalize_query_date(from_date))

View File

@@ -17,6 +17,7 @@
package dao
import (
"strconv"
"strings"
"time"
@@ -197,7 +198,13 @@ func (dao *ChatSessionDAO) ListAgentSessions(params ListAgentSessionsParams) (in
}
if params.Keywords != "" {
query = query.Where("LOWER(message) LIKE ?", "%"+strings.ToLower(params.Keywords)+"%")
keywords := strings.ToLower(params.Keywords)
escapedKeywords := strings.Trim(strconv.QuoteToASCII(keywords), `"`)
if escapedKeywords == keywords {
query = query.Where("LOWER(message) LIKE ?", "%"+keywords+"%")
} else {
query = query.Where("(LOWER(message) LIKE ? OR LOWER(message) LIKE ?)", "%"+keywords+"%", "%"+escapedKeywords+"%")
}
}
dateColumn := "create_date"