幂等说明
编写人:刘洋
系统:行政协同平台
版本:v1.2.4,预占在预发
日期:0000-00-00
状态:三类写操作已有幂等
一、目的
员工网络抖动时会再次点击提交。行政协同平台对预订、请假、用品申领约定:同一意图只保留第一笔成功单据。重复请求返回已有单号,库存和会议室占用不增加第二次。总部 420 人使用这三类提交。通知上的 eventId 去重另有发送规则,本文只写业务单据。
二、键的组成
预订的「永久」指同一员工不能对同一房间同一开始时间再插一条,第二人订同一时段会被拒绝,那是冲突而不是同一人的重复点击。请假的 Idempotency-Key 由网页在第一次点击时生成,刷新页面会换新键,因此刷新后的再次提交会变成新单,页面在提交成功前禁止刷新按钮。
三、用品预占
预发的申领在 10 分钟内重复点击只保留一笔预占。9月27日王芳对签字笔连点两次,两次都返回 SL-0000-040,可申领数量只减 1。窗口过后再点会新开一笔。最后 1 件被两人同时预占的情况靠库存条件更新,不靠这把幂等键,因为两名员工的键不同。那条并发缺陷的复测仍定在 9月28日。
四、验证与失效
- 键对应的单据如果被驳回或释放,窗口内再次提交仍返回原单号,员工要等窗口结束才能新开。
- 王芳的用例 TC-04 覆盖申领连点,9月27日通过。
- 请假连点用例每晚跑 1 次,9月20日结果是两次同一单号 LV-0000-086。
- 键只存在服务端。日志里可按单号反查,不把完整键打印到信息级日志。
陈静于 9月20日抽了 20 条创建日志,都能用单号找到员工,日志中没有第二套密钥材料。新的写接口要先补上表中的一行,再进入开发。9月20日生产重复提交的拦截次数是 17 次,其中预订 11 次、请假 6 次,全部返回了已有单号,没有多占会议室,也没有多写请假。