Task Graph Kit
把多步任务,写成清楚的依赖。
任务排序、有限重试、失败阻断与结构化运行记录。一个可以逐行阅读、直接运行的任务图起点。
- 依赖先完成,下游再执行
- 失败被记录,下游被阻断
- 只对明确幂等的工作配置重试
import { runGraph } from './graph.mjs';
const report = await runGraph([
{id:'source',run:()=>[{region:'North',amount:120},{region:'North',amount:80},{region:'South',amount:150}]},
{id:'validate',dependsOn:['source'],run:({source})=>{if(source.some(r=>!Number.isFinite(r.amount)))throw new Error('Invalid amount');return source;}},
{id:'aggregate',dependsOn:['validate'],run:({validate})=>validate.reduce((a,r)=>({...a,[r.region]:(a[r.region]??0)+r.amount}),{})},
{id:'report',dependsOn:['aggregate'],run:({aggregate})=>({unit:'CNY',synthetic:true,totals:aggregate})},
]);
console.log(JSON.stringify(report,null,2));以显式依赖组织工作,以结构化结果衔接下一步。
