world/skill/SKILL.md

52 lines
3.1 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.

---
name: world
description: 世界定义与管理模块W-01 世界管理——world 表 CRUD、列表查询(sqlPaging+复合索引)、创建自动编码、mode 白名单硬校验与流转规则校验、world_mode 编码字典幂等落库。通过 load_world() 挂载。
---
# world 模块技能文档
## 概述
世界定义与管理(平台入口域根模块)。提供 world 表 CRUD、分页列表查询、创建自动编码、
世界模式mode白名单硬校验与流转规则校验。依赖 sqlor / ahserver / appbase编码字典 appcodes/appcodes_kv
## 数据模型
`world`models/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_mode`draft=草稿/active=运行中/paused=已暂停/archived=已归档)
`world_type`game/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 用整数内联sqlPaging ns.page/ns.rows禁止 `${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/sqlPaging
- ahserverServerEnv、get_module_dbname
- appbaseappcodes/appcodes_kv 编码字典)