## Why 系统里「启用/禁用」「菜单/按钮/接口」「数据权限档位」等枚举值以中文字面量硬编码在前端 6+ 个页面,后端虽已收敛在 `common/enums.ts`,但前端每个页面各自重复一份 `STATUS_MAP`/`TYPE_MAP`/`DATA_SCOPE_MAP`,改一处文案/颜色要改多处,且无法按租户定制展示。字典表(dict_type/dict_item)与字典管理页已存在但 seed 为空、无任何内置数据,等于「有字典能力却无字典可读」。本次把系统枚举真正字典化:内置字典 seed 预置、值受保护、前端用 `useDict` 读字典渲染,并让组件库支持按字典 code 声明下拉/枚举,从根上消除硬编码。 ## What Changes - **数据模型**:`dict_type` 加 `built_in`(内置类型标记),`dict_item` 加 `built_in`(内置项标记)与 `color_type`(标签色 primary/success/warning/danger/info,可空)。 - **内置字典**:seed 预置 5 个系统内置字典及其字典项(值 + 中文 label + 标签色 + 排序):`common_status`(启用/停用)、`user_status`(启用/停用/锁定)、`resource_type`(菜单/按钮/接口)、`data_scope`(全部/本部门/本部门及以下/仅本人/自定义)、`login_status`(成功/失败)。 - **保护规则(后端)**:内置类型不可删;内置项不可删、`value` 不可改;`label`/`sort`/`color_type` 可改;内置类型下可新增「非内置」项(完全自由)。普通字典类型/项不受影响。 - **聚合查询接口**:新增 `GET /dicts` 一次返回全部启用字典类型及其启用字典项(按 sort 升序),供前端缓存。 - **前端字典机制**:新增 dict store + `useDict(dictCode)` Hook(登录后一次性拉取并缓存),提供「字典项数组 / 标签映射 / 下拉选项」三种形态。 - **组件库扩展**:`ty-form` / `ty-search-form` 的 JSON Schema 字段支持 `dictCode`(替代手写 `enum`/`enumNames` 自动解析下拉选项);`ty-table` 的列支持 `dictCode`(自动渲染标签)。 - **页面去硬编码**:用户/角色/资源/组织/租户/字典/审计/登录日志等页面,删除本地 `*_MAP`,改为 `useDict` 读字典。`http_method`(请求方法)为固定标准,不进字典。 ## Capabilities ### New Capabilities - `backend/dict`: 字典保护规则(内置类型/项不可删、value 不可改)+ 内置字典 seed 预置 - `frontend/AD/dict`: 前端字典驱动渲染(useDict + dict store + 组件 dictCode 支持 + 页面去硬编码) ### Modified Capabilities - `shared/data-model`: dict_type/dict_item 新增 built_in / color_type 字段,并锚定 5 个内置枚举字典的取值集合 - `shared/api-contract`: 新增字典聚合查询接口 `GET /dicts` ## Impact - 数据库 `sys_dict_type` / `sys_dict_item` 各加列(built_in、color_type),需 Prisma migration。 - 后端 `sources/sysmgr-nest`: - `dicts/`:新增保护规则校验(update/delete 时按 built_in 拦截)、新增 `GET /dicts` 聚合接口 - `prisma/seed.ts`:预置 5 个内置字典类型 + 字典项 - 前端 `sources/sysmgr-admin`: - 新增 `src/stores/modules/dict.ts` + `src/composables/useDict.ts` - `src/types/crud.ts`:JsonSchemaProperty 增加 `dictCode`、TableColumn 增加 `dictCode` - `src/components/ty-form.vue`、`ty-search-form.vue`、`ty-table.vue`:支持 dictCode 解析 - 字典管理页:内置标记展示、value 保护、颜色编辑;用户/角色/资源/组织/租户/审计/登录日志页去硬编码