chore: archive dict-driven-enums change + sync specs to main specs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
7a5af292fb
commit
8743e68451
39
openspec/specs/backend/dict/spec.md
Normal file
39
openspec/specs/backend/dict/spec.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Dict Specification
|
||||
|
||||
## Purpose
|
||||
|
||||
定义字典域的保护规则与内置字典种子:内置字典类型与字典项受保护(不可删、value 不可改),仅 label/排序/颜色可编辑,并预置 5 个系统内置枚举字典。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 内置类型保护
|
||||
内置字典类型(built_in 为真)SHALL 不可被删除。
|
||||
|
||||
#### Scenario: 删除内置类型被拒
|
||||
- **WHEN** 管理员尝试删除内置字典类型
|
||||
- **THEN** 后端拒绝并返回错误(内置类型不可删除)
|
||||
|
||||
### Requirement: 内置项保护
|
||||
内置字典项(built_in 为真)SHALL 不可删除、value 不可修改;label/sort/color_type 可修改。
|
||||
|
||||
#### Scenario: 修改内置项 value 被拒
|
||||
- **WHEN** 管理员尝试修改内置字典项的 value
|
||||
- **THEN** 后端拒绝并返回错误(内置项 value 不可修改)
|
||||
|
||||
#### Scenario: 修改内置项 label 与排序
|
||||
- **WHEN** 管理员修改内置字典项的 label 或 sort
|
||||
- **THEN** 修改成功
|
||||
|
||||
### Requirement: 新增非内置项
|
||||
内置字典类型下 SHALL 允许新增非内置项(built_in 为假),新项可自由编辑与删除。
|
||||
|
||||
#### Scenario: 内置类型下新增项
|
||||
- **WHEN** 管理员在内置类型下新增字典项
|
||||
- **THEN** 新项 built_in 为假,可正常增删改
|
||||
|
||||
### Requirement: 内置字典种子
|
||||
系统 seed SHALL 预置 5 个内置字典类型及字典项(含 label、color_type、sort):common_status、user_status、resource_type、data_scope、login_status。
|
||||
|
||||
#### Scenario: 幂等初始化
|
||||
- **WHEN** 运行 seed 脚本
|
||||
- **THEN** 5 个内置字典类型与字典项被创建,重复运行不重复插入
|
||||
50
openspec/specs/frontend/AD/dict/spec.md
Normal file
50
openspec/specs/frontend/AD/dict/spec.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Dictionary Rendering Specification
|
||||
|
||||
## Purpose
|
||||
|
||||
定义前端字典驱动渲染机制:登录后缓存全部启用字典,组件按字典 code 声明下拉/标签,页面不再硬编码枚举中文映射,且字典管理页对内置项施加保护交互。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 字典缓存
|
||||
前端 SHALL 在登录后一次性拉取全部启用字典(GET /dicts)并缓存于全局字典 store,登录失效时清空。
|
||||
|
||||
#### Scenario: 登录后缓存
|
||||
- **WHEN** 用户登录进入后台
|
||||
- **THEN** 前端拉取并缓存全部启用字典
|
||||
|
||||
#### Scenario: 登出清空
|
||||
- **WHEN** 用户登出
|
||||
- **THEN** 字典缓存被清空
|
||||
|
||||
### Requirement: useDict Hook
|
||||
前端 SHALL 提供 useDict(dictCode) Hook,返回该字典类型的响应式字典项数组(label/value/color_type/sort)。
|
||||
|
||||
#### Scenario: 读取字典项
|
||||
- **WHEN** 组件调用 useDict('common_status')
|
||||
- **THEN** 返回 启用(enabled)/停用(disabled) 等字典项
|
||||
|
||||
### Requirement: 组件字典 code 声明
|
||||
JSON Schema 字段 SHALL 支持 dictCode 声明:ty-form / ty-search-form 的 select/enum 字段用 dictCode 自动解析下拉选项(label/value);ty-table 列用 dictCode 自动渲染标签(按 color_type 着色)。
|
||||
|
||||
#### Scenario: 下拉按字典渲染
|
||||
- **WHEN** 搜索/表单字段声明 dictCode='resource_type'
|
||||
- **THEN** 下拉选项按字典项渲染为 菜单/按钮/接口
|
||||
|
||||
#### Scenario: 表格标签按字典渲染
|
||||
- **WHEN** 表格列声明 dictCode='common_status'
|
||||
- **THEN** 单元格按字典项渲染启用/停用标签并按 color_type 着色
|
||||
|
||||
### Requirement: 字典管理保护交互
|
||||
字典管理页 SHALL 对内置类型/项展示「内置」标记,并禁用内置项的 value 编辑与删除(仅 label/排序/颜色可编辑)。
|
||||
|
||||
#### Scenario: 内置项 value 只读
|
||||
- **WHEN** 管理员在字典管理页编辑内置字典项
|
||||
- **THEN** value 输入框禁用,label/排序/颜色可编辑,且不提供删除入口
|
||||
|
||||
### Requirement: 字典化渲染生效
|
||||
各页面枚举字段 SHALL 按字典渲染:修改某字典项的 label 或 color_type 后,引用该字典的页面 SHALL 刷新后按新 label/颜色展示。
|
||||
|
||||
#### Scenario: 改 label 全局生效
|
||||
- **WHEN** 管理员把 common_status 中 enabled 的 label 由「启用」改为「可用」
|
||||
- **THEN** 所有引用 common_status 的页面(租户/角色/资源/组织等)刷新后展示「可用」
|
||||
@ -59,3 +59,14 @@
|
||||
#### Scenario: 资源 CRUD
|
||||
- **WHEN** 管理端操作某核心域
|
||||
- **THEN** 通过对应复数资源路径进行增删改查
|
||||
|
||||
### Requirement: 字典聚合查询接口
|
||||
系统 SHALL 提供 `GET /dicts` 接口,需登录态,按当前租户一次返回全部启用状态的字典类型及其启用状态的字典项(字典项按 sort 升序),供前端登录后缓存渲染。
|
||||
|
||||
#### Scenario: 一次性拉取
|
||||
- **WHEN** 前端调用 GET /dicts
|
||||
- **THEN** 返回全部启用字典类型,每个类型含其启用字典项(label/value/color_type/sort)
|
||||
|
||||
#### Scenario: 停用过滤
|
||||
- **WHEN** 某字典类型或字典项被停用
|
||||
- **THEN** GET /dicts 不返回该类型或该项
|
||||
|
||||
@ -58,3 +58,21 @@ user 实体 SHALL 支持启用/停用/锁定状态;停用与锁定的用户 SH
|
||||
#### Scenario: 锁定登录
|
||||
- **WHEN** 锁定用户尝试登录
|
||||
- **THEN** 系统拒绝登录并提示账号已锁定
|
||||
|
||||
### Requirement: 字典实体扩展
|
||||
dict_type 实体 SHALL 新增 built_in 字段(布尔,标记内置字典类型);dict_item 实体 SHALL 新增 built_in(布尔,标记内置字典项)与 color_type(字符串,取值 primary/success/warning/danger/info,可空)字段,用于前端标签渲染与内置保护。
|
||||
|
||||
#### Scenario: 内置类型标记
|
||||
- **WHEN** 某字典类型由系统 seed 预置
|
||||
- **THEN** 其 built_in 为真,后端据此保护其不被删除
|
||||
|
||||
#### Scenario: 内置项颜色
|
||||
- **WHEN** 内置字典项需要区分展示
|
||||
- **THEN** 其 color_type 指定标签色(如启用=success、锁定=danger、停用=info)
|
||||
|
||||
### Requirement: 内置枚举字典取值
|
||||
系统 SHALL 预置 5 个内置枚举字典并锚定其取值集合:common_status={enabled,disabled}、user_status={enabled,disabled,locked}、resource_type={menu,button,api}、data_scope={all,dept,dept_and_child,self,custom}、login_status={success,fail}。
|
||||
|
||||
#### Scenario: 前端按字典渲染枚举
|
||||
- **WHEN** 前端渲染用户/角色/资源等页面的枚举字段
|
||||
- **THEN** 从对应内置字典读取 label 与 color_type,取值不脱离上述集合
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user