From 619a70416bb646b89374c8642cc7f44b4c5daed9 Mon Sep 17 00:00:00 2001 From: PKC278 <52959804+PKC278@users.noreply.github.com> Date: Thu, 15 Jan 2026 22:57:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=8A=9F=E8=83=BD=E6=9C=AA=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=8A=A9=E6=89=8B=E6=80=BB=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/search.py | 5 +++++ app/api/endpoints/system.py | 4 ++++ app/chain/ai_recommend.py | 20 ++++++++++++++------ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/app/api/endpoints/search.py b/app/api/endpoints/search.py index 4995d20d..d8a8e705 100644 --- a/app/api/endpoints/search.py +++ b/app/api/endpoints/search.py @@ -214,6 +214,11 @@ async def recommend_search_results( # 如果是强制模式,先取消并清除旧结果,然后直接启动新任务 if force: + # 检查功能是否启用 + if not settings.AI_AGENT_ENABLE or not settings.AI_RECOMMEND_ENABLED: + return schemas.Response(success=True, data={ + "status": "disabled" + }) logger.info("收到新推荐请求,清除旧结果并启动新任务") recommend_chain.cancel_ai_recommend() recommend_chain.start_recommend_task(filtered_indices, len(results), results) diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 35285c9c..d76fa9e7 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -166,6 +166,10 @@ async def get_user_global_setting(_: User = Depends(get_current_active_user_asyn "AI_RECOMMEND_ENABLED" } ) + # 智能助手总开关未开启,智能推荐状态强制返回False + if not settings.AI_AGENT_ENABLE: + info["AI_RECOMMEND_ENABLED"] = False + # 追加用户唯一ID和订阅分享管理权限 share_admin = SubscribeHelper().is_admin_user() info.update({ diff --git a/app/chain/ai_recommend.py b/app/chain/ai_recommend.py index 44388da1..6b1d5fb1 100644 --- a/app/chain/ai_recommend.py +++ b/app/chain/ai_recommend.py @@ -43,12 +43,19 @@ class AIRecommendChain(ChainBase, metaclass=Singleton): json.dumps(request_data, sort_keys=True).encode() ).hexdigest() + @property + def is_enabled(self) -> bool: + """ + 检查AI推荐功能是否已启用。 + """ + return settings.AI_AGENT_ENABLE and settings.AI_RECOMMEND_ENABLED + def _build_status(self) -> Dict[str, Any]: """ 构建AI推荐状态字典 :return: 状态字典 """ - if not settings.AI_RECOMMEND_ENABLED: + if not self.is_enabled: return {"status": "disabled"} if self._ai_recommend_running: @@ -92,11 +99,7 @@ class AIRecommendChain(ChainBase, metaclass=Singleton): # 如果请求变化了(筛选条件改变),返回idle状态 if not is_same_request: - return ( - {"status": "idle"} - if settings.AI_RECOMMEND_ENABLED - else {"status": "disabled"} - ) + return {"status": "idle"} if self.is_enabled else {"status": "disabled"} # 请求未变化,返回当前实际状态 return self._build_status() @@ -187,6 +190,11 @@ Output Format: Return ONLY a JSON array of "index" numbers (e.g., [0, 3, 1]). Do :param search_results_count: 搜索结果总数 :param results: 搜索结果列表 """ + # 防护检查:确保AI推荐功能已启用 + if not self.is_enabled: + logger.warning("AI推荐功能未启用,跳过任务执行") + return + # 计算新请求的哈希值 new_request_hash = self._calculate_request_hash( filtered_indices, search_results_count