ragserver/wwwroot/rag/kb_buttons.dspy

19 lines
1.2 KiB
Plaintext

"""返回知识库选择按钮列表"""
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<btns.length;i++){{btns[i].style.background='#eee';btns[i].style.color='#333'}}this.dom_element.style.background='#3b82f6';this.dom_element.style.color='#fff';var all=document.getElementById('kb_btn_all');if(all){{all.style.background='#eee';all.style.color='#333'}}"}]
})
{"widgettype": "HBox", "options": {"spacing": "8px", "width": "100%", "wrap": true}, "subwidgets": buttons}