{
  "version": 1,
  "description": "模块迁移（定范围 → 人工确认 → 建模块 → 迁移 → 静态检查 → 编译修复 → 出文档）",
  "nodes": {
    "moduleName": {
      "x": 80,
      "y": 80
    },
    "repoRoot": {
      "x": 80,
      "y": 280
    },
    "rules": {
      "x": 80,
      "y": 480
    },
    "scopeRun": {
      "x": 80,
      "y": 680
    },
    "sourcePath": {
      "x": 80,
      "y": 880
    },
    "scope": {
      "x": 420,
      "y": 80
    },
    "showScope": {
      "x": 760,
      "y": 80
    },
    "migrateRun": {
      "x": 1100,
      "y": 80
    },
    "newModule": {
      "x": 1440,
      "y": 80
    },
    "migrate": {
      "x": 1780,
      "y": 80
    },
    "staticCheck": {
      "x": 2120,
      "y": 80
    },
    "aiCheck": {
      "x": 2460,
      "y": 80
    },
    "verdict": {
      "x": 2800,
      "y": 80
    },
    "gate1": {
      "x": 3140,
      "y": 80
    },
    "buildA": {
      "x": 3480,
      "y": 80
    },
    "fix1": {
      "x": 3480,
      "y": 280
    },
    "buildOkA": {
      "x": 3820,
      "y": 80
    },
    "staticCheck2": {
      "x": 3820,
      "y": 280
    },
    "aiCheck2": {
      "x": 4160,
      "y": 80
    },
    "gateBuildA": {
      "x": 4160,
      "y": 280
    },
    "buildStuckA": {
      "x": 4500,
      "y": 80
    },
    "docA": {
      "x": 4500,
      "y": 280
    },
    "verdict2": {
      "x": 4500,
      "y": 480
    },
    "gate2": {
      "x": 4840,
      "y": 80
    },
    "showDocA": {
      "x": 4840,
      "y": 280
    },
    "buildB": {
      "x": 5180,
      "y": 80
    },
    "staticStuck": {
      "x": 5180,
      "y": 280
    },
    "buildOkB": {
      "x": 5520,
      "y": 80
    },
    "gateBuildB": {
      "x": 5860,
      "y": 80
    },
    "buildStuckB": {
      "x": 6200,
      "y": 80
    },
    "docB": {
      "x": 6200,
      "y": 280
    },
    "showDocB": {
      "x": 6540,
      "y": 80
    }
  }
}
