pipeline-sdlc/scripts/load_path.py
ymq 534591e5d5 refactor: 审计 API 迁移到 app_audit 模块
- 删除 wwwroot/api/audit.dspy(迁移到 app_audit)
- work_env.dspy 改 import app_audit.audit_service
- load_path.py 移除 audit.dspy 的 owner.audit 注册
2026-08-14 12:21:01 +08:00

151 lines
5.3 KiB
Python
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.

#!/usr/bin/env python3
"""RBAC path registration for pipeline-sdlc module."""
import os, sys, subprocess
MOD = "pipeline-sdlc"
PATHS_ANY = [
f"/{MOD}/index.ui",
]
PATHS_LOGINED = [
f"/{MOD}",
# Dashboard
f"/{MOD}/sd_dashboard/index.ui",
f"/{MOD}/sd_dashboard/dashboard_data.dspy",
# Projects
f"/{MOD}/sd_projects/index.ui",
f"/{MOD}/sd_projects/get_sd_projects.dspy",
f"/{MOD}/sd_projects/add_sd_projects.dspy",
f"/{MOD}/sd_projects/update_sd_projects.dspy",
f"/{MOD}/sd_projects/delete_sd_projects.dspy",
f"/{MOD}/sd_project_list/index.ui",
# Iterations
f"/{MOD}/sd_iterations/index.ui",
f"/{MOD}/sd_iterations/get_sd_iterations.dspy",
f"/{MOD}/sd_iterations/add_sd_iterations.dspy",
f"/{MOD}/sd_iterations/update_sd_iterations.dspy",
f"/{MOD}/sd_iterations/delete_sd_iterations.dspy",
f"/{MOD}/sd_iteration_list/index.ui",
# Test Plans
f"/{MOD}/sd_test_plans/index.ui",
f"/{MOD}/sd_test_plans/get_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/add_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/update_sd_test_plans.dspy",
f"/{MOD}/sd_test_plans/delete_sd_test_plans.dspy",
f"/{MOD}/sd_test_plan_list/index.ui",
# Test Cases
f"/{MOD}/sd_test_cases/index.ui",
f"/{MOD}/sd_test_cases/get_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/add_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/update_sd_test_cases.dspy",
f"/{MOD}/sd_test_cases/delete_sd_test_cases.dspy",
f"/{MOD}/sd_test_case_list/index.ui",
# Bugs
f"/{MOD}/sd_bugs/index.ui",
f"/{MOD}/sd_bugs/get_sd_bugs.dspy",
f"/{MOD}/sd_bugs/add_sd_bugs.dspy",
f"/{MOD}/sd_bugs/update_sd_bugs.dspy",
f"/{MOD}/sd_bugs/delete_sd_bugs.dspy",
f"/{MOD}/sd_bug_list/index.ui",
# Deploy Envs
f"/{MOD}/sd_deploy_envs/index.ui",
f"/{MOD}/sd_deploy_envs/get_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/add_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/update_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_envs/delete_sd_deploy_envs.dspy",
f"/{MOD}/sd_deploy_env_list/index.ui",
# Review
f"/{MOD}/sd_review/index.ui",
# API
f"/{MOD}/api/bug_close.dspy",
f"/{MOD}/api/bug_confirm.dspy",
f"/{MOD}/api/check_iteration_bugs.dspy",
f"/{MOD}/api/env_verify.dspy",
f"/{MOD}/api/get_iteration_options.dspy",
f"/{MOD}/api/get_project_options.dspy",
f"/{MOD}/api/get_test_plan_options.dspy",
f"/{MOD}/api/submit_bug.dspy",
f"/{MOD}/api/sd_bug_create.dspy",
f"/{MOD}/api/sd_bug_update.dspy",
f"/{MOD}/api/sd_bug_delete.dspy",
f"/{MOD}/api/sd_case_create.dspy",
f"/{MOD}/api/sd_case_update.dspy",
f"/{MOD}/api/sd_case_delete.dspy",
f"/{MOD}/api/sd_env_create.dspy",
f"/{MOD}/api/sd_env_update.dspy",
f"/{MOD}/api/sd_env_delete.dspy",
f"/{MOD}/api/sd_iter_create.dspy",
f"/{MOD}/api/sd_iter_update.dspy",
f"/{MOD}/api/sd_iter_delete.dspy",
f"/{MOD}/api/sd_plan_create.dspy",
f"/{MOD}/api/sd_plan_update.dspy",
f"/{MOD}/api/sd_plan_delete.dspy",
f"/{MOD}/api/sd_proj_create.dspy",
f"/{MOD}/api/sd_proj_update.dspy",
f"/{MOD}/api/sd_proj_delete.dspy",
# Search data sources
f"/{MOD}/api/get_search_bug_status.dspy",
f"/{MOD}/api/get_search_case_status.dspy",
f"/{MOD}/api/get_search_case_type.dspy",
f"/{MOD}/api/get_search_env_status.dspy",
f"/{MOD}/api/get_search_env_type.dspy",
f"/{MOD}/api/get_search_iteration_status.dspy",
f"/{MOD}/api/get_search_iteration_type.dspy",
f"/{MOD}/api/get_search_plan_status.dspy",
f"/{MOD}/api/get_search_plan_type.dspy",
f"/{MOD}/api/get_search_priority.dspy",
f"/{MOD}/api/get_search_project_type.dspy",
f"/{MOD}/api/get_search_reporter_type.dspy",
f"/{MOD}/api/get_search_severity.dspy",
f"/{MOD}/api/get_search_status.dspy",
# Workspace 文件浏览/编辑
f"/{MOD}/api/workspace_tree.dspy",
f"/{MOD}/api/workspace_files.dspy",
f"/{MOD}/api/workspace_open.dspy",
f"/{MOD}/api/workspace_file.dspy",
f"/{MOD}/api/workspace_upload.dspy",
f"/{MOD}/api/workspace_delete.dspy",
f"/{MOD}/api/workspace_popup.dspy",
f"/{MOD}/workspace_edit.xterm",
# 工作环境 / 部署账号(普通用户可用)
f"/{MOD}/api/work_env.dspy",
f"/{MOD}/api/deploy_account.dspy",
]
def find_app_root():
# 从 scripts/ 向上逐层查找 set_role_perm.py位于 pipeline-app 根目录)
d = os.path.dirname(os.path.abspath(__file__))
for _ in range(6):
if os.path.isfile(os.path.join(d, "set_role_perm.py")):
return d
parent = os.path.dirname(d)
if parent == d:
break
d = parent
return None
def main():
root = find_app_root()
if not root:
print("ERROR: pipeline root not found")
sys.exit(1)
set_perm = os.path.join(root, "set_role_perm.py")
py = sys.executable
count = 0
for role, paths in [("any", PATHS_ANY), ("logined", PATHS_LOGINED)]:
for path in paths:
cmd = [py, set_perm, role, path]
r = subprocess.run(cmd, capture_output=True, text=True, cwd=root)
if r.returncode == 0:
count += 1
else:
print(f" WARN: {path} -> {r.stderr.strip()[-80:]}")
print(f"Registered {count}/{len(PATHS_ANY)+len(PATHS_LOGINED)} paths for {MOD}")
if __name__ == "__main__":
main()