status: review created: 2026-07-27 complexity: complex
output/框架问题细化整改清单.md 指出前端运行时业务选项、状态标签和设计器元数据存在分散硬编码。本变更处理剩余高优先级热点,目标为:
sys_dict_type / sys_dict_data 提供,前端通过 useDict、DictTag 和响应式 computed 消费。dict_value 保持现有后端实体、枚举、JSON 配置和数据库存储协议,不借字典整改隐式修改业务值。以下字典已在 forge-server/db/全量初始化SQL.sql 或既有 Flyway 中存在:
| 字典 | 当前值 | 使用范围 |
|---|---|---|
sys_enable_disable |
1/0 |
启停状态 |
sys_yes_no |
1/0 |
数字或布尔开关,前端按字段类型转换 |
sys_show_hide |
1/0 |
菜单显示状态 |
sys_link_open_target |
_self/_blank |
链接打开方式 |
sys_req_method |
GET/POST/PUT/DELETE/ALL |
HTTP 方法;本轮补 PATCH |
sys_resource_type |
1/2/3/4 |
目录/菜单/按钮/API |
data_db_type |
MYSQL/ORACLE/POSTGRESQL/SQLSERVER |
数据库类型 |
flow_process_form_type |
dynamic/external/none |
流程表单类型;本轮补 business |
sys_message_type |
SYSTEM/SMS/EMAIL/CUSTOM |
消息类型 |
sys_message_read_status |
0/1 |
未读/已读 |
sys_client_auth_method |
none/client_secret |
公共/机密客户端 |
views/external/manage.vue:认证类型、API Key 位置、状态、请求方法、内容类型、调用状态和调用类型。views/generator/datasource.vue、template.vue、table.vue:数据库类型、数据源用途/风险、模板类型/引擎、生成方式和启停值。views/data/dataset.vue:结果编码、行权限属性/逻辑、字段数据类型、脱敏规则、日期格式和单位。views/system/menu.vue、client.vue、config-center.vue:资源/显示/布尔值、登录认证、验证码、加密算法和同账号登录策略。views/flow/design.vue、model.vue:设计器类型、流程表单类型和重复审批模式。views/message/biz-type.vue、message-list.vue:启停、跳转方式、消息类型和阅读状态。views/app-center/trigger.vue、integration.vue、components/AppEditorDrawer.vue、components/AppEntryWizard.vue:触发器协议和应用入口持久化选项。views/system/dictData.vue、views/ai/components/DictConfigPanel.vue、views/app-center/components/designer/DocumentStatusMappingTable.vue 重复维护 Naive UI 标签类型。该值控制前端视觉组件,不属于租户运行时业务字典,适合集中常量。
useDict 返回字符串 value;数字、布尔字段必须在 computed 中转换,不能把字符串直接提交给现有接口。data_db_type 使用大写规范值,而生成器历史页面使用 MySQL/PostgreSQL 等展示式值;生成器数据源选项需显式映射为现有存储兼容值。computed,否则 options 会永久停留在空数组。V1.0.54__add_frontend_runtime_dicts.sql,以显式列名、tenant_id=1 和 NOT EXISTS 写入运行时字典。sys_req_method 补 PATCH,给 flow_process_form_type 补 business,不修改历史脚本。DictTag 或字典元数据,不保留重复标签映射。dict_value 必须和后端持久化值完全一致,标签和排序可以由字典管理。computed。DictTag;无匹配字典项时组件保留原值作为兼容回显。| 操作 | 表名 | 内容 | 说明 |
|---|---|---|---|
| 新增内置数据 | sys_dict_type |
External、Generator、Data、Client、Flow、App Center 运行时字典类型 | tenant_id=1,按 dict_type 防重复 |
| 新增内置数据 | sys_dict_data |
与现有持久化协议一致的字典项 | 按 tenant_id + dict_type + dict_value 防重复 |
| 补齐字典项 | sys_dict_data |
sys_req_method=PATCH、flow_process_form_type=business |
不更新已存在项,不修改历史迁移 |
本变更不修改业务表结构,不批量重写业务数据。真实数据库迁移失败时通过修正后的后续 Flyway 脚本处理,禁止修改已执行的 V1.0.54。
无后端业务接口变更。前端继续使用 GET /system/dict/data/list?dictType=... 加载字典。
forge-server/db/migration/V1.0.54__add_frontend_runtime_dicts.sql。src/utils/dict-options.js、src/constants/dict-options.js 及单测。dict_value 会破坏协议;内置协议值只允许修改标签、排序、样式和启停状态。data_mask_rule 包含反斜线正则,Flyway 静态检查和实库回显必须确认转义后值不变。无。用户已授权按分阶段整改方案持续实施。
Number/布尔映射。remark,保留页面专属交互说明作为非协议 UI 元数据。| Task | 状态 | 实际改动文件 | 备注 |
|---|---|---|---|
| Proposal | 完成 | 本变更四份 SDD 文档 | 已按当前工作树和后端值协议盘点 |
| Task 1 | 完成 | V1.0.54__add_frontend_runtime_dicts.sql、dict-options.js 及测试 |
字典迁移和类型转换基础设施已落地,最终 Vitest 11/11 |
| Task 2 | 完成 | System/Message 5 个目标页面 | 运行时选项和状态回显改用字典,保留客户端凭据和配置密钥安全改动 |
| Task 3 | 完成 | External/Generator 4 个目标页面 | 数据库类型映射保持历史存储值;HTTP 方法保留 PATCH、过滤 ALL |
| Task 4 | 完成 | Data/Flow 3 个目标页面 | 数据元数据、设计器和流程表单类型改用字典,未补造前端业务类型 |
| Task 5 | 完成 | App Center 4 个目标页面 | 触发器和应用入口 JSON 协议值、大小写及默认值保持 |
| Task 6 | 完成 | 统一 constants、3 个消费页面、数据集列表字典标签及聚合验证 | Spec Compliance 和 Code Quality 复审均通过 |
AppEditorDrawer 消费的 ai_business_app_mode 未纳入迁移、五个目标页面仍保留硬编码状态回显,且测试未直接证明异步字典到达后 computed options 会更新。V1.0.54 补齐 ai_business_app_mode、DYNAMIC_RENDER、CODE_DOWNLOAD;system/menu.vue、app-center/trigger.vue、data/dataset.vue、external/manage.vue、system/config-center.vue 的目标状态回显改用 DictTag/字典元数据;新增异步 computed 字典测试。toNumberDictOptions;发布状态、访问模式、数据集类型未知值仅回显原协议值;分类停用标签消费 sys_enable_disable;beforeRenderDetail 在组装 ruleItems 前等待行权限字典。TABLE 硬编码“单表/SQL”。DictTag + datasetTypeOptions,并新增限定 tableColumns 区段的源码合同。AppEditorDrawer.vue 和 AppEntryWizard.vue 依赖的 ai_business_app_entry_mode 未纳入可部署迁移。V1.0.54 补齐字典类型及 RUNTIME/ROUTE/IFRAME/EXTERNAL/H5/API 六个协议值,并增加迁移源码合同。git diff --check 通过;未重跑生产构建。/apply。