公司让一个人扛全栈,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 #支付 #踩坑 #后端
测试全过是最危险的信号
夜雨聆风