diff --git a/ai_knowledge_base_v2/apps/admin-web/src/App.vue b/ai_knowledge_base_v2/apps/admin-web/src/App.vue index 95e17ae..af5c15b 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/App.vue +++ b/ai_knowledge_base_v2/apps/admin-web/src/App.vue @@ -912,6 +912,15 @@ function clearAgentPreview() { ]; } +async function clearFeishuCache() { + try { + const result = await api.clearFeishuCache(); + ElMessage.success(result.message || `已清空 ${result.cleared} 条缓存`); + } catch (e: any) { + ElMessage.error(e.message || "刷新缓存失败"); + } +} + async function searchChats() { chats.value = await api.chats(buildChatQuery()); } @@ -1163,6 +1172,7 @@ function buildChatQuery() {
保存 Agent 提示词 清空预览 + 刷新飞书缓存
diff --git a/ai_knowledge_base_v2/apps/admin-web/src/services/api.ts b/ai_knowledge_base_v2/apps/admin-web/src/services/api.ts index 35c1f35..5b71cd1 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/services/api.ts +++ b/ai_knowledge_base_v2/apps/admin-web/src/services/api.ts @@ -135,4 +135,6 @@ export const api = { aiLogs: (query: { sessionId?: number; userId?: number; status?: string } = {}) => request(`/admin/ai-log/list${queryString(query)}`), operationLogs: () => request[]>("/admin/log/list"), + clearFeishuCache: () => + request<{ cleared: number; message: string }>("/admin/feishu/cache/clear", { method: "POST", body: "{}" }), }; diff --git a/ai_knowledge_base_v2/apps/backend/app/api/admin_settings.py b/ai_knowledge_base_v2/apps/backend/app/api/admin_settings.py index 76577d6..d961c47 100644 --- a/ai_knowledge_base_v2/apps/backend/app/api/admin_settings.py +++ b/ai_knowledge_base_v2/apps/backend/app/api/admin_settings.py @@ -302,6 +302,12 @@ def _build_agent_debug_prompt(prompt_content: str, question: str, chunks: list) return f"{prompt_content.strip()}\n\n{context}\n\n用户问题:{question.strip()}" +@router.post("/feishu/cache/clear") +def clear_feishu_cache(current_admin: Admin = Depends(get_current_admin)) -> dict: + count = FeishuKnowledgeService.clear_cache() + return api_success({"cleared": count, "message": f"已清空 {count} 条飞书缓存"}) + + def _config_dict(config: SystemConfig) -> dict: return { "id": config.id, diff --git a/ai_knowledge_base_v2/apps/backend/app/services/feishu_service.py b/ai_knowledge_base_v2/apps/backend/app/services/feishu_service.py index b3f1c45..97bc509 100644 --- a/ai_knowledge_base_v2/apps/backend/app/services/feishu_service.py +++ b/ai_knowledge_base_v2/apps/backend/app/services/feishu_service.py @@ -323,6 +323,13 @@ class FeishuKnowledgeService: _content_cache: dict[str, tuple[str, float]] = {} _CACHE_TTL = 300 # 缓存 5 分钟 + @classmethod + def clear_cache(cls) -> int: + """清空所有飞书内容缓存,返回被清除的条目数""" + count = len(cls._content_cache) + cls._content_cache.clear() + return count + @classmethod def retrieve( cls,