2.6 KiB
2.6 KiB
entity 实体管理模块(W-03)
实体管理模块:管理元景项目的实体(entity)数据,提供实体表 CRUD、分页列表查询与实体文件导入。
功能
- 实体表 CRUD:
entity表新增/编辑/删除/详情/分页列表({list, total})。 - 列表查询:按关键字、实体类型、状态、场景过滤,分页返回
{list, total, page, rows}。 - 实体导入:
api/entity_import.dspy文件导入(CSV 首行表头 / JSON 数组),两阶段处理:- 全量校验(编码必填/唯一、类型/状态字典白名单、场景/世界存在性)——任一行非法整批拦截,不落库;
- 批量插入(同批以
import_id标记),插入异常按import_id补偿回滚,保证无脏数据。
- 导入记录:
entity_import(批次)+entity_import_log(逐行明细)系统生成,只读,禁止手工增删改。 - 编码字典:
entity_type(实体类型)、common_status(通用状态)、import_status(导入状态)经init/data.json幂等落库到 appcodes/appcodes_kv。
数据表
| 表 | 说明 |
|---|---|
entity |
实体表(entity_code 唯一,entity_type 字典,scene_id/world_id 逻辑关联 codes 段,不加外键) |
entity_import |
实体导入批次记录(import_no 唯一,status 字典) |
entity_import_log |
实体导入逐行明细日志(import_id 关联批次) |
接口约定
- REST 统一前缀
/api/*:/entity/api/entity_list.dspy、entity_create.dspy、entity_update.dspy、entity_delete.dspy、entity_get.dspy、entity_import.dspy、entity_import_guard.dspy、entity_import_list.dspy。 - 错误结构统一:
{code, message, field, detail};分页结构统一:{list, total}。 - 非法输入 100% 拦截,不落库。
集成
通过 load_entity() 挂载到宿主应用(app/{应用名}.py 的 init() 中调用并注册 get_module_dbname('entity')),库名禁止硬编码。前端页面:wwwroot/index.ui(入口导航)、wwwroot/import_page.ui(导入页)。
目录结构
modules/entity/
├── entity/ # Python 包(entity/__init__.py + entity/init.py)
├── wwwroot/ # index.ui / import_page.ui / api/*.dspy / i18n/
├── models/ # entity / entity_import / entity_import_log 表定义
├── json/ # entity / entity_import CRUD 定义
├── init/data.json # 编码字典种子(appcodes)
├── scripts/load_path.py # RBAC 路径注册
└── skill/SKILL.md # 模块技能文档