+ {item.name} · {kindLabels[item.kind] ?? item.kind} +
++ 将重新扫描媒体库「{item.name}」以入库。完成后会自动触发刮削(如已启用)。 +
+ )} + + {item.kind === 'scrape' && ( ++ 将重新刮削媒体库「{item.name}」。会重试上次未匹配的条目并刷新元数据。 +
+ )} +| 名称 | +类型 | +状态 | +路径 | +操作 | +
|---|---|---|---|---|
|
+
+ {item.name}
+
+ {item.error && (
+
+ {item.error}
+
+ )}
+ |
+ + + {itemKindLabels[item.kind] ?? item.kind} + + | +{itemStatusBadge(item)} | +
+
+ {item.source || item.dest_path || '-'}
+
+ |
+
+ {item.status === 'failed' && (
+
+
+
+
+ )}
+ |
+
{empty}
return ( -| 任务 | -阶段 | -状态 | -结果 | -时间 | -
|---|---|---|---|---|
|
- {task.name}
-
- {task.source_path || task.dest_path || task.message || '-'}
-
- |
- {task.stage || '-'} | -{statusBadge(task)} | -
-
- {task.error || task.message || '-'}
+
+ {withItems.length > 0 && (
+
+ {withItems.map((task) => (
+
+
+
+
+ {task.name}
+ {statusBadge(task)}
+
{formatMetrics(task.metrics)}
+ {formatMetrics(task.metrics)}
)}
- {task.details && task.details.length > 0 && (
-
- {task.details.map((line, index) => (
-
- )}
-
- {line}
-
- ))}
- |
- - {new Date(task.finished_at || task.updated_at || task.started_at).toLocaleTimeString()} - | -