优化
This commit is contained in:
@@ -144,25 +144,9 @@ async function measure(source) {
|
||||
try {
|
||||
const login = await api('', 'POST', '/api/auth/login', { loginId: process.env.ADMIN_TEST_USERNAME, password: process.env.ADMIN_TEST_PASSWORD })
|
||||
admin = login.accessToken
|
||||
// 本机旧权限目录可能未初始化取消/结案/释放资源;只补正式权限资源并授权本轮专用账号。
|
||||
let permissions = await api(admin, 'GET', '/api/platform/v1/iam/permissions')
|
||||
for (const [suffix, name] of [['cancel', '取消车次'], ['complete', '车次货物结案'], ['release', '结束车辆司机任务']]) {
|
||||
const code = `platform:fleet:trip:${suffix}`
|
||||
if (!permissions.some(row => row.permissionCode === code)) {
|
||||
const row = await api(admin, 'POST', '/api/platform/v1/iam/permissions', { type: 'BUTTON', code, name, parentId: permissions.find(item => item.permissionCode === 'platform:fleet:trip:list').id, httpMethod: 'POST' })
|
||||
permissions.push(row)
|
||||
}
|
||||
}
|
||||
if (!report.operatorUsername) {
|
||||
const existingRole = (await api(admin, 'GET', '/api/platform/v1/iam/roles')).find(row => row.roleCode === `${marker}_OPERATOR`)
|
||||
const role = existingRole || await api(admin, 'POST', '/api/platform/v1/iam/roles', { roleCode: `${marker}_OPERATOR`, roleName: `${marker}本地取货验收角色`, description: '沿当前验收账号权限增加正式车次取消、结案和释放,仅供本轮本机验收' })
|
||||
const allowed = new Set([...login.authorities, 'platform:fleet:trip:cancel', 'platform:fleet:trip:complete', 'platform:fleet:trip:release'])
|
||||
await api(admin, 'PUT', '/api/platform/v1/iam/roles/permissions', { roleId: role.id, permissionIds: permissions.filter(row => allowed.has(row.permissionCode)).map(row => row.id) })
|
||||
const username = `pickup_op_${marker.replace(/\D/g, '')}`
|
||||
await api(admin, 'POST', '/api/platform/v1/iam/users', { username, password: process.env.LOCAL_TRANSFER_PDA_PASSWORD, displayName: `${marker}本地取货验收`, phone: `18${String(Date.now()).slice(-9)}`, tenantId: '0', roleIds: [role.id], status: 'ACTIVE' })
|
||||
report.operatorUsername = username; await save()
|
||||
}
|
||||
admin = (await api('', 'POST', '/api/auth/login', { loginId: report.operatorUsername, password: process.env.LOCAL_TRANSFER_PDA_PASSWORD })).accessToken
|
||||
const required = ['cancel', 'complete', 'release'].map(key => `platform:fleet:trip:${key}`)
|
||||
check(Array.isArray(login.authorities) && required.every(code => login.authorities.includes(code)), '固定平台账号缺少正式业务权限,不自动补权限或创建角色')
|
||||
report.operatorUsername = process.env.ADMIN_TEST_USERNAME; await save()
|
||||
const tenants = await api(admin, 'GET', '/api/platform/v1/iam/tenants?page=1&size=200')
|
||||
const customers = tenants.records.filter(row => row.status === 'ACTIVE').sort((a, b) => Number(!String(a.tenantName || a.name).includes('测试')) - Number(!String(b.tenantName || b.name).includes('测试')))
|
||||
check(customers.length >= 2, '本地至少两名有效客户用于共车隔离验收')
|
||||
@@ -173,21 +157,8 @@ try {
|
||||
const roles = await api(admin, 'GET', '/api/platform/v1/iam/roles'), role = roles.find(row => row.roleCode === 'OVERSEAS_WAREHOUSE_PDA_OPERATOR' && row.status === 'ACTIVE')
|
||||
check(role, '存在海外PDA作业角色')
|
||||
const username = `pda_pickup_${marker.replace(/\D/g, '')}`
|
||||
if (!report.pdaUsername) await api(admin, 'POST', '/api/platform/v1/iam/users', { username, password: process.env.LOCAL_TRANSFER_PDA_PASSWORD, displayName: `${marker}取货验收PDA`, phone: `18${String(Date.now()).slice(-9)}`, email: `${username}@example.com`, tenantId: '0', roleIds: [role.id], overseasWarehouseId: warehouse.id, status: 'ACTIVE' })
|
||||
pda = (await api('', 'POST', '/api/auth/login', { loginId: username, password: process.env.LOCAL_TRANSFER_PDA_PASSWORD })).accessToken
|
||||
report.pdaUsername = username
|
||||
const orders = []
|
||||
for (let i = 1; i <= 15; i++) orders.push(await order(customers[i % 2], warehouse, i, i >= 13 && i <= 14 ? 'CUSTOMER_DELIVERY' : 'WAREHOUSE_PICKUP', i !== 15))
|
||||
const differentWarehouse = await order(customers[0], otherWarehouse, 16)
|
||||
const waiting = orders[0], sharedA = orders[1], sharedB = orders[2]
|
||||
waiting.scenario = '待取货,供页面手工选单'; orders[12].scenario = '客户自送,不进入取货池'; orders[13].scenario = '客户自送,不进入取货池'; orders[14].scenario = '未审核,不进入取货池'
|
||||
// 候选关键字查地址,取货地址中使用本轮标识;按单号定向复验不依赖全局数据量。
|
||||
const single = await api(admin, 'GET', `${pickupBase}?page=1&size=100&keyword=${waiting.transferNo}`)
|
||||
check(single.records.some(row => row.transferNo === waiting.transferNo), '已审上门取货单自动进入候选')
|
||||
for (const excluded of [orders[12], orders[13], orders[14]]) {
|
||||
const result = await api(admin, 'GET', `${pickupBase}?page=1&size=100&keyword=${excluded.transferNo}`)
|
||||
check(result.total === 0 || Number(result.total) === 0, '自送或未审核单不进入待取货池')
|
||||
}
|
||||
report.pdaUsername = process.env.LOCAL_TRANSFER_PDA_USERNAME
|
||||
check(Boolean(report.pdaUsername), '必须配置既有 LOCAL_TRANSFER_PDA_USERNAME,不自动创建PDA账号')
|
||||
const invalid = { sources: [waiting, differentWarehouse].map(({ customerId, transferNo }) => ({ customerId, transferNo })), plannedDepartureAt: new Date().toISOString(), expectedDriverEndAt: new Date(Date.now() + 86400000).toISOString(), idempotencyKey: randomUUID() }
|
||||
await api(admin, 'POST', pickupBase, invalid, 'A0400')
|
||||
await api(pda, 'POST', `/api/pda/v1/last-leg/warehouse-transfers/${waiting.transferNo}/pallets/drafts`, { idempotencyKey: randomUUID() }, 'A0409')
|
||||
|
||||
Reference in New Issue
Block a user