add:新增同一个工单同一人可以多次拼单:拼单后台撤单,不影响母单状态
This commit is contained in:
@@ -3302,33 +3302,39 @@ test('拼单母单已验收或已取消时 recompute 不回头改状态', async
|
||||
}
|
||||
})
|
||||
|
||||
test('份额超时/撤单只改份额本身,母单状态统一交给 recompute', () => {
|
||||
test('后台单人撤单不改母单状态;份额超时仍交给 recompute 收敛', async () => {
|
||||
const src = fs.readFileSync(
|
||||
new URL('../../repositories/worker-platform/work-order-settlement-repo.ts', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
const blocks = [
|
||||
[
|
||||
'export async function cancelWorkOrderShare(',
|
||||
'export async function settleOverdueWorkOrderShare(',
|
||||
],
|
||||
[
|
||||
'export async function settleOverdueWorkOrderShare(',
|
||||
'export async function cancelWorkOrderSharing(',
|
||||
],
|
||||
]
|
||||
for (const [start, end] of blocks) {
|
||||
const block = src.slice(src.indexOf(start!), src.indexOf(end!))
|
||||
assert.ok(block.length > 0, `${start} 片段必须存在`)
|
||||
assert.ok(
|
||||
block.includes('recomputeWorkOrderSharingStatusWithClient('),
|
||||
`${start} 必须用 recompute 收敛母单状态`,
|
||||
)
|
||||
assert.ok(
|
||||
!/UPDATE\s+work_orders\s+SET[\s\S]{0,80}?status\s*=/i.test(block),
|
||||
`${start} 不得自己写母单 status(只能由 recompute 推导)`,
|
||||
)
|
||||
}
|
||||
const cancelBlock = src.slice(
|
||||
src.indexOf('export async function cancelWorkOrderShare('),
|
||||
src.indexOf('export async function settleOverdueWorkOrderShare('),
|
||||
)
|
||||
assert.ok(cancelBlock.length > 0, 'cancelWorkOrderShare 片段必须存在')
|
||||
assert.ok(
|
||||
!cancelBlock.includes('recomputeWorkOrderSharingStatusWithClient('),
|
||||
'后台单人撤单不得重算母单状态(撤一份会把待验收的母单踢回大厅)',
|
||||
)
|
||||
assert.ok(
|
||||
!/UPDATE\s+work_orders\s+SET[\s\S]{0,80}?status\s*=/i.test(cancelBlock),
|
||||
'后台单人撤单不得自己写母单 status',
|
||||
)
|
||||
assert.ok(cancelBlock.includes('toStatus: workOrder.status'), '撤单事件不得记录母单状态迁移')
|
||||
|
||||
const timeoutBlock = src.slice(
|
||||
src.indexOf('export async function settleOverdueWorkOrderShare('),
|
||||
src.indexOf('export async function cancelWorkOrderSharing('),
|
||||
)
|
||||
assert.ok(timeoutBlock.length > 0, 'settleOverdueWorkOrderShare 片段必须存在')
|
||||
assert.ok(
|
||||
timeoutBlock.includes('recomputeWorkOrderSharingStatusWithClient('),
|
||||
'份额超时必须用 recompute 收敛母单状态',
|
||||
)
|
||||
assert.ok(
|
||||
!/UPDATE\s+work_orders\s+SET[\s\S]{0,80}?status\s*=/i.test(timeoutBlock),
|
||||
'份额超时不得自己写母单 status(只能由 recompute 推导)',
|
||||
)
|
||||
})
|
||||
|
||||
test('拼单每次参与都新增一条份额,并按 requestId 幂等、按参与时间固化截止时间', () => {
|
||||
|
||||
Reference in New Issue
Block a user