From 6f3858a8f27ae2fbee6b26f11f3e482499ea6f87 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 27 Jul 2026 14:12:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20RAG=20search=20frontend=20=E2=80=94=20s?= =?UTF-8?q?earch.ui,=20search=5Fresult.dspy,=20kb=5Fbuttons.dspy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/rag/kb_buttons.dspy | 18 ++++++ wwwroot/rag/search.ui | 75 +++++++++++++++++++++++ wwwroot/rag/search_result.dspy | 106 +++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 wwwroot/rag/kb_buttons.dspy create mode 100644 wwwroot/rag/search.ui create mode 100644 wwwroot/rag/search_result.dspy diff --git a/wwwroot/rag/kb_buttons.dspy b/wwwroot/rag/kb_buttons.dspy new file mode 100644 index 0000000..fb9b87a --- /dev/null +++ b/wwwroot/rag/kb_buttons.dspy @@ -0,0 +1,18 @@ +"""返回知识库选择按钮列表""" +env = request._run_ns +userorgid = await env.get_userorgid() +async with get_sor_context(env, 'rag') as sor: + sql = "SELECT id, name FROM knowledge_bases WHERE org_id IS NULL OR org_id=${org_id}$ ORDER BY name" + recs = await sor.sqlExe(sql, {"org_id": userorgid}) + +buttons = [] +for r in recs: + buttons.append({ + "widgettype": "Text", + "options": {"text": str(r.name), "cfontsize": 12, "padding": "4px 12px", + "bgcolor": "#eee", "color": "#333", "borderRadius": "4px", "css": "clickable kb-btn"}, + "binds": [{"wid": "self", "event": "click", "actiontype": "script", "target": "self", + "script": f"var f=document.querySelector('[name=kb_id]');if(f)f.value='{r.id}';var btns=document.querySelectorAll('.kb-btn');for(var i=0;i