36 lines
2.3 KiB
Markdown
36 lines
2.3 KiB
Markdown
# Work Log — 2025-01-xx
|
||
|
||
## Scope / Background
|
||
- 任务:W-01 世界管理(world 模块,new_dev,task_id gvpV_sE3EQghCY2yNovFT,元景项目初始迭代)
|
||
- 仓库:机构 modules/world/
|
||
- 目标:world 表 CRUD + 列表查询(sqlPaging+复合索引) + 创建自动编码 + mode 白名单/流转校验 +
|
||
world_mode 编码字典幂等落库 + /api/* REST + 统一错误结构 + 分页结构
|
||
|
||
## Timeline / Commits
|
||
- de9ab91 fix(world): 删除模块根目录遗留 __init__.py
|
||
- 22b18f5 feat(world): W-01 世界管理模块(world 表 CRUD/列表/自动编码/mode 校验/编码字典)
|
||
|
||
## Key Technical Decisions
|
||
1. mode 校验集中在 world.py(MODE_WHITELIST + MODE_TRANSITIONS),所有入口(create/update/set_world_mode)统一拦截。
|
||
2. 自动编码 W+时间戳+随机4位;唯一索引兜底 + Duplicate key 重试 3 次。
|
||
3. 列表查询:count 与数据分离、显式列清单(排除 TEXT)、idx_world_list(org_id,mode,created_at) 复合索引。
|
||
4. 下拉数据源从 appcodes_kv 读(world_mode/world_type),字典不可用回退英文标签,避免硬编码中文。
|
||
5. init.py 单数/复数双注册(create_world/create_worlds),满足 CRUD 框架 dspy 包装器调用约定。
|
||
|
||
## Verification(QC 硬证据)
|
||
- py_compile:world/world.py world/init.py world/__init__.py scripts/load_path.py → OK
|
||
- dspy 审计:wwwroot/api/*.dspy grep import/print/uuid → 无输出(零违规)
|
||
- JSON 合法性:init/data.json、models/world.json、json/world.json → JSON OK
|
||
- models 四段式:sections=[codes,fields,indexes,summary];primary=[id];id=str 32;
|
||
indexes=[idx_world_code unique(code), idx_world_list index(org_id,mode,created_at)]
|
||
- CRUD 格式:tblname + params(browserfields/editable/new/update/delete_data_url)
|
||
- 打包验证:find_packages(where='.') → ['world'](仅包目录,根目录无 __init__.py 不误打包)
|
||
- git log:de9ab91 / 22b18f5(模块代码已本地提交)
|
||
|
||
## Environment-Limited Checks
|
||
- 本环境无 MySQL/Sage 运行时,无法现场起服务 curl 验证;已用 py_compile + JSON load +
|
||
dspy grep 审计 + 打包 find_packages 做静态闭环验证。部署时按 build.sh 生成 DDL/CRUD UI 并落库。
|
||
|
||
## Current State
|
||
- 模块代码已本地提交(de9ab91),根目录无遗留 __init__.py,包目录 world/world/。
|