Release/test 合并上生产 #2

Merged
admin merged 736 commits from release/test into main 2026-09-17 11:50:56 +08:00
4 changed files with 42 additions and 6 deletions
Showing only changes of commit 22c755b02a - Show all commits
@@ -5,6 +5,7 @@ import { http } from '@/shared/api/http'
import {
adjustSmartLoadingItem, assignPendingReviewSmartLoadingOrder, assignSmartLoadingGroup, assignSmartLoadingItem, assignSmartLoadingPallet, getContainer,
listContainers, listSmartLoadingCandidates, listSmartLoadingWorkbenchContainers, removeAllUnpickedSmartLoadingItems, removeSmartLoadingGroup, removeSmartLoadingItem, removeSmartLoadingPallet,
recommendSmartLoading,
getContainerClearance, downloadContainerClearance, uploadContainerClearance, completeContainerClearance,
getContainerOverview, updateContainerPickupCode, markContainerException, cancelContainerException, uploadContainerDocument, downloadContainerDocument, downloadContainerPdaPhoto,
getCustomerContainerTransitSummary,
@@ -131,6 +132,25 @@ describe('platform container loading API', () => {
)
})
it('limits smart recommendation to the current customer and inbound filters', async () => {
vi.mocked(http.post).mockResolvedValue({ code: '200', data: plan })
await recommendSmartLoading('10', 5, {
customerId: '9007199254740998',
inboundCode: ' EXXHWK2609140162 ',
})
expect(http.post).toHaveBeenCalledWith(
'/platform/v1/first-leg/smart-loading/plans/10/recommend',
expect.objectContaining({
expectedVersion: 5,
customerId: '9007199254740998',
inboundCode: 'EXXHWK2609140162',
operationId: expect.stringContaining('recommend-'),
}),
)
})
it('removes a sealed pallet through the whole-pallet command', async () => {
vi.mocked(http.delete).mockResolvedValue({ code: '200', data: plan })
@@ -380,8 +380,20 @@ export async function assignSmartLoadingGroup(planId: string, inboundId: string,
)
return plan(unwrapApiResponse(response))
}
export async function recommendSmartLoading(planId: string, expectedVersion: number) {
const response = await http.post<ApiEnvelope<SmartLoadingPlan>, ApiEnvelope<SmartLoadingPlan>>(`${smartLoadingPath}/plans/${encodeURIComponent(planId)}/recommend`, { expectedVersion, operationId: operationId('recommend') })
export async function recommendSmartLoading(
planId: string,
expectedVersion: number,
scope: { customerId?: string; inboundCode?: string } = {},
) {
const response = await http.post<ApiEnvelope<SmartLoadingPlan>, ApiEnvelope<SmartLoadingPlan>>(
`${smartLoadingPath}/plans/${encodeURIComponent(planId)}/recommend`,
{
expectedVersion,
operationId: operationId('recommend'),
...(scope.customerId ? { customerId: scope.customerId } : {}),
...(scope.inboundCode?.trim() ? { inboundCode: scope.inboundCode.trim() } : {}),
},
)
return plan(unwrapApiResponse(response))
}
@@ -760,8 +760,8 @@ describe('GlobalSmartLoadingView', () => {
await button!.trigger('click')
await flushPromises()
expect(recommendSmartLoading).toHaveBeenCalledWith(plan.id, 2)
expect(recommendSmartLoading).toHaveBeenCalledWith(plan.id, 3)
expect(recommendSmartLoading).toHaveBeenCalledWith(plan.id, 2, { customerId: '', inboundCode: '' })
expect(recommendSmartLoading).toHaveBeenCalledWith(plan.id, 3, { customerId: '', inboundCode: '' })
expect(getSmartLoadingPlanByBooking).toHaveBeenCalledTimes(2)
expect(warningMessage).not.toHaveBeenCalled()
expect(wrapper.text()).not.toContain('装柜操作失败')
@@ -549,15 +549,19 @@ function candidateBlocked(candidate: SmartLoadingCandidateRow) {
}
async function recommend() {
if (!plan.value) return
const scope = {
customerId: String(appliedQuery.value.customerId || ''),
inboundCode: String(appliedQuery.value.inboundCode || '').trim(),
}
await mutate(async () => {
try {
acceptPlan(await recommendSmartLoading(plan.value!.id, plan.value!.version))
acceptPlan(await recommendSmartLoading(plan.value!.id, plan.value!.version, scope))
} catch (error) {
const details = getApiErrorDetails(error, '智能推荐失败')
if (details.code !== 'A0409' || !/(版本|并发|已被修改|已变化)/.test(details.message)) throw error
await loadSelectedPlan()
if (!plan.value) throw error
acceptPlan(await recommendSmartLoading(plan.value.id, plan.value.version))
acceptPlan(await recommendSmartLoading(plan.value.id, plan.value.version, scope))
}
await loadCandidateData()
ElMessage.success('智能推荐已生成')