feat(rag-ui): 维护/检索角色改多选checkbox(multicheck)+role_options.dspy角色选项

This commit is contained in:
ymq 2026-09-02 13:55:37 +08:00
parent 1c1ef65931
commit 728dbc328e
2 changed files with 32 additions and 2 deletions

View File

@ -10,8 +10,8 @@
"fields": [
{"name": "name", "label": "名称", "uitype": "str", "required": true},
{"name": "description", "label": "描述", "uitype": "text"},
{"name": "maintain_roles", "label": "维护角色", "uitype": "str", "tip": "逗号分隔角色名(如 RBACorg.admin空=同机构登录用户均可维护;*=全部"},
{"name": "search_roles", "label": "检索角色", "uitype": "str", "tip": "逗号分隔角色名;空=同机构登录用户均可检索/下载;*=全部"},
{"name": "maintain_roles", "label": "维护角色(可多选)", "uitype": "checkbox", "multicheck": true, "dataurl": "{{entire_url('./role_options.dspy')}}", "valueField": "value", "textField": "text", "tip": "不选=同机构登录用户均可维护"},
{"name": "search_roles", "label": "检索角色(可多选)", "uitype": "checkbox", "multicheck": true, "dataurl": "{{entire_url('./role_options.dspy')}}", "valueField": "value", "textField": "text", "tip": "不选=同机构登录用户均可检索/下载"},
{"name": "embedding_type", "label": "向量引擎", "uitype": "code", "value": "bge-m3", "dataurl": "{{entire_url('./embedding_options.dspy')}}", "valueField": "value", "textField": "text"}
]
}

View File

@ -0,0 +1,30 @@
# 角色多选选项value={orgtypeid}.{name}(与 RBAC 校验格式一致)
ns = params_kw.copy()
db = DBPools()
dbname = get_module_dbname('rag')
opts = [{"value": "*", "text": "*(全部角色)"}]
try:
async with db.sqlorContext(dbname) as sor:
recs = await sor.sqlExe(
"SELECT DISTINCT orgtypeid, name FROM role "
"WHERE orgtypeid IS NOT NULL AND name IS NOT NULL "
"ORDER BY orgtypeid, name LIMIT 60", {})
await sor.sqlExe("COMMIT", {})
seen = set()
for r in (recs or []):
o = getattr(r, 'orgtypeid', '') or ''
n = getattr(r, 'name', '') or ''
if not o or not n:
continue
key = o + '.' + n
if key in seen:
continue
seen.add(key)
opts.append({"value": key, "text": key})
# 机构通配选项
orgs = sorted({(getattr(r, 'orgtypeid', '') or '') for r in (recs or []) if getattr(r, 'orgtypeid', '')})
for o in orgs:
opts.append({"value": o + ".*", "text": o + ".*(该机构全部)"})
except Exception as e:
info('role_options: ' + str(e))
return json.dumps(opts, ensure_ascii=False)