优化
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
function count(value) {
|
||||
const number = Number(value)
|
||||
return Number.isFinite(number) ? number : NaN
|
||||
}
|
||||
|
||||
function id(value) { return value == null ? '' : String(value) }
|
||||
|
||||
function isoInstant(offsetDays, endOfDay = false) {
|
||||
const day = new Date(Date.now() + offsetDays * 86_400_000).toISOString().slice(0, 10)
|
||||
return `${day}T${endOfDay ? '23:59:59' : '00:00:00'}Z`
|
||||
}
|
||||
|
||||
function pageOf(value) {
|
||||
return value && Array.isArray(value.records) && Number.isFinite(count(value.total))
|
||||
}
|
||||
|
||||
export async function run(context) {
|
||||
const module = 'fleet-management'
|
||||
const base = '/api/platform/v1/last-leg/fleet'
|
||||
|
||||
const tripsResponse = await context.request('GET', `${base}/trips?page=1&size=20`)
|
||||
const trips = context.apiSuccess(module, '查询车次计划列表', tripsResponse)
|
||||
context.assert(module, '车次分页与状态字段完整', tripsResponse,
|
||||
pageOf(trips) && trips.records.every((row) => id(row.tripNo) && row.status && Number.isFinite(count(row.recordVersion))),
|
||||
`total=${trips?.total ?? 'missing'},records=${trips?.records?.length ?? 'missing'}`)
|
||||
|
||||
const tripNo = trips?.records?.[0]?.tripNo
|
||||
if (tripNo) {
|
||||
const detailResponse = await context.request('GET', `${base}/trips/${encodeURIComponent(tripNo)}`)
|
||||
const detail = context.apiSuccess(module, '查询当前车次详情', detailResponse)
|
||||
context.assert(module, '车次详情包含四页签所需事实', detailResponse,
|
||||
id(detail?.trip?.tripNo) === id(tripNo)
|
||||
&& detail?.trip?.status
|
||||
&& Array.isArray(detail?.dispatches)
|
||||
&& detail?.loadingReview != null,
|
||||
`tripNo=${detail?.trip?.tripNo},status=${detail?.trip?.status},dispatches=${detail?.dispatches?.length ?? 'missing'}`)
|
||||
} else {
|
||||
context.addCoverageGap(module, 'fleet-management', '车次详情',
|
||||
'当前没有车次样本;先由海外排车/车队入口创建本轮车次后重跑', 'not-implemented', { blocking: false })
|
||||
}
|
||||
|
||||
const operationsResponse = await context.request('GET',
|
||||
`${base}/operations?page=1&size=20&from=${isoInstant(-30)}&to=${isoInstant(0, true)}`)
|
||||
const operations = context.apiSuccess(module, '查询出车记录', operationsResponse)
|
||||
context.assert(module, '出车记录分页、汇总与图表结构完整', operationsResponse,
|
||||
pageOf(operations?.page)
|
||||
&& Number.isFinite(count(operations?.summary?.trips))
|
||||
&& Array.isArray(operations?.summary?.externalAgreedAmounts)
|
||||
&& operations?.charts && Array.isArray(operations.charts.physicalPallets),
|
||||
`trips=${operations?.summary?.trips ?? 'missing'},pageTotal=${operations?.page?.total ?? 'missing'}`)
|
||||
context.assert(module, '未登记或未分摊成本不按零展示', operationsResponse,
|
||||
operations?.summary?.costs == null
|
||||
|| (typeof operations.summary.costs.visible === 'boolean'
|
||||
&& (operations.summary.costs.unrecordedTrips == null || Number.isFinite(count(operations.summary.costs.unrecordedTrips)))),
|
||||
JSON.stringify(operations?.summary?.costs || {}).slice(0, 200))
|
||||
|
||||
const quotesResponse = await context.request('GET', `${base}/quotes?page=1&size=20`)
|
||||
const quotes = context.apiSuccess(module, '查询车队报价', quotesResponse)
|
||||
context.assert(module, '车队报价分页字段完整', quotesResponse,
|
||||
pageOf(quotes) && quotes.records.every((row) => id(row.quoteNo) && row.status != null
|
||||
&& (row.recordVersion == null || Number.isFinite(count(row.recordVersion)))),
|
||||
`total=${quotes?.total ?? 'missing'},records=${quotes?.records?.length ?? 'missing'}`)
|
||||
|
||||
const offersResponse = await context.request('GET', `${base}/capacity-offers?page=1&size=20`)
|
||||
const offers = context.apiSuccess(module, '查询内部拼车需求池', offersResponse)
|
||||
context.assert(module, '拼车需求分页字段完整', offersResponse,
|
||||
pageOf(offers) && offers.records.every((row) => row.status != null),
|
||||
`total=${offers?.total ?? 'missing'},records=${offers?.records?.length ?? 'missing'}`)
|
||||
|
||||
const missingResponse = await context.request('GET', `${base}/trips/FLEET-MISSING-TRIP`)
|
||||
context.assert(module, '不存在的车次详情被拒绝', missingResponse,
|
||||
(missingResponse.http === 200 && ['A0403', 'A0404'].includes(String(missingResponse.body?.code)))
|
||||
|| missingResponse.http === 404,
|
||||
`HTTP=${missingResponse.http},code=${missingResponse.body?.code ?? 'missing'}`)
|
||||
|
||||
context.addCoverageGap(module, 'fleet-management', '车次写命令',
|
||||
'车次计划/分配/审核/发车/结案依赖本轮排车与车辆资源;本模块只读核对列表、详情、出车记录、报价和拼车需求',
|
||||
'not-implemented', { blocking: false })
|
||||
}
|
||||
Reference in New Issue
Block a user