fix: 人工定向修正任务独立成组(不混入全量解析),轮次节点带该轮QC结果

This commit is contained in:
yumoqing 2026-09-03 17:10:34 +08:00
parent 6575bc3ca4
commit 1679c76fd4

View File

@ -163,16 +163,20 @@ async with DBPools().sqlorContext(dbname) as sor:
latest_qc[qt] = rv
groups = {}
for t in role_tasks:
key = (_params_of(t).get('analysis_dim') or '').strip() or '__legacy__'
key = (_params_of(t).get('analysis_dim') or '').strip()
if not key:
# 无维度:人工定向修正任务单独成组,其余归遗留全量解析
key = '__manual__' if '修正' in (getattr(t, 'title', '') or '') else '__legacy__'
groups.setdefault(key, []).append(t)
for key in groups:
groups[key].sort(key=lambda x: str(getattr(x, 'created_at', '') or ''))
dim_labels = {
'scoring': '评分项与得分规则', 'quals': '资质清单与要求',
'reqs_outline': '投标文件要求与章节骨架', 'cost_benefit': '成本收益分析',
'__legacy__': '全量解析(维度拆分前)',
'__legacy__': '全量解析(维度拆分前)', '__manual__': '人工定向修正',
}
order = ['scoring', 'quals', 'reqs_outline', 'cost_benefit', '__legacy__']
order = ['scoring', 'quals', 'reqs_outline', 'cost_benefit',
'__manual__', '__legacy__']
nodes = []
for key in order + [k for k in groups if k not in order]:
if key not in groups:
@ -200,7 +204,8 @@ async with DBPools().sqlorContext(dbname) as sor:
tail = "任务" + _state_zh.get(final_state, final_state)
nodes.append({
"id": "grp:" + role + ":" + key,
"label": "{}{} 轮)最新[{}]".format(label, len(ts), tail),
"label": "{}{} {})最新[{}]".format(
label, len(ts), '个任务' if key == '__manual__' else '轮', tail),
"is_leaf": False,
})
return json.dumps(nodes, ensure_ascii=False)
@ -341,7 +346,9 @@ async with DBPools().sqlorContext(dbname) as sor:
continue
if (getattr(t, 'parent_id', '') or '').strip():
continue
k = (_params_of2(t).get('analysis_dim') or '').strip() or '__legacy__'
k = (_params_of2(t).get('analysis_dim') or '').strip()
if not k:
k = '__manual__' if '修正' in (getattr(t, 'title', '') or '') else '__legacy__'
if k == key:
ts.append(t)
ts.sort(key=lambda x: str(getattr(x, 'created_at', '') or ''))
@ -378,12 +385,19 @@ async with DBPools().sqlorContext(dbname) as sor:
qc_label = "→ QC %.1f 分 %s" % (sc, '通过' if passed else '未通过')
else:
rnd = i + 1
qc_label = '→ 未审核/审核记录未关联'
qc_label = ''
upd = t_upd[5:16]
if key == '__manual__':
lbl = "%s [任务%s] %s" % (_state_icons.get(st, '\u2b1c'),
_state_zh.get(st, st),
(getattr(t, 'title', '') or '')[:40])
else:
lbl = "第%d轮 %s [任务%s] %s %s" % (
rnd, _state_icons.get(st, '\u2b1c'), _state_zh.get(st, st),
qc_label or '→ 未审核/审核记录未关联', upd)
nodes.append({
"id": tid,
"label": "第%d轮 %s [任务%s] %s %s" % (
rnd, _state_icons.get(st, '\u2b1c'), _state_zh.get(st, st), qc_label, upd),
"label": lbl,
"is_leaf": not (step_cnt.get(tid, 0) > 0 or del_cnt.get(tid, 0) > 0),
})
return json.dumps(nodes, ensure_ascii=False)