world 世界定义与管理模块(W-01 世界管理)
功能
- world 表 CRUD(创建/更新/删除/查询)
- 分页列表查询(sqlPaging + 复合索引 idx_world_list)
- 创建自动编码(W + 时间戳 + 随机4位,全局唯一,冲突重试 3 次)
- mode 白名单硬校验(draft/active/paused/archived)与流转规则校验
- world_mode / world_type 编码字典幂等落库(appcodes + appcodes_kv)
数据表
world(models/world.json 四段式 summary/fields/indexes/codes):
- id VARCHAR(32) PK(str 32,getID() 生成,禁 uuid)
- code VARCHAR(64) 唯一(唯一索引 idx_world_code)
- name VARCHAR(255) NOT NULL
- description TEXT
- mode VARCHAR(32) NOT NULL DEFAULT 'draft'
- world_type VARCHAR(32)
- owner_id / org_id VARCHAR(32)
- created_at / updated_at TIMESTAMP
- 复合索引 idx_world_list(org_id, mode, created_at)
安装集成
- 模块仓库克隆到宿主应用 pkgs/,
pip install . - 宿主应用
app/{app}.py引入from world.init import load_world并在 init() 调用load_world() - 宿主应用定义
get_module_dbname('world')映射到实际库名(禁止模块内硬编码 DBNAME) scripts/load_path.py注册 RBAC 路径(禁通配符)- 构建:
bash build.sh(生成 DDL、CRUD UI、链接 wwwroot)
关键接口(经 load_world() 注册)
create_world(params)→ 自动编码;mode 默认 draft;非法 mode/流转 100% 拦截;编码冲突重试 3 次update_world(params)→ 部分更新;mode 变更走流转校验;code 变更走全局唯一校验delete_world(params)/get_world(params)list_worlds(params)→ 分页 {list, total, page, page_size}set_world_mode(params)→ 模式切换严格校验(draft→active⇄paused、active/paused→archived、archived→active)get_world_mode_options()/get_world_type_options()→ 下拉数据源 [{value, text}]
REST 前缀 /api/*:create_world.dspy / world_update.dspy / world_delete.dspy /
get_world.dspy / list_worlds.dspy / set_world_mode.dspy /
get_search_status.dspy / get_search_world_type.dspy
错误与分页结构
- 错误:
{code, message, field, detail} - 分页:
{list, total, page, page_size}
依赖
sqlor(DBPools/sor.C/U/D/R/sqlPaging/sqlExe)、ahserver(ServerEnv)、appbase(appcodes/appcodes_kv)
Description