fix(order): 抢单收紧为仅「待接单」可抢,抢单池同步过滤
- claimOrder 状态闸门改为严格只允许 待接单(含 CAS 条件 status='待接单'),杜绝抢已在履约/已服务/已核销的订单 - getOrdersPool 仅返回未认领的 待接单 订单 - 种子数据新增一笔待接单订单用于演示抢单 - 更新/新增回归护栏 claim-status-gate.spec.ts(78 套件/608 用例全绿)
这个提交包含在:
@@ -46,9 +46,13 @@ describe('订单与活动资金一致性护栏 (报名超卖 / 抢单 CAS / 评
|
||||
expect(code).toContain('该订单已被其他大神抢先接单');
|
||||
});
|
||||
|
||||
it('claimOrder 必须拦截不可接单状态', () => {
|
||||
it('claimOrder 必须仅允许待接单抢单', () => {
|
||||
const code = fs.readFileSync(serverRepoPath, 'utf-8');
|
||||
expect(code).toContain("const blocked = ['待付款', '待支付', '已完成', '已取消', '已关闭', '已退款', '已全额退款', '争议仲裁中']");
|
||||
const start = code.indexOf('async claimOrder(');
|
||||
expect(start).toBeGreaterThan(-1);
|
||||
const block = code.slice(start, start + 2400);
|
||||
expect(block).toContain("String(cur.status) !== '待接单'");
|
||||
expect(block).toContain("AND status = '待接单'");
|
||||
});
|
||||
|
||||
it('数据库层必须为 orders 增加 claimed_by / claimed_at 认领标记列', () => {
|
||||
|
||||
在新工单中引用
屏蔽一个用户