feat(admin): apply shared blue-white self-operated workbench style
This commit is contained in:
@@ -1,6 +1,24 @@
|
||||
import type { Task } from './types'
|
||||
import { label, phaseText, quantityText, unitText } from './state'
|
||||
|
||||
export interface CollectionControlEvidence {
|
||||
collectionMode?: string | null
|
||||
accountPaused?: boolean
|
||||
blockingReason?: string | null
|
||||
}
|
||||
|
||||
export function collectionControlState(task: Task | null | undefined, evidence: CollectionControlEvidence = {}) {
|
||||
if (task && ['SUCCEEDED', 'FAILED', 'DEAD', 'ABORTED'].includes(task.taskStatus)) return null
|
||||
const reasons = [task?.blockingReason, evidence.blockingReason]
|
||||
const text = evidence.collectionMode === 'OFF' || reasons.includes('COLLECTION_OFF') ? '采集已关闭'
|
||||
: evidence.accountPaused || reasons.includes('ACCOUNT_PAUSED') ? '已暂停'
|
||||
: reasons.includes('EXECUTION_DISABLED') ? '执行未启用' : null
|
||||
if (!text) return null
|
||||
// A control switch alone cannot establish that an already running attempt has stopped.
|
||||
const running = Boolean(task && ['RUNNING', 'APPLYING'].includes(task.taskStatus))
|
||||
return { text, running, summary: running ? `${text === '采集已关闭' ? '已关闭' : text} · 执行中` : text }
|
||||
}
|
||||
|
||||
export function isNormalContinuation(task: Task | null | undefined) {
|
||||
const attempt = task?.latestAttempt
|
||||
return task?.taskStatus === 'RETRY_WAIT' && attempt?.status === 'YIELDED'
|
||||
@@ -9,8 +27,10 @@ export function isNormalContinuation(task: Task | null | undefined) {
|
||||
&& !attempt.errorCode && !attempt.failureSummary
|
||||
}
|
||||
|
||||
export function taskStateText(task: Task | null | undefined) {
|
||||
export function taskStateText(task: Task | null | undefined, evidence: CollectionControlEvidence = {}) {
|
||||
if (!task) return '尚无任务'
|
||||
const control = collectionControlState(task, evidence)
|
||||
if (control) return control.summary
|
||||
if (isNormalContinuation(task)) return '本批已完成,等待续采'
|
||||
const states: Record<string, string> = { WAITING_SOURCE: '等待数据准备', WAITING_UPSTREAM: '等待数据准备', READY: '等待执行', QUEUED: '等待执行', WAITING: '等待执行', RUNNING: '正在执行', RETRY_WAIT: '等待重试', YIELDED: '本批已完成,等待续采', DEAD: '已停止,需处理', SUCCEEDED: '执行完成', FAILED: '执行失败' }
|
||||
return states[task.taskStatus] ?? label(task.taskStatus)
|
||||
|
||||
Reference in New Issue
Block a user