{{ toast.msg }}
{{ confirm.title }}
{{ confirm.detail }}
仪表盘
流水线运行中
{{ phaseLabel(pipeStatus.phase) }}
{{ pipeStatus.file_name }}
RSS 抓取
→
BT 下载
→
OSS 上传
→
数据库更新
BT 下载进度
{{ (pipeStatus.bt_progress*100).toFixed(1) }}%
状态: {{ pipeStatus.bt_state }}
上传进度
{{ pipeStatus.upload_progress >= 1 ? '完成' : '上传中...' }}
RSS 条目: 已扫描 {{ pipeStatus.items_seen }},已处理 {{ pipeStatus.items_processed }}
错误
上次流水线执行失败
{{ pipeStatus.error }}
制品总数
{{ stats.artifact_count ?? '-' }}
总下载次数
{{ stats.total_downloads ?? '-' }}
成功任务
{{ stats.jobs_success ?? '-' }}
失败任务
{{ stats.jobs_failed ?? '-' }}
客户端错误
{{ stats.client_error_count ?? '-' }}
数据库
{{ stats.db_ok ? '正常' : '异常' }}
存储模式
{{ stats.storage_mode ?? '-' }}
最近任务
| ID | 任务名 | 状态 | 耗时 | 开始时间 |
|---|---|---|---|---|
| {{ j.id }} | {{ j.job_name }} | {{ j.status }} | {{ j.duration_ms != null ? (j.duration_ms/1000).toFixed(1)+'s' : '-' }} | {{ fmtTime(j.started_at) }} |
| 暂无数据 | ||||
制品管理
| 版本 | 类型 | 模拟器 | 文件名 | 大小 | 下载次数 | 状态 | 处理时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ a.version_raw }} | {{ a.kind }} | {{ a.sim.toUpperCase() }} | {{ a.file_name }} | {{ fmtSize(a.size_bytes) }} | {{ a.download_count }} | {{ a.published?'已发布':'未发布' }} | {{ fmtTime(a.processed_at) }} | |
| 暂无制品 | ||||||||
任务记录
| ID | 任务名 | 状态 | 耗时 | 开始时间 | 结束时间 | 详情 |
|---|---|---|---|---|---|---|
| {{ j.id }} | {{ j.job_name }} | {{ j.status }} | {{ j.duration_ms != null ? (j.duration_ms/1000).toFixed(1)+'s' : '-' }} | {{ fmtTime(j.started_at) }} | {{ j.finished_at ? fmtTime(j.finished_at) : '-' }} | {{ j.detail ? JSON.stringify(j.detail).slice(0,60) : '-' }} |
| 暂无记录 | ||||||
任务 #{{ jobDetail.id }} 详情
{{ JSON.stringify(jobDetail.detail, null, 2) }}
客户端错误
| ID | 分类 | 标题 | 详情 | 发生时间 | 上报时间 |
|---|---|---|---|---|---|
| {{ e.id }} | {{ e.category }} | {{ e.title }} | {{ e.detail.slice(0,80) }} | {{ fmtTime(e.occurred_at) }} | {{ fmtTime(e.created_at) }} |
| 暂无错误上报 | |||||
{{ errDetail.title }}
{{ errDetail.category }}
{{ errDetail.detail }}
上下文
{{ JSON.stringify(errDetail.context, null, 2) }}
流水线控制
{{ pipeStatus.running ? '运行中' : '空闲' }}
{{ phaseLabel(pipeStatus.phase) }}
{{ pipeStatus.file_name }}
RSS 抓取
→
BT 下载
→
OSS 上传
→
数据库更新
BT 下载进度
{{ (pipeStatus.bt_progress*100).toFixed(1) }}%
qBittorrent 状态: {{ pipeStatus.bt_state }}
OSS 上传进度
{{ pipeStatus.upload_progress >= 1 ? '完成' : '上传中...' }}
RSS 条目: 已扫描 {{ pipeStatus.items_seen }},已处理 {{ pipeStatus.items_processed }}
上次错误: {{ pipeStatus.error }}
手动触发
手动触发一次完整的 RSS 抓取 → BT 下载 → OSS 上传 → 数据库更新 流程。
触发后可在此页面实时查看进度。
流水线架构
RSS 发现
→
BT 下载
→
SHA256 校验
→
OSS 上传
→
数据库更新
自动轮询间隔由 RSS_INTERVAL_MINUTES 控制,XP11 采用静态配置,XP12 走全自动流水线。
系统信息
服务端配置
{{ k }}
{{ v }}