test-spec.md 4.7 KB

测试规格:visual-lowcode-crud-builder

created: 2026-05-19 scope: 单表低代码 CRUD、受控在线建表、Naive UI 自研搭建器

1. 自动化验证

后端编译

mvn -pl forge-admin-server -am compile -DskipTests

验收:

  • forge-plugin-generatorforge-admin-server 聚合编译通过。
  • 新增 Controller、Service、Mapper XML、DTO/VO 无编译错误。

前端构建

source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm build

验收:

  • 低代码应用列表、四步搭建器、模型设计器、页面搭建器、预览发布面板可参与生产构建。
  • /ai/lowcode-apps/ai/lowcode-builder/:id?/ai/crud-page/:configKey 路由不冲突。

2. 后端接口回归

草稿与预览

  1. 调用 POST /ai/lowcode/app/draft 创建草稿,modelSchema.tableMode=CREATE
  2. 调用 GET /ai/lowcode/app/{id} 查询草稿详情。
  3. 调用 POST /ai/lowcode/app/{id}/preview 预览草稿。

验收:

  • 草稿保存不注册业务菜单。
  • 预览返回 searchSchema/columnsSchema/editSchema/apiConfig/options
  • apiConfig.detail/delete 使用 :id 占位符。

在线 DDL

  1. 调用 POST /ai/lowcode/model/ddl/preview
  2. 使用无 ai:lowcode:deploy-ddl 权限账号发布 deployMode=ONLINE_CREATE_TABLE
  3. 使用有权限账号发布,且 confirmOnlineDdl=true

验收:

  • DDL 预览只出现 CREATE TABLE IF NOT EXISTSALTER TABLE ... ADD COLUMN
  • 无权限或未确认时发布失败。
  • 已有表只追加缺失字段,不删除、不重命名、不改类型。

发布与版本

  1. 调用 POST /ai/lowcode/app/{id}/publish
  2. 调用 GET /ai/lowcode/app/{id}/versions
  3. 调用 POST /ai/lowcode/app/{id}/rollback/{versionId}
  4. 访问 /ai/crud-page/{configKey}

验收:

  • 首次发布注册菜单,默认挂在 AI管理
  • 每次发布和回滚写入 ai_crud_config_version
  • 正式运行页只读取发布态运行时配置,未发布草稿不可访问。

动态导入导出

  1. 调用 GET /ai/crud/{configKey}/import-template 下载模板。
  2. 按模板上传 POST /ai/crud/{configKey}/import,字典字段分别填写字典标签和值。
  3. 调用 POST /ai/crud/{configKey}/export 导出当前搜索条件下的数据。

验收:

  • 模板只包含 editSchema 字段,表头为业务中文名。
  • 导入只写入表单白名单字段,必填和字典值校验失败时不落库。
  • 导出只包含 columnsSchema 可见字段,字典字段导出展示值,敏感字段保持脱敏展示。
  • sys_excel_column_config 存在同 configKey 列配置时,导出列顺序、表头、字典类型按后台配置覆盖。

树形单表

  1. 创建 appType=TREE 的低代码草稿,模型包含 parentIdname 字段。
  2. 页面模板选择 tree-crud,配置 treeConfig.parentField=parentIdlabelField=name
  3. 发布后调用 GET /ai/crud/{configKey}/tree
  4. 访问 /ai/crud-page/{configKey},选择左侧节点后查看右侧列表请求参数。

验收:

  • /tree 返回带 children 的树形数组,根节点识别 parentId=null/0/空
  • 右侧列表请求包含 parentId=<选中节点id>,且该字段不出现在搜索表单中。
  • 在选中节点下新增数据时,表单隐藏写入 parentId
  • appType=MASTER_DETAIL 保存/预览/发布时返回“主子表低代码运行时尚未启用”的明确异常。

3. 前端手动回归

从零创建单表应用

  1. 进入 /ai/lowcode-apps,点击“新建应用”。
  2. 在“数据模型”配置应用名称、配置键、表名和字段。
  3. 在“页面搭建”拖拽/启用查询区、列表区、表单区和详情区。
  4. 在“实时预览”执行预览校验。
  5. 在“发布上线”查看 DDL,勾选确认并发布。

验收:

  • 全程不要求编辑 JSON。
  • 字段新增、复制、删除、排序后页面区域字段引用同步清理。
  • 发布后“打开页面”能进入动态 CRUD 页面。

绑定已有表

  1. 数据模型选择“绑定已有表”。
  2. 配置与已有业务表一致的字段。
  3. 选择“仅发布页面”。

验收:

  • 表不存在时发布失败并提示建表方式。
  • 表存在时不执行 DDL。

旧入口收敛

  1. 进入 /ai/crud-config
  2. 点击顶部“低代码应用”进入低代码应用列表。
  3. 低代码配置卡片点击后进入可视化搭建器。
  4. 点击“高级 JSON”仍可打开旧配置抽屉。

验收:

  • 业务主路径默认指向低代码搭建器。
  • 技术人员仍可进行 JSON 配置、AI 辅助生成和代码下载。

4. 暂缓项

以下能力后续单独补测:

  • AI 生成直接输出 modelSchema/pageSchema 和局部优化协议。
  • 主子表完整运行时。