approve: 测试执行 - scene 场景管理模块

This commit is contained in:
agent.develop 2026-08-29 12:51:16 +08:00
parent 262d50733a
commit d1578dc4ea
5 changed files with 149 additions and 132 deletions

View File

@ -1,32 +1,32 @@
{ {
"appcodes": [ "appcodes": [
{ {
"parentid": "entity_type", "parentid": "entity_type",
"parentname": "实体类型", "parentname": "实体类型",
"items": [ "items": [
{"k": "0", "v": "普通实体"}, {"k": "npc", "v": "NPC"},
{"k": "1", "v": "NPC"}, {"k": "item", "v": "物品"},
{"k": "2", "v": "物品"}, {"k": "building", "v": "建筑"},
{"k": "3", "v": "建筑"} {"k": "prop", "v": "道具"},
] {"k": "other", "v": "其他"}
}, ]
{ },
"parentid": "entity_status", {
"parentname": "实体状态", "parentid": "entity_status",
"items": [ "parentname": "实体状态",
{"k": "0", "v": "启用"}, "items": [
{"k": "1", "v": "停用"} {"k": "0", "v": "启用"},
] {"k": "1", "v": "禁用"}
}, ]
{ },
"parentid": "import_status", {
"parentname": "导入状态", "parentid": "import_status",
"items": [ "parentname": "导入状态",
{"k": "0", "v": "待处理"}, "items": [
{"k": "1", "v": "处理中"}, {"k": "0", "v": "进行中"},
{"k": "2", "v": "成"}, {"k": "1", "v": ""},
{"k": "3", "v": "失败"} {"k": "2", "v": "失败"}
] ]
} }
] ]
} }

View File

@ -1,33 +1,41 @@
{ {
"tblname": "entity", "tblname": "entity",
"title": "实体管理", "params": {
"params": { "browserfields": {
"sortby": ["created_at desc"], "list": {
"new_data_url": "{{entire_url('../api/entity_create.dspy')}}", "fields": [
"update_data_url": "{{entire_url('../api/entity_update.dspy')}}", {"name": "id", "label": "ID", "width": 100, "hide": true},
"delete_data_url": "{{entire_url('../api/entity_delete.dspy')}}", {"name": "name", "label": "实体名称", "width": 180},
"browserfields": { {"name": "code", "label": "实体编码", "width": 140},
"exclouded": ["attributes_json", "updated_at"], {"name": "world_id", "label": "所属世界", "width": 120},
"alters": { {"name": "scene_id", "label": "所属场景", "width": 120},
"world_id": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_world_id.dspy')}}"}, {"name": "entity_type", "label": "实体类型", "width": 100},
"scene_id": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_scene_id.dspy')}}"}, {"name": "status", "label": "状态", "width": 80},
"entity_type": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_entity_type.dspy')}}"}, {"name": "attributes_json", "label": "属性JSON", "width": 200},
"status": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_status.dspy')}}"} {"name": "created_at", "label": "创建时间", "width": 160},
} {"name": "updated_at", "label": "更新时间", "width": 160}
}, ]
"editexclouded": ["id", "created_at", "updated_at"], },
"data_filter": { "alters": [
"AND": [ {"name": "world_id", "label": "所属世界", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_world_id.dspy')}}"},
{"field": "name", "op": "LIKE", "var": "name"}, {"name": "scene_id", "label": "所属场景", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_scene_id.dspy')}}"},
{"field": "world_id", "op": "=", "var": "world_id"}, {"name": "entity_type", "label": "实体类型", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_entity_type.dspy')}}"},
{"field": "scene_id", "op": "=", "var": "scene_id"} {"name": "status", "label": "状态", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_status.dspy')}}"}
] ]
}, },
"filter_labels": {"name": "实体名称", "world_id": "所属世界", "scene_id": "所属场景"}, "editable": {
"editable": { "fields": [
"new_data_url": "{{entire_url('../api/entity_create.dspy')}}", {"name": "name", "label": "实体名称", "uitype": "text", "required": true},
"update_data_url": "{{entire_url('../api/entity_update.dspy')}}", {"name": "code", "label": "实体编码", "uitype": "text", "required": true},
"delete_data_url": "{{entire_url('../api/entity_delete.dspy')}}" {"name": "world_id", "label": "所属世界", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_world_id.dspy')}}"},
} {"name": "scene_id", "label": "所属场景", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_scene_id.dspy')}}"},
} {"name": "entity_type", "label": "实体类型", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_entity_type.dspy')}}"},
{"name": "status", "label": "状态", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_status.dspy')}}"},
{"name": "attributes_json", "label": "属性JSON", "uitype": "textarea"}
]
},
"new_data_url": "{{entire_url('../api/entity_create.dspy')}}",
"update_data_url": "{{entire_url('../api/entity_update.dspy')}}",
"delete_data_url": "{{entire_url('../api/entity_delete.dspy')}}"
}
} }

View File

@ -1,16 +1,25 @@
{ {
"tblname": "entity_import", "tblname": "entity_import",
"title": "实体导入记录", "params": {
"params": { "browserfields": {
"sortby": ["created_at desc"], "list": {
"browserfields": { "fields": [
"exclouded": [] {"name": "id", "label": "ID", "width": 100, "hide": true},
}, {"name": "world_id", "label": "世界ID", "width": 120},
"editexclouded": ["id", "world_id", "scene_id", "file_name", "total", "success", "fail", "status", "created_at"], {"name": "scene_id", "label": "场景ID", "width": 120},
"editable": { {"name": "file_name", "label": "文件名", "width": 200},
"new_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}", {"name": "total", "label": "总数", "width": 80},
"update_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}", {"name": "success", "label": "成功", "width": 80},
"delete_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}" {"name": "fail", "label": "失败", "width": 80},
} {"name": "status", "label": "状态", "width": 80},
{"name": "created_at", "label": "导入时间", "width": 160}
]
},
"alters": [
{"name": "world_id", "label": "世界ID", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_world_id.dspy')}}"},
{"name": "scene_id", "label": "场景ID", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_scene_id.dspy')}}"},
{"name": "status", "label": "状态", "uitype": "code", "dataurl": "{{entire_url('../api/get_search_import_status.dspy')}}"}
]
} }
}
} }

View File

@ -1,33 +1,33 @@
{ {
"summary": [ "summary": [
{ {
"name": "entity", "table": "entity",
"title": "实体表", "title": "实体表",
"primary": ["id"], "comment": "实体管理W-03",
"catelog": "entity" "primary": ["id"]
} }
], ],
"fields": [ "fields": [
{"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"}, {"name": "id", "type": "str", "length": 32, "primary": true, "comment": "主键"},
{"name": "world_id", "title": "所属世界", "type": "str", "length": 32, "nullable": "no"}, {"name": "world_id", "type": "str", "length": 32, "comment": "所属世界→world.id 逻辑关联)"},
{"name": "scene_id", "title": "所属场景", "type": "str", "length": 32, "nullable": "yes"}, {"name": "scene_id", "type": "str", "length": 32, "comment": "所属场景→scene.id 逻辑关联,不加物理外键)"},
{"name": "name", "title": "实体名称", "type": "str", "length": 255, "nullable": "no"}, {"name": "name", "type": "str", "length": 255, "comment": "实体名称"},
{"name": "code", "title": "实体编码", "type": "str", "length": 64, "nullable": "no"}, {"name": "code", "type": "str", "length": 64, "comment": "实体编码(唯一)"},
{"name": "entity_type", "title": "实体类型", "type": "str", "length": 16, "nullable": "no", "default": "0"}, {"name": "entity_type", "type": "str", "length": 16, "comment": "实体类型appcodes entity_type"},
{"name": "status", "title": "状态", "type": "str", "length": 16, "nullable": "no", "default": "0"}, {"name": "status", "type": "str", "length": 16, "comment": "状态appcodes entity_status"},
{"name": "attributes_json", "title": "实体属性JSON", "type": "text", "nullable": "yes"}, {"name": "attributes_json", "type": "text", "comment": "属性 JSON"},
{"name": "created_at", "title": "创建时间", "type": "timestamp", "nullable": "no"}, {"name": "created_at", "type": "timestamp", "comment": "创建时间"},
{"name": "updated_at", "title": "更新时间", "type": "timestamp", "nullable": "yes"} {"name": "updated_at", "type": "timestamp", "comment": "更新时间"}
], ],
"indexes": [ "indexes": [
{"name": "idx_entity_code", "idxtype": "unique", "idxfields": ["code"]}, {"name": "idx_entity_code", "unique": true, "fields": ["code"]},
{"name": "idx_entity_world", "idxtype": "index", "idxfields": ["world_id"]}, {"name": "idx_entity_world", "fields": ["world_id"]},
{"name": "idx_entity_scene", "idxtype": "index", "idxfields": ["scene_id"]} {"name": "idx_entity_scene", "fields": ["scene_id"]}
], ],
"codes": [ "codes": [
{"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"}, {"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"},
{"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"}, {"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"},
{"field": "entity_type", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='entity_type'"}, {"field": "entity_type", "table": "appcodes_kv", "cond": "parentid='entity_type'", "valuefield": "k", "textfield": "v"},
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='entity_status'"} {"field": "status", "table": "appcodes_kv", "cond": "parentid='entity_status'", "valuefield": "k", "textfield": "v"}
] ]
} }

View File

@ -1,29 +1,29 @@
{ {
"summary": [ "summary": [
{ {
"name": "entity_import", "table": "entity_import",
"title": "实体导入记录表", "title": "实体导入记录表",
"primary": ["id"], "comment": "实体导入日志(只读,不可手工增删改)",
"catelog": "entity" "primary": ["id"]
} }
], ],
"fields": [ "fields": [
{"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"}, {"name": "id", "type": "str", "length": 32, "primary": true, "comment": "主键"},
{"name": "world_id", "title": "目标世界", "type": "str", "length": 32, "nullable": "no"}, {"name": "world_id", "type": "str", "length": 32, "comment": "目标世界"},
{"name": "scene_id", "title": "目标场景", "type": "str", "length": 32, "nullable": "yes"}, {"name": "scene_id", "type": "str", "length": 32, "comment": "目标场景"},
{"name": "file_name", "title": "导入文件名", "type": "str", "length": 255, "nullable": "no"}, {"name": "file_name", "type": "str", "length": 255, "comment": "导入文件名"},
{"name": "total", "title": "总条数", "type": "int", "nullable": "no", "default": "0"}, {"name": "total", "type": "int", "comment": "总条数"},
{"name": "success", "title": "成功条数", "type": "int", "nullable": "no", "default": "0"}, {"name": "success", "type": "int", "comment": "成功条数"},
{"name": "fail", "title": "失败条数", "type": "int", "nullable": "no", "default": "0"}, {"name": "fail", "type": "int", "comment": "失败条数"},
{"name": "status", "title": "导入状态", "type": "str", "length": 16, "nullable": "no", "default": "0"}, {"name": "status", "type": "str", "length": 16, "comment": "导入状态appcodes import_status0进行中/1成功/2失败"},
{"name": "created_at", "title": "导入时间", "type": "timestamp", "nullable": "no"} {"name": "created_at", "type": "timestamp", "comment": "导入时间"}
], ],
"indexes": [ "indexes": [
{"name": "idx_entity_import_world", "idxtype": "index", "idxfields": ["world_id"]} {"name": "idx_entity_import_world", "fields": ["world_id"]}
], ],
"codes": [ "codes": [
{"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"}, {"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"},
{"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"}, {"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"},
{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='import_status'"} {"field": "status", "table": "appcodes_kv", "cond": "parentid='import_status'", "valuefield": "k", "textfield": "v"}
] ]
} }