低代码平台实测踩坑记录:从审核排序到历史数据,问题逐条清零
低代码平台前后端都跑起来了,我按界面一条条实测,一批问题就露出来了:提交审核明明改了数据,审核页按 updateTime 排序却是乱的;自己提交的界面想废弃,提示无权限;连续新增第二条,上一次填的还在框里没清;历史数据点进去,看到的是版本不是数据。
这些都不是编译报错,是在界面上点出来的,AI 自己想想不到这么多。这篇就记这段实测:排序、停用闭环、创建人筛选、历史数据、还有一个人自审自发的设计问题,怎么发现又怎么改的。
一、提交审核没更新 updateTime
1.1 问题
明明提交审核了,在低代码审核时,以 updateTime 排序竟然不对,下图已经修改。

一看代码原来 MetaAppServiceImpl 中的函数 applyStatus 里面到处都是 Example 进行查询,还调用 mapper 进行更新。
java
Example example = new Example(MetaApp.class);
example.createCriteria().andEqualTo("id", id).andEqualTo("version", expectVersion);
int n = metaAppMapper.updateByExampleSelective(rec, example);
这时肯定就没有更新 updatetime,而 updateTime 更新是放在 save 函数中的,save 调用 insert 和 update。所以这样的代码肯定是不对的,前面虽然规定了,mapper 只能自己的 service 调用,但没想到会这样,里面全是随便调用 mapper 的地方。
1.2 解决
ini
MetaAppServiceImpl.applyStatus
applyStatus
Example example = new Example(MetaApp.class);
example.createCriteria().andEqualTo("id", id).andEqualTo("version", expectVersion);
int n = metaAppMapper.updateByExampleSelective(rec, example);
这种代码是不合格的,不应该将这种逻辑写在函数里, 尽可能提取出函数,还有调用里面的update,add或save,
不然就会出现更新了没有updatetime


bash
这个要全改, 刚才代码先添加一个函数 byIdAndVersion这种,保存一定要调用save(新增不用id)。这次是重构。记住原则

这个虽然看似是小问题,但是,其实是非常大的问题,还是要规定,无论是自己还是别的 service,只能调用同层的 service,具体的操作应该封装在 service 里,一般这种情况都是 xxxService 调用 xxxMapper 的情况。以后要规定,类似于防腐层,调用下一层的 mapper 时,必须封装在里面,只可以规定的函数才可以调用,或者函数中不可以多次调用 mapper,如果有多次就必须提取出函数。如现在的代码:
java
/** 生命周期状态更新:先按 (id,expectVersion) 载入并做归属/登录/版本断言,再 mutate cur 并走 saveLifecycle。 */
private MetaApp applyStatus(String id, int expectVersion, List<String> allowedFrom, String to,
String operator, boolean setSubmitter, boolean setReviewer, String extroValue) {
MetaApp cur = byIdAndVersion(id, expectVersion, operator);
if (!allowedFrom.contains(cur.getStatus())) {
throw new XException(400, "当前状态不允许该操作:" + cur.getStatus());
}
cur.setStatus(to);
cur.setExtro(extroValue);
if (setSubmitter) {
cur.setSubmittedBy(operator);
}
if (setReviewer) {
cur.setReviewedBy(operator);
cur.setReviewedAt(LocalDateTime.now());
}
return saveLifecycle(cur);
}
/** 按 id + expectVersion 载入并做三重断言:登录(401)、归属/存在(404/403)、版本匹配(409)。 */
private MetaApp byIdAndVersion(String id, int expectVersion, String operator) {
MetaApp cur = queryById(id);
guard(cur, operator);
if (cur.getVersion() == null || cur.getVersion().intValue() != expectVersion) {
throw new XException(409, "版本冲突:界面已被修改,请刷新后重试");
}
return cur;
}

这样才是重构,尽可能添加上这一条。
二、停用的逻辑闭环
2.1 停用的逻辑问题
废弃,只能自己废弃,但自己废弃只能是停用待审,可是进入低代码审核却只有提交审核的通过,而没有停用待审的问题。还有个废弃,不知道什么意思。
记事本 notepad 黄山 提交的,huangweihua想废弃,报错 无审核权限或不可处理自己提交的界面? 查一下,难道只有自己可能废弃?如果没有权限废弃,那就不能显示 ? 我自己停用,审核人进入显示的是 停用待审,有哪个?通过停用? 你也没有测试这个闭环吗。修改测试脚本,操。按我这个逻辑查一下,并添加进测试脚本



2.2 测试脚本有问题
一看这个错误,就知道测试脚本肯定是没有覆盖到这个问题。因为 AI 根本就没有想到这个问题。



2.3 修改后的测试

先切换人员登录,进行审核

新建测试停用的数据,供后面测试历史数据
2.4 申请停用

切换审核,通过停用

通过停用后

2.5 历史数据
重新刷新后,就可以看到测试停用的,再查看数据


这个界面是错误的,详见第五章 历史数据问题。
三、新增数据没清空原数据
3.1 新增数据没有清空原来数据

低代码通过后,新增数据没有问题,
但是,新增多条时,第二次新西兰没有清空原来数据,显示的是上一次填写的数据


3.2 测试

可以了。
四、我的设计问题
4.1 测试停用不应该显示在这
我的设计要根据创建人来筛选,明明是 huangshan 创建的,为什么 huangweihua 还显示

这条数据显示在 huangweihua 中是不对的。
4.2 修改
我的设计要根据创建人来筛选,测试停用 明明是huangshan创建的,为什么huangweihua还显示
测试停用 这条数据显示在huangweihua中是不对的。



注意,不是随便加,只是 这个函数才加上的
果然有错,唉,AI 什么时候能听懂人话。


不可通过 通用 addExample 接受任意传入的 createdBy,来,直接在查询的时候添加createBy,不可乱改


4.3 多了一个问题,创建人用中文

bash
我的设计 多了一个问题,创建人用中文,前面创建人问题我已冗余了中文名,全部检测一下,使用id的,要使用中文名


4.4 测试

五、历史数据问题
5.1 历史数据显示的是历史版本

历史数据怎么又改回去了,历史数据,明白什么意思吗?我要看的是数据,数据。
这个界面有什么用,根据无法查看数据。我记得以前设计的时候是两个选择,一个界面,一个版本,下面显示的是分页数据。怎么搞错了。
还真是不能认真测试啊。
历史数据怎么又改回去了,历史数据,明白什么意思吗?我要看的是数据,数据。
这个界面有什么用,根据无法查看数据。我记得以前设计的时候是两个选择,一个界面,一个版本,下面显示的是分页数据。怎么搞错了。
还真是不能认真测试啊。我要的是查看历史的数据,不是看版本





历史数据,就不要数据权限了,只要能查看历史数据菜单,里面所有数据都可以查看的。因为这些数据是废弃的,其他人也是看不到的。


5.2 测试
加载界面列表失败:您的权限不足,无法继续操作!

为什么,huangweihua 刷新历史数据显示没有权限
加载界面列表失败:您的权限不足,无法继续操作!



删除此历史版本
历史版本是不可删除的,去掉


好的,现在好了。
先解决这些问题,看来完全靠 AI 还是有些问题的。
六、为什么我第一次创建版本是 4
6.1 难道全局统一版本
为什么我第一次创建版本,并停用,结果版本是4,难道全局统一版本?查一下原因,并说明



6.2 这样啊
这样啊,那就不改,如果要修改,可能还要添加表计数。
这样啊,那就不改,如果要修改,可能还要添加表计数。

七、一个人自审自发的设计问题
7.1 还有个设计问题,不是代码问题
还有个设计问题,不是代码问题, 如,huangweihua 审核低代码,也只有一个人审核(就是自己),如果 huangwehua 发布低代码会怎样?自己发?自已审?这个问题有没有好的解决办法
还有个设计问题,不是代码问题,
如,huangweihua审核低代码,也只有一个人审核(就是自己),如果huangwehua发布低代码会怎样?自己发?自已审?这个问题有没有好的解决办法

css
A 不要加在jg-admin上,加上wanglong上吧

7.2 多人审核

这个互审,也要加在测试脚本中。huanweihua增加低代码,wanglong审核,这个增加一节测试。自己看着加





八、小结
这一轮实测下来,问题基本都对着界面一条条清了,简单记几笔:
- updateTime 排序不对,根子是 service 里直接拿 Example 调 mapper 更新,绕过了 save,凡是这类调用都得收进封装函数里,保存统一走 save,这个后面要当硬规矩守着。
- 停用、废弃的闭环,测试脚本压根没覆盖,AI 自己想不出来,只能人在界面上点一遍才暴露,改完还得回补进脚本。
- 新增多条没清空、创建人筛选用中文、历史数据显示成了版本------这些都是界面细节和权限设计,光读代码看不出,非得真跑不可。
- 一个人自审自发是设计上的死角,得拆成两个人互审:huangweihua 提、wanglong 审,这条也补进测试脚本。
- 第一次创建版本号就排到 4,查清楚了是全局统一版本的设计如此,先不改,要改得加表计数。
- 整体下来,AI 能把功能堆出来,但闭环、边界、界面体验这些还得靠人实测一条条校,测试脚本要跟着实测一起长。