Files
order_site/apps/backend/src/domain/work-order-acceptance-evidence.test.ts
T
yml2213 979a1bfa41 fix: 免审验收容错与成本中心归一回填超时修复
- worker:等级升级计数移出验收事务,瞬时错误重试一次,最终失败转人工待办且不再返回 500
- worker:待验收阶段修改验收资料时保留 reviewMode/evidenceStatus/evidenceDueAt
- cost-center:迁移 107 新增人工待归一覆盖部分索引(生产实测候选聚合 19.6s → 391ms)
- cost-center:归一人工商品/按工单回填商品/模板预览前端超时放宽到 300s
- cost-center:批处理接口语句超时放宽到 60s(SET LOCAL,在线接口仍为 15s)
2026-10-29 14:33:35 +08:00

83 lines
2.6 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
hasAcceptanceEvidence,
resolveVipAutoAcceptEvidencePatch,
} from './work-order-acceptance-evidence.js'
const VIDEO = { url: 'https://example.com/worker-acceptance-video/a.mp4', durationSeconds: 12 }
test('验收证据:只有图片算有证据', () => {
assert.equal(hasAcceptanceEvidence({ imageUrls: ['https://example.com/a.jpg'] }), true)
})
test('验收证据:只有视频也算有证据(视频视同图片)', () => {
assert.equal(hasAcceptanceEvidence({ imageUrls: [], video: VIDEO }), true)
})
test('验收证据:图片与视频都有算有证据', () => {
assert.equal(
hasAcceptanceEvidence({ imageUrls: ['https://example.com/a.jpg'], video: VIDEO }),
true,
)
})
test('验收证据:图片视频都没有则没有证据', () => {
assert.equal(hasAcceptanceEvidence({ imageUrls: [], video: null }), false)
assert.equal(hasAcceptanceEvidence({}), false)
assert.equal(hasAcceptanceEvidence({ imageUrls: undefined, video: undefined }), false)
})
test('验收证据:兼容非数组的 imageUrls(脏数据按无图片处理)', () => {
assert.equal(hasAcceptanceEvidence({ imageUrls: null, video: VIDEO }), true)
assert.equal(hasAcceptanceEvidence({ imageUrls: null, video: null }), false)
})
test('VIP 免审:待验收阶段改写验收资料后仍保留免审标记并清空补图期限', () => {
const patch = resolveVipAutoAcceptEvidencePatch(
{
reviewMode: 'vip_auto',
evidenceStatus: 'pending',
evidenceDueAt: '2026-10-30T06:00:00.000Z',
},
hasAcceptanceEvidence({ imageUrls: ['https://example.com/a.jpg'] }),
)
assert.deepEqual(patch, {
reviewMode: 'vip_auto',
evidenceStatus: 'complete',
evidenceDueAt: null,
})
})
test('VIP 免审:仍无证据时保留原 24 小时补图期限', () => {
const patch = resolveVipAutoAcceptEvidencePatch(
{
reviewMode: 'vip_auto',
evidenceStatus: 'pending',
evidenceDueAt: '2026-10-30T06:00:00.000Z',
},
hasAcceptanceEvidence({}),
)
assert.deepEqual(patch, {
reviewMode: 'vip_auto',
evidenceStatus: 'pending',
evidenceDueAt: '2026-10-30T06:00:00.000Z',
})
})
test('VIP 免审:改写资料时补图期限缺失也按无期限处理', () => {
const patch = resolveVipAutoAcceptEvidencePatch({ reviewMode: 'vip_auto' }, false)
assert.deepEqual(patch, {
reviewMode: 'vip_auto',
evidenceStatus: 'pending',
evidenceDueAt: null,
})
})
test('非 VIP 免审订单不写入免审标记', () => {
assert.deepEqual(resolveVipAutoAcceptEvidencePatch({ evidenceStatus: 'complete' }, true), {})
})