ns = params_kw.copy() kb_id = ns.get('kb_id', '') name = ns.get('name', '').strip() desc = ns.get('description', '') if not kb_id or not name: return json.dumps({"status": "error", "error": "kb_id and name required"}, ensure_ascii=False) # KB 维护角色校验(机构隔离 + 角色) from rag.init import check_kb_perm env = request._run_ns db = DBPools() async with db.sqlorContext(get_module_dbname('rag')) as sor: _ok, _kb, _msg = await check_kb_perm(env, sor, kb_id, 'maintain') if not _ok: return json.dumps({"status": "error", "error": _msg}, ensure_ascii=False) env = request._run_ns userorgid = await env.get_userorgid() async with get_sor_context(env, 'rag') as sor: await sor.sqlExe( "UPDATE rag_knowledge_bases SET name=${name}$, description=${desc}$, updated_at=NOW() " "WHERE id=${id}$ AND (org_id=${org_id}$ OR org_id IS NULL)", {"name": name, "desc": desc, "id": kb_id, "org_id": userorgid}) return json.dumps({"widgettype": "urlwidget", "options": {"url": entire_url('/rag/knowledge_bases_list/index.ui')}}, ensure_ascii=False)