fix(flow): 等上游QC未过的维度不算编排掉链——合法等待轮不再空转烧orch_done(中电新项目误抛待办根因)
This commit is contained in:
parent
41d55b5d39
commit
7733ff31cf
@ -586,6 +586,23 @@ async def reconcile_project(sor, project_id, project_name=""):
|
|||||||
if await _open_orch_tasks(sor, project_id) > 0:
|
if await _open_orch_tasks(sor, project_id) > 0:
|
||||||
acts.append("waiting: PM 解析编排任务在办")
|
acts.append("waiting: PM 解析编排任务在办")
|
||||||
else:
|
else:
|
||||||
|
# 2026-09-04 修复(中电新项目实测):上游 QC 未过的维度是合法等待,
|
||||||
|
# 不是「掉链」——PM 即使接到编排任务也派发不了(dispatch_analysis_dim
|
||||||
|
# 依赖门禁拒绝)。把这类维度留在 pending 会让编排任务空转(无可派发维度
|
||||||
|
# 即完成),空转轮次计入 orch_done → MAX_ORCH_ATTEMPT 轮后误抛
|
||||||
|
# 「PM 解析编排掉链」人工待办。只有真正可派发的维度才驱动编排/掉链计数。
|
||||||
|
qc_passed = await _qc_passed_types(sor, project_id)
|
||||||
|
dispatchable, waiting_up = [], []
|
||||||
|
for d, lb in first_run_pending:
|
||||||
|
up_ok = all(t in qc_passed
|
||||||
|
for u in DIM_UPSTREAM.get(d, ())
|
||||||
|
for t in DIM_QC_TYPES[u])
|
||||||
|
(dispatchable if up_ok else waiting_up).append((d, lb))
|
||||||
|
if waiting_up:
|
||||||
|
acts.append("waiting: 维度「%s」等上游 QC 通过(合法等待,不计掉链)"
|
||||||
|
% "、".join(lb for _, lb in waiting_up))
|
||||||
|
first_run_pending = dispatchable
|
||||||
|
if first_run_pending:
|
||||||
_ft2 = _ft or await _latest_tender_file_ts(sor, project_id)
|
_ft2 = _ft or await _latest_tender_file_ts(sor, project_id)
|
||||||
orch_done = await _orch_done_count(sor, project_id, since=_ft2 or '')
|
orch_done = await _orch_done_count(sor, project_id, since=_ft2 or '')
|
||||||
if orch_done >= MAX_ORCH_ATTEMPT:
|
if orch_done >= MAX_ORCH_ATTEMPT:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user