- scripts/load_path.py: PATHS_CONTRACTS 20 条(含 M3b 5 个导出契约) + PATHS_READONLY_DENY 9 条 = 29 条全显式登记,无通配符;与 wwwroot/api/*.dspy(29) 一一对应 - wwwroot/api/: 新增 9 个 CRUD 只读拒绝端点(create/update/delete × 3 表), 封死 xls2ui 回退默认写入口,保 rules_hash 29.6 确定性指纹唯一写入路径 - json/*.json: 根级 browserfields 合并进 params,三文件统一 tblname/alias/title/params 根键集, editable 齐备 new_/update_/delete_data_url 且指向真实 .dspy - scripts/audit_rbac_parity.py: 修复 PATHS = A + B (BinOp) 解析取空的自身缺陷(假 FAIL 根因), 新增 json/ 根键白名单 + editable 三 URL + 幽灵/漏登记 检查 - pbl_compiler/init.py: 文件头注释登记条数与代码事实对齐(29=20+9) - 实跑: audit_rbac_parity.py rc=0 PASS;test_m3b_mapping.py PASS=113/FAIL=0
41 lines
2.6 KiB
JSON
41 lines
2.6 KiB
JSON
{
|
||
"tblname": "pbl_capability_registry",
|
||
"alias": "pbl_capability_registry_list",
|
||
"title": "能力注册表(第11章缺口)",
|
||
"_comment": "M3b 整改(QC #3):删除根级冗余 browserfields(规范只允许 params.browserfields),根键统一为 tblname/alias/title/params;alias 由 pbl_compiler(与模块同名、生成目录会与模块 wwwroot 冲突)改为 pbl_capability_registry_list;params.editable 补齐 new/update/delete_data_url 对象,三写 URL 指向显式拒绝直写的端点(唯一写入口是契约 pbl_capability_register)。",
|
||
"params": {
|
||
"browserfields": {
|
||
"id": {"label": "ID", "type": "number", "list": true},
|
||
"tenant_id": {"label": "租户ID", "type": "text", "list": true},
|
||
"capability_key": {"label": "能力键", "type": "text", "list": true},
|
||
"category": {"label": "分类", "type": "text", "list": true},
|
||
"args_schema_json": {"label": "参数JSON Schema", "type": "text", "list": true},
|
||
"permission_required": {"label": "所需权限", "type": "text", "list": true},
|
||
"is_enabled": {"label": "启用", "type": "checkbox", "list": true},
|
||
"version_no": {"label": "版本", "type": "number", "list": true},
|
||
"description": {"label": "说明", "type": "text", "list": true}
|
||
},
|
||
"editable": {
|
||
"get_data_url": {
|
||
"url": "{{entire_url('/pbl_compiler/api/pbl_capability_list.dspy')}}"
|
||
},
|
||
"new_data_url": {
|
||
"url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_create.dspy')}}"
|
||
},
|
||
"update_data_url": {
|
||
"url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_update.dspy')}}"
|
||
},
|
||
"delete_data_url": {
|
||
"url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_delete.dspy')}}"
|
||
}
|
||
},
|
||
"new_data_url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_create.dspy')}}",
|
||
"update_data_url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_update.dspy')}}",
|
||
"delete_data_url": "{{entire_url('/pbl_compiler/api/pbl_capability_registry_delete.dspy')}}",
|
||
"editexclouded": ["id", "tenant_id", "created_at", "updated_at"],
|
||
"_crud_note": "能力注册表只读列表:注册/更新一律走契约 pbl_capability_register(做 capability_key 规范化、args_schema JSON 校验与租户归属校验),物理删除一律禁止(历史蓝图引用会造成产物不可复现),下线用 is_enabled=0 软标记。三个写端点仅用于满足 editable 格式硬要求并封死 xls2ui 默认写包装,均返回 widgettype=Error。",
|
||
"order_by": "id DESC",
|
||
"page_size": 20
|
||
}
|
||
}
|