# 低代码应用管理优化 ## 背景 现有低代码应用管理已经拆分了业务领域、数据模型和应用页面设计,但仍存在边界不清: - 数据模型保存会过滤 `id`、租户、审计等系统字段,页面无法看到真实表结构的基础字段。 - 表结构 DDL 同步主要出现在应用发布环节,导致字段变更和表结构变更不在数据模型资产内闭环。 - 应用页面设计可以间接携带模型协议,容易把页面设计和字段/DDL 变更混在一起。 - 操作按钮只能开关内置按钮,缺少按按钮名称、位置、样式和跳转交互进行配置的能力。 - 草稿实时预览仍以结构化示例为主,用户希望看到更接近真实运行态的页面元素。 ## 目标 1. 数据模型中的每个业务表必须显式拥有只读系统字段:`id` 自增主键、`tenant_id`、`create_by`、`create_time`、`create_dept`、`update_by`、`update_time`、`del_flag`。 2. 数据模型保存提供两种模式: - 仅保存模型配置。 - 保存模型配置并同步表结构到数据库。 3. DDL 预览、字段追加和建表同步都在数据模型页面完成,应用发布不再作为主要 DDL 操作入口。 4. 审计字段和 ID 字段在模型设计、应用字段池、页面预览中可见,但不可编辑、不可删除、不可作为普通业务字段写入。 5. 页面设计支持自定义操作按钮,至少能配置名称、位置、样式、跳转目标和打开方式,并进入运行时操作列/工具栏协议。 6. 实时预览默认渲染真实 Naive UI 表单、表格、按钮和页面布局;已发布应用可继续加载正式运行接口。 ## 非目标 - 不实现任意 SQL 级 DDL 修改;已有表在线同步仍只允许安全追加字段。 - 不实现低代码自定义按钮的任意脚本执行。 - 不把主子表运行时纳入本次范围。 ## 后端变更 - `LowcodeFieldSchema` 补充系统字段元数据:`primaryKey`、`systemField`、`readonly`、`autoIncrement`。 - `LowcodePolicySchema` 补充主键策略、租户字段、逻辑删除字段等数据策略配置,并强制保持安全默认值。 - `LowcodeDataModelService` 保存时不再过滤系统字段,而是规范化并补齐系统字段;同步 DDL 时调用受控 DDL 服务。 - `LowcodeDdlService` 将 DDL 能力作为数据模型操作使用,创建新表时固定生成 `id bigint NOT NULL AUTO_INCREMENT PRIMARY KEY`;已有表缺少合规 `id` 时阻断执行。 - `LowcodeRuntimeConfigBuilder` 生成运行时配置时系统字段可读不可写:可进入列表/详情,不能进入新增/编辑可写字段。 - 应用发布保留兼容字段,但前端发布面板不再主推 DDL。 ## 前端变更 - 数据模型页增加“保存配置”和“保存并同步表结构”两个明确操作,以及模型页 DDL 预览。 - 模型字段表展示系统字段,只读、不可复制、不可删除、不可修改核心属性。 - 页面设计支持配置工具栏和行操作自定义按钮,按钮协议进入 pageSchema。 - 预览页用真实 Naive UI 组件渲染草稿页面元素,自定义按钮也在预览中呈现。 ## 安全与约束 - 在线 DDL 仍需后端权限校验 `ai:lowcode:deploy-ddl`。 - 已有表只允许追加缺失业务字段;不删除、不改名、不修改已有字段类型。 - 运行时写入接口必须过滤 `id`、租户和审计字段,避免只读字段被前端提交覆盖。