fix: 监控进度显示优化 - 通用任务改为"已执行操作数",操作计数紧凑展示
- 通用步骤任务进度语义:done=累计执行操作次数,不再配固定 total(原来显示 33/2 步骤 无意义) - 前端操作计数徽章按数量降序、最多显示6个,超出折叠为 +N - 移除无意义的百分比进度条(无固定总数时不显示)
This commit is contained in:
@@ -88,7 +88,7 @@ class GenericStepsWorker(BaseWorker):
|
||||
"""按 steps 顺序执行。loop 步骤递归执行其 children。"""
|
||||
self._start_timer()
|
||||
self.set_action("开始执行步骤链")
|
||||
self.set_progress(done=0, total=len(self.steps), unit="步骤",
|
||||
self.set_progress(done=0, total=0, unit="操作",
|
||||
action_counts=dict(self._action_counts))
|
||||
|
||||
try:
|
||||
@@ -131,8 +131,9 @@ class GenericStepsWorker(BaseWorker):
|
||||
_log.warning(f"[{self.serial}] 未知步骤类型: {stype}")
|
||||
self._action_counts[label] = self._action_counts.get(label, 0) + 1
|
||||
elapsed = self.elapsed()
|
||||
# done=累计执行的操作次数(无固定总数),前端显示"已执行 N 次操作"
|
||||
self.set_progress(done=sum(self._action_counts.values()),
|
||||
total=len(self.steps), unit="步骤",
|
||||
total=0, unit="操作",
|
||||
action_counts=dict(self._action_counts), elapsed=elapsed)
|
||||
|
||||
# ================== 步骤执行器 ==================
|
||||
|
||||
@@ -953,10 +953,17 @@ function fmtProgress(progress, workerStatus){
|
||||
const m=Math.floor(elapsed/60), s=elapsed%60;
|
||||
timeHtml=' <span style="font-size:11px;color:#94a3b8">'+m+'m'+s+'s</span>';
|
||||
}
|
||||
// 操作计数徽章(仅显示 >0 的)
|
||||
const countParts=Object.entries(counts).filter(([_,v])=>v>0).map(([k,v])=>
|
||||
'<span class="label label-info" style="margin-left:4px">'+(ACTION_LABELS[k]||esc(k))+' '+v+'</span>');
|
||||
const countsHtml=countParts.length?'<div style="margin-top:2px">'+countParts.join('')+'</div>':'';
|
||||
// 操作计数徽章(按数量降序,最多显示6个,超出的折叠为 +N)
|
||||
const countEntries=Object.entries(counts).filter(([_,v])=>v>0).sort((a,b)=>b[1]-a[1]);
|
||||
const MAX_COUNTS=6;
|
||||
const shown=countEntries.slice(0,MAX_COUNTS);
|
||||
const more=countEntries.length-MAX_COUNTS;
|
||||
let countsHtml='';
|
||||
if(shown.length){
|
||||
countsHtml='<div style="margin-top:2px">'+shown.map(([k,v])=>
|
||||
'<span class="label label-info" style="margin-left:4px;font-size:11px">'+(ACTION_LABELS[k]||esc(k))+' '+v+'</span>'
|
||||
).join('')+(more>0?' <span style="font-size:11px;color:#94a3b8">+'+more+'</span>':'')+'</div>';
|
||||
}
|
||||
// 空闲/完成但无进度数据 → 灰显
|
||||
if(done===0&&total===0&&elapsed===0&&!countParts.length){
|
||||
return '<span class="text-muted">-</span>';
|
||||
|
||||
Reference in New Issue
Block a user