|
@@ -490,6 +490,12 @@
|
|
|
cross_entity: '跨主体对比', aitable_verify: '湖云比对', build_report: '分析报告', metric_query: '指标查询',
|
|
cross_entity: '跨主体对比', aitable_verify: '湖云比对', build_report: '分析报告', metric_query: '指标查询',
|
|
|
detect_anomalies: '异常检测', attribution: '归因分析',
|
|
detect_anomalies: '异常检测', attribution: '归因分析',
|
|
|
};
|
|
};
|
|
|
|
|
+ // 阶段徽标:让「数据查询 → 提取 → 计算」的推进在时间线上一眼可见
|
|
|
|
|
+ const TOOL_PHASE = {
|
|
|
|
|
+ lake_overview: '查询', query_report: '查询', compare_periods: '查询', metric_query: '查询', cross_entity: '查询', peer_benchmark: '查询',
|
|
|
|
|
+ raw_inspect: '提取', aitable_verify: '提取',
|
|
|
|
|
+ data_quality: '计算', cross_check: '计算', detect_anomalies: '计算', attribution: '计算', build_report: '计算',
|
|
|
|
|
+ };
|
|
|
const VERDICT_WORD = { ok: '通过', warn: '警告', fail: '不一致' };
|
|
const VERDICT_WORD = { ok: '通过', warn: '警告', fail: '不一致' };
|
|
|
const skillName = rec.skill ? ((state.skills.find((s) => s.key === rec.skill) || {}).name || rec.skill) : '';
|
|
const skillName = rec.skill ? ((state.skills.find((s) => s.key === rec.skill) || {}).name || rec.skill) : '';
|
|
|
|
|
|
|
@@ -525,7 +531,7 @@
|
|
|
const bits = [fmtDuration(step.ms), fmtBytes(step.bytes)];
|
|
const bits = [fmtDuration(step.ms), fmtBytes(step.bytes)];
|
|
|
if (step.rows != null) bits.push(`${step.rows} 行`);
|
|
if (step.rows != null) bits.push(`${step.rows} 行`);
|
|
|
steps.push(`<div class="ask-step">
|
|
steps.push(`<div class="ask-step">
|
|
|
- <div class="ask-step-head"><span class="ask-dot ${step.ok ? 'done' : 'failed'}"></span><b>${esc(label)}</b></div>
|
|
|
|
|
|
|
+ <div class="ask-step-head"><span class="ask-dot ${step.ok ? 'done' : 'failed'}"></span><span class="ask-phase phase-${TOOL_PHASE[step.tool] || 'query'}">${esc(TOOL_PHASE[step.tool] || '查询')}</span><b>${esc(label)}</b></div>
|
|
|
<div class="ask-step-meta">${bits.filter(Boolean).map((b) => `<span class="ask-chip">${esc(String(b))}</span>`).join('')}</div>
|
|
<div class="ask-step-meta">${bits.filter(Boolean).map((b) => `<span class="ask-chip">${esc(String(b))}</span>`).join('')}</div>
|
|
|
<details class="ask-tool"><summary>参数与结果</summary>
|
|
<details class="ask-tool"><summary>参数与结果</summary>
|
|
|
<pre class="ask-pre">参数:${esc(JSON.stringify(step.args || {}))}
|
|
<pre class="ask-pre">参数:${esc(JSON.stringify(step.args || {}))}
|