优化
This commit is contained in:
@@ -22,6 +22,22 @@ function closeNumber(actual, expected, tolerance = 0.0005) {
|
||||
return Number.isFinite(Number(actual)) && Math.abs(Number(actual) - Number(expected)) < tolerance
|
||||
}
|
||||
|
||||
export function validRecognition(result) {
|
||||
if (!result || !OCR_STATUSES.has(result.recognitionStatus)) return false
|
||||
if (result.confidence != null && (!Number.isFinite(Number(result.confidence)) || Number(result.confidence) < 0 || Number(result.confidence) > 1)) return false
|
||||
if (result.recognitionStatus === 'FAILED') return result.weightValue == null
|
||||
return result.weightValue != null && Number(result.weightValue) > 0
|
||||
&& normalizedGrossKg(result.weightValue, result.weightUnit) != null
|
||||
}
|
||||
|
||||
export function sameOptionalWeight(actual, expected) {
|
||||
return actual == null || expected == null ? actual == null && expected == null : closeNumber(actual, expected)
|
||||
}
|
||||
|
||||
export function confirmedVersion(version, hasAdjustment) {
|
||||
return Number(version) + (hasAdjustment ? 2 : 1)
|
||||
}
|
||||
|
||||
function palletSnapshotComplete(pallet) {
|
||||
return Boolean(id(pallet?.palletId))
|
||||
&& typeof pallet?.palletCode === 'string' && pallet.palletCode.length > 0
|
||||
@@ -254,10 +270,7 @@ async function createUploadedResult(context, target, pallet, image, overrides =
|
||||
Boolean(fileId) && typeof upload?.fileId === 'string',
|
||||
`fileIdType=${typeof upload?.fileId}, status=${upload?.recognitionStatus ?? 'missing'}`, SCENARIO_OPTIONS)
|
||||
context.assert(MODULE, 'OCR 上传响应字段完整且置信度受限', uploadResponse,
|
||||
upload && OCR_STATUSES.has(upload.recognitionStatus)
|
||||
&& Object.hasOwn(upload, 'weightValue') && Object.hasOwn(upload, 'weightUnit')
|
||||
&& Object.hasOwn(upload, 'confidence')
|
||||
&& (upload.confidence == null || (Number(upload.confidence) >= 0 && Number(upload.confidence) <= 1)),
|
||||
validRecognition(upload),
|
||||
`status=${upload?.recognitionStatus ?? 'missing'}, hasWeight=${upload?.weightValue != null}, confidence=${upload?.confidence ?? 'null'}`,
|
||||
SCENARIO_OPTIONS)
|
||||
if (!fileId) throw new Error('称重图片上传未返回 fileId,无法登记和清理测试资源')
|
||||
@@ -269,8 +282,7 @@ async function createUploadedResult(context, target, pallet, image, overrides =
|
||||
const retry = context.apiSuccess(MODULE, '重试当前称重图片 OCR', retryResponse,
|
||||
`fileId=${fileId}`, SCENARIO_OPTIONS)
|
||||
context.assert(MODULE, 'OCR 重试保持文件身份并返回识别契约', retryResponse,
|
||||
id(retry?.fileId) === fileId && OCR_STATUSES.has(retry?.recognitionStatus)
|
||||
&& Object.hasOwn(retry || {}, 'weightValue') && Object.hasOwn(retry || {}, 'confidence'),
|
||||
id(retry?.fileId) === fileId && validRecognition(retry),
|
||||
`sameFile=${id(retry?.fileId) === fileId}, status=${retry?.recognitionStatus ?? 'missing'}`,
|
||||
SCENARIO_OPTIONS)
|
||||
if (retry) recognized = retry
|
||||
@@ -474,8 +486,8 @@ export async function run(context) {
|
||||
const registeredRow = registered.workspace?.weightResults?.find((row) => id(row.id) === original.resultId)
|
||||
context.assert(MODULE, '工作区保留本轮 OCR 原值且未覆盖历史结果', registered.response,
|
||||
registeredRow && !baselineIds.has(original.resultId)
|
||||
&& closeNumber(registeredRow.ocrWeightValue, original.result.ocrWeightValue)
|
||||
&& registeredRow.ocrWeightUnit === original.result.ocrWeightUnit,
|
||||
&& sameOptionalWeight(registeredRow.ocrWeightValue, original.result.ocrWeightValue)
|
||||
&& (registeredRow.ocrWeightUnit ?? null) === (original.result.ocrWeightUnit ?? null),
|
||||
`resultFound=${Boolean(registeredRow)}, baselineCount=${baselineIds.size}, currentCount=${registered.workspace?.weightResults?.length ?? 'n/a'}`,
|
||||
SCENARIO_OPTIONS)
|
||||
|
||||
@@ -506,7 +518,7 @@ export async function run(context) {
|
||||
const confirmedTare = Number(confirmed?.palletTareWeightKg)
|
||||
const confirmedNet = Number(confirmed?.netWeightKg)
|
||||
context.assert(MODULE, '确认结果返回托盘快照、毛重和去皮净重', confirmResponse,
|
||||
confirmed?.recognitionStatus === 'CONFIRMED' && Number(confirmed?.version) === original.version + 1
|
||||
confirmed?.recognitionStatus === 'CONFIRMED' && Number(confirmed?.version) === confirmedVersion(original.version, !canConfirmOriginal)
|
||||
&& id(confirmed?.palletId) === id(pallet.palletId)
|
||||
&& confirmed?.palletCode === pallet.palletCode && confirmed?.palletType === pallet.palletType
|
||||
&& closeNumber(confirmed?.palletCapacityCbm, pallet.capacityCbm)
|
||||
|
||||
Reference in New Issue
Block a user