diff --git a/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.test.tsx b/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.test.tsx index 0c3010b7..4f25402b 100644 --- a/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.test.tsx +++ b/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.test.tsx @@ -1371,6 +1371,7 @@ describe('BomCostingWorkbenchClient', () => { costedSkuCount: 1, pendingSkuCount: 1, failedSkuCount: 1, + qualityWarningCount: 1, succeededSkuIds: ['sku-recalculate', 'sku-pending'], costedSkuIds: ['sku-recalculate'], pendingSkuIds: ['sku-pending'], @@ -1579,10 +1580,10 @@ describe('BomCostingWorkbenchClient', () => { '1/3 个 SKU 的预估已完成', ) expect(dynamicCostNotice).toHaveTextContent( - '其余 SKU 可按现有事实重新核算', + '失败规格 · 当前资料不足,暂无法预估', ) expect(dynamicCostNotice).toHaveTextContent( - '失败规格 · 当前资料不足,可补充结构或尺寸后重新核算', + '结构拆解差异已标记待复核,当前整件预估已保留', ) expect(screen.getByRole('alert', { name: '本轮批次部分完成,部分 SKU 暂无法预估', @@ -1592,14 +1593,14 @@ describe('BomCostingWorkbenchClient', () => { fireEvent.click(failedSkuButton) expect(screen.getAllByText('资料不足,暂无法预估').length).toBeGreaterThan(0) expect(screen.getByText( - '本轮未形成可用整件预估。已保留结构事实,可补充结构或尺寸后重新核算。', + '该规格暂未形成预估;当前结构与资料已保留。', )).toBeInTheDocument() expect(screen.queryByText('SKU 结构已就绪')).not.toBeInTheDocument() expect(screen.queryByText('约 ¥999.00')).not.toBeInTheDocument() fireEvent.click(screen.getByRole('button', { name: /待补价格规格/ })) expect(screen.getAllByText('待补成本').length).toBeGreaterThan(0) expect(screen.getByText( - '本轮该 SKU 的结构事实已保存;待补信息完善后可继续形成完整预估。', + '该规格仍在整理预估依据;当前结构与资料已保留。', )).toBeInTheDocument() expect(screen.queryByText('SKU 结构已就绪')).not.toBeInTheDocument() expect(screen.queryByText('约 ¥888.00')).not.toBeInTheDocument() diff --git a/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.tsx b/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.tsx index c01e418f..f8a6a5c8 100644 --- a/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.tsx +++ b/furniture-3d-system/src/app/bom-costing/BomCostingWorkbenchClient.tsx @@ -440,6 +440,7 @@ interface DynamicCostingCompletionNotice { pendingSkuCount: number failedSkuCount: number reviewSkuCount: number + qualityWarningCount: number succeededSkuIds: string[] costedSkuIds: string[] pendingSkuIds: string[] @@ -549,6 +550,7 @@ function parseDynamicCostingCompletionNotice( pendingSkuCount, failedSkuCount, reviewSkuCount: readPayloadNumber(payload.reviewSkuCount) ?? 0, + qualityWarningCount: readPayloadNumber(payload.qualityWarningCount) ?? 0, succeededSkuIds: readPayloadTextArray(payload.succeededSkuIds), costedSkuIds: readPayloadTextArray(payload.costedSkuIds), pendingSkuIds: readPayloadTextArray(payload.pendingSkuIds), @@ -1716,20 +1718,27 @@ function ResultCanvas({ {dynamicCompletionNotice && ( dynamicCompletionNotice.pendingSkuCount > 0 || dynamicCompletionNotice.failedSkuCount > 0 || - dynamicCompletionNotice.reviewSkuCount > 0 + dynamicCompletionNotice.reviewSkuCount > 0 || + dynamicCompletionNotice.qualityWarningCount > 0 ) ? (
0 ? 'alert' : 'status'} aria-label={dynamicCompletionNotice.failedSkuCount > 0 ? '本轮批次部分完成,部分 SKU 暂无法预估' - : '本轮批次部分完成'} + : dynamicCompletionNotice.qualityWarningCount > 0 + ? '本轮预估已完成,结构拆解待复核' + : '本轮批次部分完成'} data-testid="bom-dynamic-cost-partial-notice" >