From 18c6d2b0dd77b38f487747aad1fcd1218aa8c356 Mon Sep 17 00:00:00 2001
From: yj <2077506045@qq.com>
Date: 星期三, 27 八月 2025 09:19:57 +0800
Subject: [PATCH] 1. 新增测试群组关键字,测试群组名称包含关键字,在其中发言一律不触发静默。

---
 app/services/redis_queue.py |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/app/services/redis_queue.py b/app/services/redis_queue.py
index 792bcc5..54af4a4 100644
--- a/app/services/redis_queue.py
+++ b/app/services/redis_queue.py
@@ -26,9 +26,14 @@
         """鑾峰彇澶勭悊鐘舵�侀敭"""
         return f"{self.processing_prefix}{from_user}"
 
-    def get_conversation_key(self, from_user: str) -> str:
+    def get_conversation_key(self, from_user: str, group: str = None) -> str:
         """鑾峰彇鐢ㄦ埛瀵硅瘽ID閿�"""
-        return f"{self.conversation_prefix}{from_user}"
+        if group:
+            # 鍩轰簬鐢ㄦ埛+缇ょ粍鐢熸垚conversation_key锛岀‘淇濅笉鍚岀兢缁勭殑瀵硅瘽鐙珛
+            return f"{self.conversation_prefix}{from_user}:{group}"
+        else:
+            # 鍏煎鏃х増鏈紝浠呭熀浜庣敤鎴�
+            return f"{self.conversation_prefix}{from_user}"
 
     def enqueue_message(self, from_user: str, message_data: Dict[str, Any]) -> bool:
         """灏嗘秷鎭姞鍏ョ敤鎴烽槦鍒�"""
@@ -36,8 +41,8 @@
             queue_key = self.get_user_queue_key(from_user)
             message_json = json.dumps(message_data, ensure_ascii=False)
 
-            # 浣跨敤LPUSH灏嗘秷鎭姞鍏ラ槦鍒楀ご閮�
-            result = self.redis_client.lpush(queue_key, message_json)
+            # 浣跨敤RPUSH灏嗘秷鎭姞鍏ラ槦鍒楀熬閮紝纭繚FIFO椤哄簭
+            result = self.redis_client.rpush(queue_key, message_json)
 
             logger.info(f"娑堟伅宸插姞鍏ラ槦鍒�: user={from_user}, queue_length={result}, message={message_json}")
             return True
@@ -107,28 +112,28 @@
             logger.error(f"妫�鏌ュ鐞嗙姸鎬佸け璐�: user={from_user}, error={str(e)}")
             return False
 
-    def get_conversation_id(self, from_user: str) -> Optional[str]:
+    def get_conversation_id(self, from_user: str, group: str = None) -> Optional[str]:
         """鑾峰彇鐢ㄦ埛鐨勫璇滻D"""
         try:
-            conversation_key = self.get_conversation_key(from_user)
+            conversation_key = self.get_conversation_key(from_user, group)
             return self.redis_client.get(conversation_key)
         except Exception as e:
-            logger.error(f"鑾峰彇瀵硅瘽ID澶辫触: user={from_user}, error={str(e)}")
+            logger.error(f"鑾峰彇瀵硅瘽ID澶辫触: user={from_user}, group={group}, error={str(e)}")
             return None
 
     def set_conversation_id(
-        self, from_user: str, conversation_id: str, ttl: int = 86400
+        self, from_user: str, conversation_id: str, group: str = None, ttl: int = 86400
     ) -> bool:
         """璁剧疆鐢ㄦ埛鐨勫璇滻D"""
         try:
-            conversation_key = self.get_conversation_key(from_user)
+            conversation_key = self.get_conversation_key(from_user, group)
             self.redis_client.setex(conversation_key, ttl, conversation_id)
             logger.info(
-                f"璁剧疆瀵硅瘽ID: user={from_user}, conversation_id={conversation_id}"
+                f"璁剧疆瀵硅瘽ID: user={from_user}, group={group}, conversation_id={conversation_id}"
             )
             return True
         except Exception as e:
-            logger.error(f"璁剧疆瀵硅瘽ID澶辫触: user={from_user}, error={str(e)}")
+            logger.error(f"璁剧疆瀵硅瘽ID澶辫触: user={from_user}, group={group}, error={str(e)}")
             return False
 
     def get_queue_length(self, from_user: str) -> int:

--
Gitblit v1.9.1