test(firstleg): use task-scoped loading evidence
This commit is contained in:
@@ -54,14 +54,18 @@ export async function run(context) {
|
||||
return
|
||||
}
|
||||
|
||||
const path = `/api/platform/v1/inbounds/${inboundId}/loading/evidence?tenantId=${encodeURIComponent(tenantId)}`
|
||||
const path = `/api/platform/v1/first-leg/pda-loading/tasks/${encodeURIComponent(taskId)}/evidence?warehouseId=${encodeURIComponent(warehouseId)}`
|
||||
const response = await context.request('GET', path)
|
||||
const data = context.apiSuccess(MODULE, '复核本轮装柜证据聚合', response, `inboundId=${fixture.inboundId}`, OPTIONS)
|
||||
const data = context.apiSuccess(MODULE, '复核本轮 task 柜级装柜证据聚合', response,
|
||||
`taskId=${taskId}, containerBookingId=${containerBookingId}`, OPTIONS)
|
||||
const evidences = Array.isArray(data?.evidences) ? data.evidences : []
|
||||
const required = ['PHOTO_STEP_1', 'PHOTO_STEP_2', 'PHOTO_STEP_3', 'PHOTO_STEP_4', 'SEAL']
|
||||
const active = evidences.filter((item) => item.status !== 'VOID')
|
||||
const voided = evidences.find((item) => id(item.id) === id(fixture.voidedEvidenceId))
|
||||
const missingTypeVoided = evidences.find((item) => id(item.id) === id(fixture.missingTypeVoidedEvidenceId))
|
||||
const voided = evidences.find((item) => id(item.evidenceId) === id(fixture.voidedEvidenceId))
|
||||
const missingTypeVoided = evidences.find((item) => id(item.evidenceId) === id(fixture.missingTypeVoidedEvidenceId))
|
||||
context.assert(MODULE, 'task 证据聚合归属稳定 PDA 任务和物理柜次', response,
|
||||
id(data?.taskId) === taskId && id(data?.containerBookingId) === containerBookingId,
|
||||
`taskId=${id(data?.taskId) || 'missing'}, containerBookingId=${id(data?.containerBookingId) || 'missing'}`, OPTIONS)
|
||||
context.assert(MODULE, '五类有效证据齐全且同类型多图追加不覆盖历史', response,
|
||||
required.every((type) => active.some((item) => item.evidenceType === type))
|
||||
&& evidences.filter((item) => item.evidenceType === 'PHOTO_STEP_1').length >= 2
|
||||
@@ -69,15 +73,13 @@ export async function run(context) {
|
||||
&& active.every((item) => String(item.fileName || '').includes(context.marker)
|
||||
&& String(item.remark || '').includes(context.marker)),
|
||||
`active=${active.length}, types=${[...new Set(active.map((item) => item.evidenceType))].join(',')}`, OPTIONS)
|
||||
context.assert(MODULE, '作废证据保留原因、操作者和时间且不计入有效门禁', response,
|
||||
Boolean(voided) && voided.status === 'VOID' && voided.voidReason === `${context.marker}-wrong-photo`
|
||||
&& Boolean(voided.voidedBy) && Boolean(voided.voidedAt)
|
||||
&& !active.some((item) => id(item.id) === id(fixture.voidedEvidenceId)),
|
||||
context.assert(MODULE, '作废证据保留稳定记录与更新时间且不计入有效门禁', response,
|
||||
Boolean(voided) && voided.status === 'VOID' && Boolean(voided.updatedAt)
|
||||
&& !active.some((item) => id(item.evidenceId) === id(fixture.voidedEvidenceId)),
|
||||
`voidedEvidenceId=${id(fixture.voidedEvidenceId) || 'missing'}, status=${voided?.status || 'missing'}`, OPTIONS)
|
||||
context.assert(MODULE, '缺类作废审计保留且补传证据恢复有效门禁', response,
|
||||
Boolean(missingTypeVoided) && missingTypeVoided.status === 'VOID'
|
||||
&& missingTypeVoided.voidReason === `${context.marker}-temporary-missing-type`
|
||||
&& Boolean(missingTypeVoided.voidedBy) && Boolean(missingTypeVoided.voidedAt)
|
||||
&& Boolean(missingTypeVoided.updatedAt)
|
||||
&& active.some((item) => item.evidenceType === 'PHOTO_STEP_4'
|
||||
&& id(item.fileId) === id(fixture.replacementEvidenceFileId)),
|
||||
`voidedEvidenceId=${id(fixture.missingTypeVoidedEvidenceId) || 'missing'}, replacementFileId=${id(fixture.replacementEvidenceFileId) || 'missing'}`, OPTIONS)
|
||||
|
||||
Reference in New Issue
Block a user