- 表名统一 dda_ 前缀(dda_approvals/dda_approval_configs),跨应用复用防冲突 - 解耦关键改动:原回调硬编码 biz_type=='content_publish' + 写 cms_content 表, 改为 register_biz_handler(biz_type, handler) 钩子分派,模块内零业务表引用 - 含 models(四段式)/json(CRUD)/9个dspy端点/load_path(any回调+9 logined)/i18n四语言 - README 覆盖凭据配置、审批模板配置、回调地址、审批节点接法(产线步骤)
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
||
"""RBAC path registration for dingdingflow module.
|
||
|
||
宿主根目录执行:py3/bin/python pkgs/dingdingflow/scripts/load_path.py
|
||
(pipeline-app 的 load_path.sh 会自动扫描 pkgs/*/scripts/load_path.py)
|
||
"""
|
||
import subprocess
|
||
|
||
MOD = "dingdingflow"
|
||
|
||
# 钉钉服务器回调:外部 POST 无登录态,必须 any
|
||
# ⚠️ 安全:回调处理内部靠 processInstanceId 匹配本地记录,无匹配即拒绝
|
||
PATHS_ANY = [
|
||
f"/{MOD}/api/dingtalk_callback.dspy",
|
||
]
|
||
|
||
PATHS_LOGINED = [
|
||
f"/{MOD}",
|
||
f"/{MOD}/api/dd_approval_configs_create.dspy",
|
||
f"/{MOD}/api/dd_approval_configs_delete.dspy",
|
||
f"/{MOD}/api/dd_approval_configs_list.dspy",
|
||
f"/{MOD}/api/dd_approval_configs_update.dspy",
|
||
f"/{MOD}/api/dd_approvals_create.dspy",
|
||
f"/{MOD}/api/dd_approvals_delete.dspy",
|
||
f"/{MOD}/api/dd_approvals_list.dspy",
|
||
f"/{MOD}/api/dd_approvals_update.dspy",
|
||
]
|
||
|
||
|
||
def register_paths():
|
||
for path in PATHS_ANY:
|
||
subprocess.run(["py3/bin/python", "set_role_perm.py", "any", path])
|
||
print(f" any: {path}")
|
||
for path in PATHS_LOGINED:
|
||
subprocess.run(["py3/bin/python", "set_role_perm.py", "logined", path])
|
||
print(f" logined: {path}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print(f"=== {MOD} RBAC registration ===")
|
||
register_paths()
|
||
print(f"Done. any={len(PATHS_ANY)} logined={len(PATHS_LOGINED)}")
|