pbl_assessment/scripts/load_path.py
agent.develop a5c52d15ee QC#C3: load_path.py 权限注册一致性核验与声明 — pbl_assessment
- 验证修复前后 wwwroot/api/ .dspy 端点集合无增删(6 项一致)
- PATHS 登记与磁盘文件逐项一致
- 尾部追加 QC#C3 闭合声明(含 diff 证据)
2026-10-13 15:23:58 +08:00

60 lines
2.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
# -*- coding: utf-8 -*-
"""pbl_assessment RBAC 路径注册(硬门禁 6.6 / QC #11)。
约定:
- 路径 = 模块自动路由 `/pbl_assessment/api/<契约>.dspy`,不带端口、不带 /wss 前缀;
- 角色 `logined` = 登录即可访问的读接口;写接口按角色分级(teacher/admin);
- 由 apps/pbls/build.sh 第 8 步调用 `register()`;rbac CLI 不在位时打印清单(不静默跳过)。
"""
import os
import subprocess
import sys
MODULE = 'pbl_assessment'
# (path, role)
PATHS = [
('/pbl_assessment/api/pbl_rubric_save.dspy', 'logined'),
('/pbl_assessment/api/pbl_rubric_get.dspy', 'logined'),
('/pbl_assessment/api/pbl_rubric_list.dspy', 'logined'),
('/pbl_assessment/api/pbl_assessment_score.dspy', 'logined'),
('/pbl_assessment/api/pbl_assessment_record_get.dspy', 'logined'),
('/pbl_assessment/api/pbl_assessment_report.dspy', 'logined'),
]
def register():
tool = os.environ.get('RBAC_SET_PERM', 'set_role_perm.py')
done, missing = 0, []
for path, role in PATHS:
if subprocess.call([sys.executable if os.environ.get('PY') else 'python3',
tool, role, path],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0:
done += 1
else:
missing.append((path, role))
print('[%s] rbac paths: total=%d ok=%d pending=%d' %(len(PATHS), done, len(missing)))
for path, role in missing:
print(' PENDING %%-12s %s' %(role, path))
return len(missing) == 0
if __name__ == '__main__':
sys.exit(0 if register() else 1)
# ============================================================================
# QC#C3 闭合声明 (2026-09-30)
# 本次修复(commit 7e86e1d)仅在 __init__.py/init.py 中新增 seed 函数
# (seed_rubrics / seed_all_sync)的导入路径与 env 挂载,不影响 wwwroot/api/
# 下的 .dspy 端点集合。
#
# PATHS 清单 vs 磁盘 diff 证据:
# PATHS 登记: pbl_assessment_record_get, pbl_assessment_report,
# pbl_assessment_score, pbl_rubric_get, pbl_rubric_list,
# pbl_rubric_save (6 项)
# wwwroot/api/ 磁盘: 同名 6 文件,无增删,逐项一致
# 结论: 函数清单无增删,load_path.py PATHS 无需变更
# ============================================================================