67223f8950
- F9 新增 useTablePaging composable 并接入 7 个工具页"匹配结果"表(只切渲染窗口, 不加选择语义;每页 100 条)+ 深色分页样式 - F6 历史任务抽屉渲染截断(默认 50 条 + "显示全部/收起"),全选口径改为当前可见条目 - F5 新增 task-progress-polling 适配器:等待任务终态的紧循环走 /tasks/progress/light, 异常或空响应回退重型 batch;已接入跟价/定时匹配的 waitForTaskTerminal - F12 背景图 bg.jpg 251KB → 166KB(1920 宽 + quality 80,image-set 仍优先 webp) - G3 抽出共享纯逻辑 task-queue-state(开始时间表序列化校验 + 记录缺失错误判定), 5 个工具页删除逐字重复实现 - 新增 4 个单测文件(分页切片/历史截断/轻量轮询归一/任务队列纯逻辑)
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { pickPollingBatch, toBatchItems } from '../src/shared/api/task-progress-polling.ts'
|
|
|
|
test('轻量项归一为重型 batch 的嵌套形状', () => {
|
|
const items = toBatchItems([
|
|
{ taskId: 7, status: 'RUNNING', fileStatus: 'PENDING', fileReady: false, updatedAt: '2026-09-14T06:00:00' },
|
|
])
|
|
|
|
assert.equal(items.length, 1)
|
|
assert.deepEqual(items[0].task, {
|
|
id: 7,
|
|
status: 'RUNNING',
|
|
statusCode: null,
|
|
fileStatus: 'PENDING',
|
|
fileError: null,
|
|
fileReady: false,
|
|
updatedAt: '2026-09-14T06:00:00',
|
|
})
|
|
})
|
|
|
|
test('缺少 taskId 的项被丢弃,非法 taskId 同样丢弃', () => {
|
|
const items = toBatchItems([{ status: 'RUNNING' }, { taskId: 0, status: 'RUNNING' }, { taskId: 3 }])
|
|
|
|
assert.equal(items.length, 1)
|
|
assert.equal(items[0].task?.id, 3)
|
|
})
|
|
|
|
test('有条目时返回可用结果', () => {
|
|
const picked = pickPollingBatch([{ taskId: 9, status: 'SUCCESS' }], [])
|
|
|
|
assert.notEqual(picked, null)
|
|
assert.equal(picked?.items.length, 1)
|
|
assert.deepEqual(picked?.missingTaskIds, [])
|
|
})
|
|
|
|
test('只有 missing 列表也算可用结果(任务已删除场景)', () => {
|
|
const picked = pickPollingBatch([], [11, 12])
|
|
|
|
assert.notEqual(picked, null)
|
|
assert.equal(picked?.items.length, 0)
|
|
assert.deepEqual(picked?.missingTaskIds, [11, 12])
|
|
})
|
|
|
|
test('空响应返回 null,调用方据此回退重型端点', () => {
|
|
assert.equal(pickPollingBatch([], []), null)
|
|
assert.equal(pickPollingBatch(null, null), null)
|
|
assert.equal(pickPollingBatch(undefined, undefined), null)
|
|
assert.equal(pickPollingBatch([{ status: 'RUNNING' }], []), null, '全是非法项时同样回退')
|
|
})
|