entity/README.md

45 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# entity 实体管理模块W-03
实体管理模块管理元景项目的实体entity数据提供实体表 CRUD、分页列表查询与实体文件导入。
## 功能
- **实体表 CRUD**`entity` 表新增/编辑/删除/详情/分页列表(`{list, total}`)。
- **列表查询**:按关键字、实体类型、状态、场景过滤,分页返回 `{list, total, page, rows}`
- **实体导入**`api/entity_import.dspy` 文件导入CSV 首行表头 / JSON 数组),两阶段处理:
1. 全量校验(编码必填/唯一、类型/状态字典白名单、场景/世界存在性)——任一行非法整批拦截,不落库;
2. 批量插入(同批以 `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 # 模块技能文档
```