fix: search sessions by id and conversation (#808) (#17764)

Co-authored-by: buua436 <sz_buua@foxmail.com>
This commit is contained in:
Wang Qi
2026-08-04 11:34:32 +08:00
committed by GitHub
parent a6da1a05e8
commit ffa168ccca

View File

@@ -68,11 +68,15 @@ class API4ConversationService(CommonService):
if keywords:
keywords = keywords.lower()
escaped_keywords = json_dumps(keywords)[1:-1]
session_id = peewee.fn.LOWER(cls.model.id)
conversation_name = peewee.fn.LOWER(cls.model.name)
message = peewee.fn.LOWER(cls.model.message)
keyword_condition = session_id.contains(keywords) | conversation_name.contains(keywords)
if escaped_keywords == keywords:
sessions = sessions.where(message.contains(keywords))
keyword_condition |= message.contains(keywords)
else:
sessions = sessions.where(message.contains(keywords) | message.contains(escaped_keywords))
keyword_condition |= message.contains(keywords) | message.contains(escaped_keywords)
sessions = sessions.where(keyword_condition)
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))