world/skill/SKILL.md

3.1 KiB
Raw Blame History

name description
world 世界定义与管理模块W-01 世界管理——world 表 CRUD、列表查询(sqlPaging+复合索引)、创建自动编码、mode 白名单硬校验与流转规则校验、world_mode 编码字典幂等落库。通过 load_world() 挂载。

world 模块技能文档

概述

世界定义与管理(平台入口域根模块)。提供 world 表 CRUD、分页列表查询、创建自动编码、 世界模式mode白名单硬校验与流转规则校验。依赖 sqlor / ahserver / appbase编码字典 appcodes/appcodes_kv

数据模型

worldmodels/world.json 四段式 summary/fields/indexes/codes

  • id VARCHAR(32) PKstr 32getID() 生成,禁 uuid
  • code VARCHAR(64) 唯一(唯一索引 idx_world_code + 应用层前置校验 + 冲突重试)
  • name VARCHAR(255) NOT NULL
  • description TEXT
  • mode VARCHAR(32) NOT NULL DEFAULT 'draft'(白名单 draft/active/paused/archived
  • world_type VARCHAR(32)world_type 编码字典)
  • owner_id / org_id VARCHAR(32)
  • created_at / updated_at TIMESTAMP
  • 复合索引 idx_world_list(org_id, mode, created_at) 支撑列表查询

编码字典init/data.json 幂等落库 world_modedraft=草稿/active=运行中/paused=已暂停/archived=已归档) 与 world_typegame/simulation/education/business/socialappcodes + appcodes_kv 两表同插。

关键接口(经 load_world() 注册到 ServerEnv

  • create_world(params) → 自动编码 W+时间戳+随机4位mode 默认 draft非法 mode/流转 100% 拦截不落库;编码唯一冲突重试 3 次
  • update_world(params) → 部分更新mode 变更走流转校验code 变更走全局唯一校验
  • delete_world(params) / get_world(params)
  • list_worlds(params) → 分页 {list, total, page, page_size}count 与数据查询分离 + 显式列清单(排除 TEXTP95 达标
  • set_world_mode(params) → 模式切换严格校验draft→active⇄paused、active/paused→archived、archived→active

REST 前缀 /api/*wwwroot/api/*.dspy

  • 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下拉数据源返回 [{value,text}],首项"全部"

统一错误结构:{code, message, field, detail};分页结构:{list, total}

陷阱

  • mode 硬校验:非法枚举一律返回 INVALID_MODE绝不落库流转规则见 MODE_TRANSITIONS
  • 编码唯一:唯一索引兜底 + 前置校验 + Duplicate key 冲突重试(自动编码场景)
  • 列表查询 LIMIT/OFFSET 用整数内联,禁止 ${param}$(会生成引号字符串)
  • 所有 .dspy 无 importjson/exception/format_exc/get_module_dbname/DBPools 为预载全局)
  • 取库名用 get_module_dbname('world'),禁止硬编码 DBNAME
  • 根目录不放 init.py包目录为 world/world/三处同步注册world.py / init.py / init.py

依赖

  • sqlorDBPools/sqlExe/sor.C/U/D/R
  • ahserverServerEnv、get_module_dbname
  • appbaseappcodes/appcodes_kv 编码字典)