-
Data Governance Dev authored
目标 - Step 1(数据字典)为强制步骤,前后端都防御性兜底 - 其余 Step 按依赖图分波并行执行(Wave 调度) - Step 8 报告生成显式排在所有主步骤之后 调度器(orchestrator.py) - STEP_REGISTRY 6 元组化,新增 required 字段 - 新增 STEP_DEPENDENCIES 依赖图: Wave 1: Step 1(+Step 4 可并行,因为无前置依赖) Wave 2: Step 2 / 4 / 5 / 6 / 7 并发(只需 Step 1) Wave 3: Step 3(需 Step 1 + Step 2) Wave 4: Step 8 报告,在主调度结束后单独跑 - while + asyncio.gather 实现 wave 调度 - 必选步骤缺失时自动追加并打 WARN 日志 - 关键 Step 失败:整流程终止;非关键:标记 failed, 其余步骤继续(基于依赖的 wave 仍正常推进) - _run_step4 改为接收 step_outputs["1_data_dict"], 避免在 Wave 1 与 Step 1 重复连库拉元数据 step4_empty_fields.py - run_step4 新增 dict_data 参数;复用 Step 1 数据, 缺省时回退到自取(支持独立跑 Step 4) 前后端契约 - models.StepInfo 加 required: bool - routes.py /api/steps 给 Step 1 标 required=True - index.html:el-checkbox :disabled="s.required" + 必选 step 标题旁红色 "必选" 标签 - startJob 启动前再兜底检查一次 form.steps 是否包含所有必选 perf - 全部 8 步情形下,从串行 ~55s 降至 ~30s 级别 (Wave 2 同时跑 5 个, 加上 LLM 同时批分类 vs 串行等待)506152ce