rag/wwwroot/knowledge_bases_list/delete_tree_item.dspy
ymq 1c1ef65931 feat(rag): 机构rags目录+容量检查参数化+KB级角色权限
- 存储: 知识库文件存 {workspace_base}/{org}/rags/{kb}/ (机构目录下开设rags目录)
- 容量: rag_check_storage_quota 参数控制是否检查机构上限(默认不检查)
- 权限: rag_knowledge_bases 加 maintain_roles/search_roles; 空=同机构默认可用
  维护入口(upload/delete/rename/tree/tags)校验maintain; 检索入口(search/file_list/file_serve)校验search
- file_serve.dspy: 下载/预览走校验端点, 堵住/idfile/猜路径越权
- 机构隔离: 跨机构KB一律拒绝
2026-09-02 12:09:16 +08:00

18 lines
813 B
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ns = params_kw.copy()
db = DBPools()
dbname = get_module_dbname('rag')
async with db.sqlorContext(dbname) as sor:
_id = ns.get("id", "")
# KB 维护角色校验(按节点反查 kb_id
_recs = await sor.sqlExe("SELECT kb_id FROM rag_document_chunks WHERE id=${id}$", {"id": _id})
await sor.sqlExe("COMMIT", {})
_kb_id = getattr(_recs[0], 'kb_id', '') if _recs else ''
from rag.init import check_kb_perm
env = request._run_ns
_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)
await sor.sqlExe("DELETE FROM rag_document_chunks WHERE id=${id}$", {"id": _id})
return {"widgettype": "Message", "options": {"user_data": {"id": _id}}}
return {"error": "failed"}