feat(admin): apply shared blue-white self-operated workbench style

This commit is contained in:
2026-10-20 19:16:47 +08:00
parent 9bfce44988
commit 464b72cff9
38 changed files with 1851 additions and 340 deletions
@@ -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)