fix: 人工定向修正任务独立成组(不混入全量解析),轮次节点带该轮QC结果
This commit is contained in:
parent
6575bc3ca4
commit
1679c76fd4
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user