乐于分享
好东西不私藏

公司让一个人扛全栈,AI三天写完支付,上线前我后背发凉

公司让一个人扛全栈,AI三天写完支付,上线前我后背发凉

本周一早会,老板扔下一句话:”支付模块重构,前后端加测试,你一个人搞定,周五上线。”

以前这种活,后端归我,前端有同事,测试有同事。现在公司觉得有了AI,一个人就是一支队伍。

我没反驳。Claude Code确实帮我省了大量时间。

三天干完了。后端支付接口、订单状态机、回调处理;前端支付页面、金额展示、结果反馈;加上单元测试和集成测试。跑三遍,全绿。

我差点就点了发布。

三天交活,测试全绿

先说这三天怎么过的。

第一天写后端。Claude Code对接第三方支付网关,订单状态从”待支付”到”支付中”到”已支付”,流转逻辑写得清楚。回调接口处理了幂等、签名验证、状态更新。测试覆盖率85%。

第二天写前端。Vue支付页面,金额展示、支付方式选择、倒计时、结果页,AI连loading状态都帮我加了。

第三天联调。前后端跑通,三个核心支付场景全部绿灯。

维度 AI完成情况
后端接口 半天,幂等+签名+状态机
前端页面 一天,交互细节齐全
单元测试 覆盖率85%,全部通过
集成测试 三个场景全绿

说实话,我有点飘了。以前这种模块至少两个人一周,我一个人三天搞定。

上线前随手翻了翻代码

周四晚上本来打算收工。但涉及钱的事,不踏实。

打开后端回调逻辑看了看,写得确实漂亮,我跟你讲,比我写得利索。顺手翻了翻测试用例,一下子愣住了。

AI写的回调测试,测了这些场景:

  • 支付成功,订单状态更新为”已支付”
  • 重复回调,幂等处理,不重复扣款
  • 签名校验失败,拒绝处理

没测的场景:

  • 支付成功但回调延迟了5秒,这5秒里用户取消了订单怎么办
  • 前端轮询查到”待支付”,用户又点了一次支付,产生两笔扣款怎么办
  • 网络超时,第三方没收到回调,订单一直是”支付中”,用户以为没付成功又付了一次

测试覆盖率85%,覆盖的全是正常流程和AI能想到的异常。真正出事的,AI想不到。

AI测了的 AI没测的
支付成功,状态更新 回调延迟5秒,期间用户取消
重复回调,幂等拦截 前端轮询查到旧状态,重复发起
签名校验失败,拒绝 网络超时,回调丢失

我第一反应是冷汗下来了。这些不是bug,是业务盲区。AI不知道”用户可能在回调没到的时候取消订单”,因为它没做过支付业务。

顺着往下查,越查越心慌

顺着这个思路往下查,又发现两个问题。

前端金额和后端金额的精度断层。

说真的,两边逻辑都对,偏偏对不上。后端用BigDecimal存金额,单位是分(整数)。前端拿到分以后转成元展示。AI两边都处理了。但折扣计算出了岔子。后端先乘后除再四舍五入,前端直接乘折扣系数。大部分金额结果一样,碰到特定金额就差一分钱。

比如叠加两种优惠后,前端展示199.97元,后端算出来199.98元。

做支付的都知道,金额对不上是红线。一分钱没人投诉,但账不平就是事故。

订单状态机的并发漏洞。

AI写的状态机很标准:待支付→支付中→已支付→待发货。每个状态单向流转,测试都写了。

但测试是串行跑的。没测”支付回调”和”用户取消”同时到达的情况。

我手动写了个并发测试:两个线程,一个处理支付成功回调,一个处理用户取消。跑100次,有3次订单变成了”已取消”,但用户的钱已经扣了。

3%的概率。每天1000笔订单,就是30个人付了钱但订单被取消。

一分钱和3%的概率,测试全绿的时候一个都查不出来。

当晚改到凌晨两点,加了三道锁

当晚改到凌晨两点。三个地方:

1. 折扣计算:前端只展示,金额计算全放后端。
   前端拿到什么就展示什么,不再自行计算。

2. 状态机并发:加悲观锁。
   订单状态变更时 SELECT FOR UPDATE,
   确保回调处理和取消操作互斥。

3. 支付防重:前端发起支付前先查状态。
   已是"支付中"则不允许再次发起。
   加支付超时自动关闭机制。

改完跑了两遍并发测试,100次全部正确。凌晨三点多才睡。

以后AI全栈交付,我查这三个维度

这次踩坑让我想明白一件事:AI全栈最大的风险是你对”测试全过”的信任。

AI写的每一层代码单独看都没问题。问题出在层与层的接缝处,得懂整个业务才看得出来。

以后AI全栈交付,我手动查这三个维度:

检查维度 查什么 AI能自己发现吗
跨层一致性 前后端数据类型、精度、状态是否对齐 不能,AI只看当前文件
业务盲区 正常流程之外的异常场景 不能,AI不知道业务上下文
并发时序 多个操作同时到达会怎样 不能,AI的测试都是串行的

AI能帮你写完所有代码,但替不了你站在用户角度想”什么情况下会出事”。

FAQ

Q: AI全栈真的可行吗?

小项目可以。CRUD类、页面不复杂、并发不高的模块,AI三天搞定没问题。涉及支付、状态流转、并发的,AI写完代码后必须自己过一遍。

Q: 怎么判断哪些模块可以交给AI全栈?

一个简单标准:出了bug会不会有人找你赔钱。不会的,放心让AI写。会的,AI写完你自己审。

Q: AI写的测试覆盖率很高,为什么还不放心?

覆盖率告诉你”哪些代码跑过了”,不告诉你”哪些场景没覆盖到”。AI的测试根据代码逻辑生成,不是根据业务需求生成。两者之间有一个巨大的盲区。

Q: 现在还让AI全栈写代码吗?

写。但加了一个步骤:AI写完所有层之后,花一个小时画一张跨层流程图,手动走一遍所有异常路径。这一小时救过我好几次。

觉得有用就点个在看。评论区聊聊你们公司有没有让一个人扛全栈的经历。

那天凌晨三点多关上电脑,我想着:AI让我变成了全栈工程师,但全栈最难的不是多写几层代码,是一个人扛住所有层的责任。

#AI编程 #AI全栈 #ClaudeCode #支付 #踩坑 #后端

测试全过是最危险的信号