589 lines
17 KiB
XML
589 lines
17 KiB
XML
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"width": "100%",
|
||
"height": "100%",
|
||
"padding": "20px",
|
||
"backgroundColor": "#F5F7FA"
|
||
},
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "PBL 基础域薄扩展 (M8) — world / scene / entity 契约导航",
|
||
"fontSize": "22px",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "薄扩展边界:仅新增关联表 pbl_domain_ref,不修改 world / scene / entity 三张基表结构 (Q-OPEN-3)。下列 13 个契约入口的 url 一律使用 entire_url 包裹的 /pbl_domain_ext/api/xxx.dspy 绝对路径(module-development-spec 2.1 / 2.3c),避免 RBAC 403 与路由错误。",
|
||
"fontSize": "13px",
|
||
"color": "#666666",
|
||
"marginTop": "6px"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "一、关联表 pbl_domain_ref 契约(6)",
|
||
"fontSize": "16px",
|
||
"marginTop": "18px",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "ResponsableBox",
|
||
"options": {
|
||
"gap": "16px",
|
||
"minWidth": "250px"
|
||
},
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_list.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "1. 关联记录列表 pbl_domain_ref_list",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 tenant_id / ref_type / class_id / team_id 分页查询关联记录",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_get.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "2. 关联记录详情 pbl_domain_ref_get",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 id 取单条关联记录(含 ext_json 解析结果)",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_bind.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "3. 绑定 pbl_domain_ref_bind",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "幂等建立 ref_type+ref_id 与蓝图/班级/团队的关联",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_update.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "4. 更新 pbl_domain_ref_update",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "更新 ext_json / blueprint_id / class_id / team_id(租户与归属校验)",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_unbind.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "5. 解绑 pbl_domain_ref_unbind",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "删除关联记录(不级联删除基表 world/scene/entity)",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_domain_ref_check_access.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "6. 访问判定 pbl_domain_ref_check_access",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "判定当前租户/班级/团队是否可访问指定 ref_type+ref_id",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "二、基础域只读查询契约 world / scene / entity(4)",
|
||
"fontSize": "16px",
|
||
"marginTop": "18px",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "ResponsableBox",
|
||
"options": {
|
||
"gap": "16px",
|
||
"minWidth": "250px"
|
||
},
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_world_list_by_tenant.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "7. 世界列表 pbl_world_list_by_tenant",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "读基表 world + 关联表过滤,返回本租户可见世界",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_world_get_context.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "8. 世界上下文 pbl_world_get_context",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "聚合 world 与其下 scene/entity 关联,供运行时取上下文",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_scene_list_by_world.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "9. 场景列表 pbl_scene_list_by_world",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 world_id 读基表 scene + 关联表过滤",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_entity_list_by_scene.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "10. 实体列表 pbl_entity_list_by_scene",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 scene_id 读基表 entity + 关联表过滤",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "三、班级 / 团队维度契约(3)",
|
||
"fontSize": "16px",
|
||
"marginTop": "18px",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "ResponsableBox",
|
||
"options": {
|
||
"gap": "16px",
|
||
"minWidth": "250px"
|
||
},
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_team_bind_world.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "11. 团队绑定世界 pbl_team_bind_world",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "写 pbl_domain_ref(ref_type=world, team_id=...),幂等",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_team_list_by_class.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "12. 班级下团队 pbl_team_list_by_class",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 class_id 聚合关联表,返回团队与其绑定的世界",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"options": {
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "20px",
|
||
"cursor": "pointer",
|
||
"borderRadius": "6px"
|
||
},
|
||
"binds": [
|
||
{
|
||
"wid": "self",
|
||
"event": "click",
|
||
"actiontype": "urlwidget",
|
||
"target": "app.pbl_domain_ext_content",
|
||
"options": {
|
||
"url": "{{entire_url('/pbl_domain_ext/api/pbl_team_world_list.dspy')}}?_webbricks_=1"
|
||
},
|
||
"mode": "replace"
|
||
}
|
||
],
|
||
"subwidgets": [
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "13. 团队世界清单 pbl_team_world_list",
|
||
"fontWeight": "bold"
|
||
}
|
||
},
|
||
{
|
||
"widgettype": "Text",
|
||
"options": {
|
||
"label": "按 team_id 返回该团队可访问的世界列表",
|
||
"fontSize": "12px",
|
||
"color": "#888888"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"widgettype": "VBox",
|
||
"id": "pbl_domain_ext_content",
|
||
"options": {
|
||
"width": "100%",
|
||
"flex": "1",
|
||
"marginTop": "20px",
|
||
"backgroundColor": "#FFFFFF",
|
||
"padding": "12px",
|
||
"borderRadius": "6px"
|
||
}
|
||
}
|
||
]
|
||
}
|