From d1578dc4eaa067ae086b4a307004ce16d962e25b Mon Sep 17 00:00:00 2001 From: "agent.develop" Date: Sat, 29 Aug 2026 12:51:16 +0800 Subject: [PATCH] =?UTF-8?q?approve:=20=E6=B5=8B=E8=AF=95=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=20-=20scene=20=E5=9C=BA=E6=99=AF=E7=AE=A1=E7=90=86=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- init/data.json | 60 ++++++++++++++++----------------- json/entity.json | 70 ++++++++++++++++++++++----------------- json/entity_import.json | 35 ++++++++++++-------- models/entity.json | 62 +++++++++++++++++----------------- models/entity_import.json | 54 +++++++++++++++--------------- 5 files changed, 149 insertions(+), 132 deletions(-) diff --git a/init/data.json b/init/data.json index 9a97353..215f4d9 100644 --- a/init/data.json +++ b/init/data.json @@ -1,32 +1,32 @@ { - "appcodes": [ - { - "parentid": "entity_type", - "parentname": "实体类型", - "items": [ - {"k": "0", "v": "普通实体"}, - {"k": "1", "v": "NPC"}, - {"k": "2", "v": "物品"}, - {"k": "3", "v": "建筑"} - ] - }, - { - "parentid": "entity_status", - "parentname": "实体状态", - "items": [ - {"k": "0", "v": "启用"}, - {"k": "1", "v": "停用"} - ] - }, - { - "parentid": "import_status", - "parentname": "导入状态", - "items": [ - {"k": "0", "v": "待处理"}, - {"k": "1", "v": "处理中"}, - {"k": "2", "v": "完成"}, - {"k": "3", "v": "失败"} - ] - } - ] + "appcodes": [ + { + "parentid": "entity_type", + "parentname": "实体类型", + "items": [ + {"k": "npc", "v": "NPC"}, + {"k": "item", "v": "物品"}, + {"k": "building", "v": "建筑"}, + {"k": "prop", "v": "道具"}, + {"k": "other", "v": "其他"} + ] + }, + { + "parentid": "entity_status", + "parentname": "实体状态", + "items": [ + {"k": "0", "v": "启用"}, + {"k": "1", "v": "禁用"} + ] + }, + { + "parentid": "import_status", + "parentname": "导入状态", + "items": [ + {"k": "0", "v": "进行中"}, + {"k": "1", "v": "成功"}, + {"k": "2", "v": "失败"} + ] + } + ] } diff --git a/json/entity.json b/json/entity.json index b8409e9..519b2d6 100644 --- a/json/entity.json +++ b/json/entity.json @@ -1,33 +1,41 @@ { - "tblname": "entity", - "title": "实体管理", - "params": { - "sortby": ["created_at desc"], - "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')}}", - "browserfields": { - "exclouded": ["attributes_json", "updated_at"], - "alters": { - "world_id": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_world_id.dspy')}}"}, - "scene_id": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_scene_id.dspy')}}"}, - "entity_type": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_entity_type.dspy')}}"}, - "status": {"uitype": "code", "dataurl": "{{entire_url('../api/get_search_status.dspy')}}"} - } - }, - "editexclouded": ["id", "created_at", "updated_at"], - "data_filter": { - "AND": [ - {"field": "name", "op": "LIKE", "var": "name"}, - {"field": "world_id", "op": "=", "var": "world_id"}, - {"field": "scene_id", "op": "=", "var": "scene_id"} - ] - }, - "filter_labels": {"name": "实体名称", "world_id": "所属世界", "scene_id": "所属场景"}, - "editable": { - "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')}}" - } - } + "tblname": "entity", + "params": { + "browserfields": { + "list": { + "fields": [ + {"name": "id", "label": "ID", "width": 100, "hide": true}, + {"name": "name", "label": "实体名称", "width": 180}, + {"name": "code", "label": "实体编码", "width": 140}, + {"name": "world_id", "label": "所属世界", "width": 120}, + {"name": "scene_id", "label": "所属场景", "width": 120}, + {"name": "entity_type", "label": "实体类型", "width": 100}, + {"name": "status", "label": "状态", "width": 80}, + {"name": "attributes_json", "label": "属性JSON", "width": 200}, + {"name": "created_at", "label": "创建时间", "width": 160}, + {"name": "updated_at", "label": "更新时间", "width": 160} + ] + }, + "alters": [ + {"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')}}"} + ] + }, + "editable": { + "fields": [ + {"name": "name", "label": "实体名称", "uitype": "text", "required": true}, + {"name": "code", "label": "实体编码", "uitype": "text", "required": true}, + {"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')}}" + } } diff --git a/json/entity_import.json b/json/entity_import.json index b14d094..06f562b 100644 --- a/json/entity_import.json +++ b/json/entity_import.json @@ -1,16 +1,25 @@ { - "tblname": "entity_import", - "title": "实体导入记录", - "params": { - "sortby": ["created_at desc"], - "browserfields": { - "exclouded": [] - }, - "editexclouded": ["id", "world_id", "scene_id", "file_name", "total", "success", "fail", "status", "created_at"], - "editable": { - "new_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}", - "update_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}", - "delete_data_url": "{{entire_url('../api/entity_import_guard.dspy')}}" - } + "tblname": "entity_import", + "params": { + "browserfields": { + "list": { + "fields": [ + {"name": "id", "label": "ID", "width": 100, "hide": true}, + {"name": "world_id", "label": "世界ID", "width": 120}, + {"name": "scene_id", "label": "场景ID", "width": 120}, + {"name": "file_name", "label": "文件名", "width": 200}, + {"name": "total", "label": "总数", "width": 80}, + {"name": "success", "label": "成功", "width": 80}, + {"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')}}"} + ] } + } } diff --git a/models/entity.json b/models/entity.json index a504777..4157e0a 100644 --- a/models/entity.json +++ b/models/entity.json @@ -1,33 +1,33 @@ { - "summary": [ - { - "name": "entity", - "title": "实体表", - "primary": ["id"], - "catelog": "entity" - } - ], - "fields": [ - {"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"}, - {"name": "world_id", "title": "所属世界", "type": "str", "length": 32, "nullable": "no"}, - {"name": "scene_id", "title": "所属场景", "type": "str", "length": 32, "nullable": "yes"}, - {"name": "name", "title": "实体名称", "type": "str", "length": 255, "nullable": "no"}, - {"name": "code", "title": "实体编码", "type": "str", "length": 64, "nullable": "no"}, - {"name": "entity_type", "title": "实体类型", "type": "str", "length": 16, "nullable": "no", "default": "0"}, - {"name": "status", "title": "状态", "type": "str", "length": 16, "nullable": "no", "default": "0"}, - {"name": "attributes_json", "title": "实体属性JSON", "type": "text", "nullable": "yes"}, - {"name": "created_at", "title": "创建时间", "type": "timestamp", "nullable": "no"}, - {"name": "updated_at", "title": "更新时间", "type": "timestamp", "nullable": "yes"} - ], - "indexes": [ - {"name": "idx_entity_code", "idxtype": "unique", "idxfields": ["code"]}, - {"name": "idx_entity_world", "idxtype": "index", "idxfields": ["world_id"]}, - {"name": "idx_entity_scene", "idxtype": "index", "idxfields": ["scene_id"]} - ], - "codes": [ - {"field": "world_id", "table": "world", "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": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='entity_status'"} - ] + "summary": [ + { + "table": "entity", + "title": "实体表", + "comment": "实体管理(W-03)", + "primary": ["id"] + } + ], + "fields": [ + {"name": "id", "type": "str", "length": 32, "primary": true, "comment": "主键"}, + {"name": "world_id", "type": "str", "length": 32, "comment": "所属世界(→world.id 逻辑关联)"}, + {"name": "scene_id", "type": "str", "length": 32, "comment": "所属场景(→scene.id 逻辑关联,不加物理外键)"}, + {"name": "name", "type": "str", "length": 255, "comment": "实体名称"}, + {"name": "code", "type": "str", "length": 64, "comment": "实体编码(唯一)"}, + {"name": "entity_type", "type": "str", "length": 16, "comment": "实体类型(appcodes entity_type)"}, + {"name": "status", "type": "str", "length": 16, "comment": "状态(appcodes entity_status)"}, + {"name": "attributes_json", "type": "text", "comment": "属性 JSON"}, + {"name": "created_at", "type": "timestamp", "comment": "创建时间"}, + {"name": "updated_at", "type": "timestamp", "comment": "更新时间"} + ], + "indexes": [ + {"name": "idx_entity_code", "unique": true, "fields": ["code"]}, + {"name": "idx_entity_world", "fields": ["world_id"]}, + {"name": "idx_entity_scene", "fields": ["scene_id"]} + ], + "codes": [ + {"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"}, + {"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"}, + {"field": "entity_type", "table": "appcodes_kv", "cond": "parentid='entity_type'", "valuefield": "k", "textfield": "v"}, + {"field": "status", "table": "appcodes_kv", "cond": "parentid='entity_status'", "valuefield": "k", "textfield": "v"} + ] } diff --git a/models/entity_import.json b/models/entity_import.json index d5f0fdb..814d113 100644 --- a/models/entity_import.json +++ b/models/entity_import.json @@ -1,29 +1,29 @@ { - "summary": [ - { - "name": "entity_import", - "title": "实体导入记录表", - "primary": ["id"], - "catelog": "entity" - } - ], - "fields": [ - {"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"}, - {"name": "world_id", "title": "目标世界", "type": "str", "length": 32, "nullable": "no"}, - {"name": "scene_id", "title": "目标场景", "type": "str", "length": 32, "nullable": "yes"}, - {"name": "file_name", "title": "导入文件名", "type": "str", "length": 255, "nullable": "no"}, - {"name": "total", "title": "总条数", "type": "int", "nullable": "no", "default": "0"}, - {"name": "success", "title": "成功条数", "type": "int", "nullable": "no", "default": "0"}, - {"name": "fail", "title": "失败条数", "type": "int", "nullable": "no", "default": "0"}, - {"name": "status", "title": "导入状态", "type": "str", "length": 16, "nullable": "no", "default": "0"}, - {"name": "created_at", "title": "导入时间", "type": "timestamp", "nullable": "no"} - ], - "indexes": [ - {"name": "idx_entity_import_world", "idxtype": "index", "idxfields": ["world_id"]} - ], - "codes": [ - {"field": "world_id", "table": "world", "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'"} - ] + "summary": [ + { + "table": "entity_import", + "title": "实体导入记录表", + "comment": "实体导入日志(只读,不可手工增删改)", + "primary": ["id"] + } + ], + "fields": [ + {"name": "id", "type": "str", "length": 32, "primary": true, "comment": "主键"}, + {"name": "world_id", "type": "str", "length": 32, "comment": "目标世界"}, + {"name": "scene_id", "type": "str", "length": 32, "comment": "目标场景"}, + {"name": "file_name", "type": "str", "length": 255, "comment": "导入文件名"}, + {"name": "total", "type": "int", "comment": "总条数"}, + {"name": "success", "type": "int", "comment": "成功条数"}, + {"name": "fail", "type": "int", "comment": "失败条数"}, + {"name": "status", "type": "str", "length": 16, "comment": "导入状态(appcodes import_status:0进行中/1成功/2失败)"}, + {"name": "created_at", "type": "timestamp", "comment": "导入时间"} + ], + "indexes": [ + {"name": "idx_entity_import_world", "fields": ["world_id"]} + ], + "codes": [ + {"field": "world_id", "table": "world", "valuefield": "id", "textfield": "name"}, + {"field": "scene_id", "table": "scene", "valuefield": "id", "textfield": "name"}, + {"field": "status", "table": "appcodes_kv", "cond": "parentid='import_status'", "valuefield": "k", "textfield": "v"} + ] }