| name |
description |
| scene |
scene 模块技能文档——场景管理(场景表 CRUD + 场景导入)。提供 scene/scene_import 两张表、CRUD、列表查询接口、文件导入(api/scene_import.dspy),通过 load_scene() 挂载。枚举字段用 appcodes 字典(cond parentid=)。 |
scene 模块
概述
场景管理,含场景导入。依赖 world(world_id 外键)、appbase(appcodes 字典)、rbac(权限)。
数据模型
表 scene(models/scene.json)
| 字段 |
类型 |
说明 |
| id |
str(32) |
主键 |
| world_id |
str(32) |
所属世界(→world.id) |
| name |
str(255) |
场景名称 |
| code |
str(64) |
场景编码(唯一) |
| description |
text |
描述 |
| scene_type |
str(16) |
场景类型(appcodes scene_type,默认 '0') |
| status |
str(16) |
状态(appcodes scene_status,默认 '0') |
| config_json |
text |
场景配置 JSON |
| created_at |
timestamp |
创建时间 |
| updated_at |
timestamp |
更新时间 |
- 主键
["id"];唯一索引 idx_scene_code(code);索引 idx_scene_world(world_id)
- 字典:world_id → world(id/name)、scene_type → appcodes_kv(parentid='scene_type')、status → appcodes_kv(parentid='scene_status')
表 scene_import(models/scene_import.json)
| 字段 |
类型 |
说明 |
| id |
str(32) |
主键 |
| world_id |
str(32) |
目标世界 |
| file_name |
str(255) |
导入文件名 |
| total |
int |
总条数(默认 0) |
| success |
int |
成功条数(默认 0) |
| fail |
int |
失败条数(默认 0) |
| status |
str(16) |
导入状态(appcodes import_status,默认 '0') |
| created_at |
timestamp |
导入时间 |
- 主键
["id"];索引 idx_scene_import_world(world_id)
- 字典:world_id → world、status → appcodes_kv(parentid='import_status')
关键接口
ServerEnv 注册函数(load_scene() 挂载)
list_scenes(params) → [{value:id, text:name}]
get_scene({id}) → 单条
create_scene(ns) → 自动生成 id/code、写 created_at
update_scene(ns) → 写 updated_at、剔除 _text 后缀
delete_scene({id})
import_scenes({world_id, file_name, rows}) → {success, total, success_count, fail}
parse_scene_file(content, filename) → [{...}](JSON 数组 / JSON Lines / CSV)
get_world_options() / get_scene_type_options() / get_scene_status_options() → [{value, text}]
wwwroot/api/*.dspy
list_scenes.dspy、create_scene.dspy、scene_update.dspy、scene_delete.dspy
get_search_world_id.dspy / get_search_scene_type.dspy / get_search_status.dspy:字典下拉
scene_import.dspy:场景导入(world_id + file → parse_scene_file → import_scenes)
陷阱
- 库名禁止硬编码:.py 用
ServerEnv().get_module_dbname("scene"),.dspy 用 get_module_dbname("scene")(全局)
- world 下拉用
ServerEnv().get_module_dbname("world")(world 表在 world 模块库)
- dspy 无 import(json/get_sor_context/debug/params_kw 均为预加载全局)
create_scene 必须设置 created_at = curDateString(),否则 sor.C 静默丢记录
- 导入时
scene_import 记录必须设置 created_at,字段 total/success/fail 为 int
import_scenes 返回用 success_count 表示成功条数(避免与布尔 success 键冲突)
- CRUD json
new_data_url 指向自定义 api/create_scene.dspy;scene_import 为只读列表,无 editable
依赖
- world(world_id 外键 + 世界下拉)、appbase(appcodes 字典)、rbac(权限)