{
  "factory_id": "O10",
  "design_revision": 2,
  "design_story": "다시온은 폐플라스틱 베일과 완성 펠릿의 외부 전면을 서로 다르게 둔다. 서쪽 베일 해체·광학 선별동에서 이물이 빠지고 북쪽 습식 파쇄·세척동으로 재료가 이동한다. 긴 부유 분리조와 건조기를 지나면 동쪽 연속동에서 두 압출·탈기 라인과 각각 바로 옆 펠릿화기를 통과한 뒤, 냉각된 펠릿만 남쪽 검사·톤백 포장동으로 보내진다. 오염된 물과 깨끗한 펠릿 이송은 같은 창고를 통과하지 않는다. 거친 진회색 원료동, 배관이 보이는 세척동, 주황색 압출동, 밝은 톤백 출하동의 네 색과 높이를 실제 기능에 맞춰 쓴다. 베일·분리 이물 용기·필터 스크린·톤백은 다른 크기와 보관 방식으로 구분한다.",
  "site": {
    "width": 116,
    "depth": 105
  },
  "buildings": [
    {
      "id": "sort",
      "name": "베일 해체·광학·금속 선별동",
      "role": "production",
      "polygon": [
        [
          14,
          44
        ],
        [
          49.0,
          44
        ],
        [
          49.0,
          64.0
        ],
        [
          14,
          64.0
        ]
      ],
      "height": 9,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.16
      },
      "facade": {
        "color": [
          0.36,
          0.42,
          0.42
        ],
        "accent": [
          0.15,
          0.29,
          0.38
        ],
        "material": "metal",
        "window_band_height": 0.85
      }
    },
    {
      "id": "wash",
      "name": "습식 파쇄·마찰·부유 세척동",
      "role": "production",
      "polygon": [
        [
          14,
          69.0
        ],
        [
          56,
          69.0
        ],
        [
          56,
          91.0
        ],
        [
          14,
          91.0
        ]
      ],
      "height": 9,
      "roof": {
        "type": "sawtooth",
        "axis": "x",
        "pitch": 0.16
      },
      "facade": {
        "color": [
          0.49,
          0.64,
          0.63
        ],
        "accent": [
          0.15,
          0.29,
          0.38
        ],
        "material": "metal",
        "window_band_height": 0.85
      }
    },
    {
      "id": "extrude",
      "name": "탈수·건조·압출·펠릿화 연속동",
      "role": "production",
      "polygon": [
        [
          62,
          69.0
        ],
        [
          100.0,
          69.0
        ],
        [
          100.0,
          90.0
        ],
        [
          62,
          90.0
        ]
      ],
      "height": 8,
      "roof": {
        "type": "shed",
        "axis": "x",
        "pitch": 0.16
      },
      "facade": {
        "color": [
          0.69,
          0.43,
          0.25
        ],
        "accent": [
          0.15,
          0.29,
          0.38
        ],
        "material": "metal",
        "window_band_height": 0.85
      }
    },
    {
      "id": "pellets",
      "name": "완성 펠릿 격리·톤백 포장동",
      "role": "production",
      "polygon": [
        [
          62,
          44
        ],
        [
          91.0,
          44
        ],
        [
          91.0,
          64.0
        ],
        [
          62,
          64.0
        ]
      ],
      "height": 8,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.16
      },
      "facade": {
        "color": [
          0.72,
          0.78,
          0.71
        ],
        "accent": [
          0.15,
          0.29,
          0.38
        ],
        "material": "metal",
        "window_band_height": 0.85
      }
    },
    {
      "id": "bales",
      "name": "원료 베일·이물 격리 저장",
      "role": "warehouse",
      "polygon": [
        [
          14,
          14
        ],
        [
          56,
          14
        ],
        [
          56,
          38
        ],
        [
          14,
          38
        ]
      ],
      "height": 7.5,
      "roof": {
        "type": "gable",
        "axis": "y",
        "pitch": 0.15
      },
      "facade": {
        "color": [
          0.59,
          0.65,
          0.64
        ],
        "accent": [
          0.17,
          0.32,
          0.34
        ],
        "material": "metal",
        "window_band_height": 0.85
      }
    },
    {
      "id": "support",
      "name": "수질·수지·정비 지원동",
      "role": "support",
      "polygon": [
        [
          62,
          14
        ],
        [
          104.0,
          14
        ],
        [
          104.0,
          38.0
        ],
        [
          62,
          38.0
        ]
      ],
      "height": 5.5,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.1
      },
      "facade": {
        "color": [
          0.65,
          0.45,
          0.34
        ],
        "accent": [
          0.2,
          0.28,
          0.3
        ],
        "material": "brick",
        "window_band_height": 0.85
      }
    }
  ],
  "zones": [
    {
      "id": "sort",
      "name": "베일 해체·광학·금속 선별동",
      "role": "process",
      "building_id": "sort",
      "x": 14,
      "y": 44,
      "width": 35.0,
      "depth": 20.0,
      "stage_ids": [
        "S01",
        "S02"
      ],
      "fixtures": [
        {
          "id": "sort-waste_station-01",
          "type": "waste_station",
          "x": 38.0,
          "y": 45.35,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 1"
        },
        {
          "id": "sort-waste_station-02",
          "type": "waste_station",
          "x": 40.8,
          "y": 45.35,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 2"
        },
        {
          "id": "sort-waste_station-03",
          "type": "waste_station",
          "x": 43.6,
          "y": 45.35,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 3"
        },
        {
          "id": "sort-waste_station-04",
          "type": "waste_station",
          "x": 46.4,
          "y": 45.35,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 4"
        },
        {
          "id": "sort-waste_station-05",
          "type": "waste_station",
          "x": 15.6,
          "y": 53.75,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 5"
        },
        {
          "id": "sort-waste_station-06",
          "type": "waste_station",
          "x": 15.6,
          "y": 56.55,
          "width": 2,
          "depth": 1.5,
          "height": 1.6,
          "count": 1,
          "label": "금속·이색 수지·라벨 이물 6"
        },
        {
          "id": "sort-workbench-01",
          "type": "workbench",
          "x": 15.5,
          "y": 45.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1,
          "count": 1,
          "label": "광학 기준 표본·선별 정비 1"
        },
        {
          "id": "sort-workbench-02",
          "type": "workbench",
          "x": 18.1,
          "y": 45.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1,
          "count": 1,
          "label": "광학 기준 표본·선별 정비 2"
        },
        {
          "id": "sort-workbench-03",
          "type": "workbench",
          "x": 20.7,
          "y": 45.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1,
          "count": 1,
          "label": "광학 기준 표본·선별 정비 3"
        },
        {
          "id": "sort-worktable-01",
          "type": "worktable",
          "x": 31.625,
          "y": 62.475,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "선별 카메라 기준 표본대 1"
        },
        {
          "id": "sort-worktable-02",
          "type": "worktable",
          "x": 29.575,
          "y": 62.475,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "선별 카메라 기준 표본대 2"
        },
        {
          "id": "sort-worktable-03",
          "type": "worktable",
          "x": 33.675,
          "y": 62.475,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "선별 카메라 기준 표본대 3"
        }
      ]
    },
    {
      "id": "wash",
      "name": "습식 파쇄·마찰·부유 세척동",
      "role": "process",
      "building_id": "wash",
      "x": 14,
      "y": 69.0,
      "width": 42,
      "depth": 22.0,
      "stage_ids": [
        "S03",
        "S04"
      ],
      "fixtures": [
        {
          "id": "wash-tank_bank-01",
          "type": "tank_bank",
          "x": 41.4,
          "y": 70.5,
          "width": 2.4,
          "depth": 1.8,
          "height": 3,
          "count": 1,
          "label": "공정수 회수·순환 탱크 1"
        },
        {
          "id": "wash-tank_bank-02",
          "type": "tank_bank",
          "x": 44.6,
          "y": 70.5,
          "width": 2.4,
          "depth": 1.8,
          "height": 3,
          "count": 1,
          "label": "공정수 회수·순환 탱크 2"
        },
        {
          "id": "wash-tank_bank-03",
          "type": "tank_bank",
          "x": 47.8,
          "y": 70.5,
          "width": 2.4,
          "depth": 1.8,
          "height": 3,
          "count": 1,
          "label": "공정수 회수·순환 탱크 3"
        },
        {
          "id": "wash-pipe_rack-01",
          "type": "pipe_rack",
          "x": 16.5,
          "y": 78.0,
          "width": 4,
          "depth": 1,
          "height": 4.5,
          "count": 1,
          "label": "세척수·배수 헤더 1"
        },
        {
          "id": "wash-pipe_rack-02",
          "type": "pipe_rack",
          "x": 23.0,
          "y": 77.5,
          "width": 4,
          "depth": 1,
          "height": 4.5,
          "count": 1,
          "label": "세척수·배수 헤더 2"
        },
        {
          "id": "wash-pipe_rack-03",
          "type": "pipe_rack",
          "x": 27.5,
          "y": 78.0,
          "width": 4,
          "depth": 1,
          "height": 4.5,
          "count": 1,
          "label": "세척수·배수 헤더 3"
        }
      ]
    },
    {
      "id": "extrude",
      "name": "탈수·건조·압출·펠릿화 연속동",
      "role": "process",
      "building_id": "extrude",
      "x": 62,
      "y": 69.0,
      "width": 38.0,
      "depth": 21.0,
      "stage_ids": [
        "S05",
        "S06",
        "S07"
      ],
      "fixtures": [
        {
          "id": "extrude-workbench-01",
          "type": "workbench",
          "x": 63.6,
          "y": 70.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "스크린팩·다이 교체 준비 1"
        },
        {
          "id": "extrude-workbench-02",
          "type": "workbench",
          "x": 66.4,
          "y": 70.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "스크린팩·다이 교체 준비 2"
        },
        {
          "id": "extrude-workbench-03",
          "type": "workbench",
          "x": 69.2,
          "y": 70.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "스크린팩·다이 교체 준비 3"
        },
        {
          "id": "extrude-workbench-04",
          "type": "workbench",
          "x": 72.0,
          "y": 70.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "스크린팩·다이 교체 준비 4"
        },
        {
          "id": "extrude-cabinet-01",
          "type": "cabinet",
          "x": 74.3,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 1"
        },
        {
          "id": "extrude-cabinet-02",
          "type": "cabinet",
          "x": 76.5,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 2"
        },
        {
          "id": "extrude-cabinet-03",
          "type": "cabinet",
          "x": 78.7,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 3"
        },
        {
          "id": "extrude-cabinet-04",
          "type": "cabinet",
          "x": 80.9,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 4"
        },
        {
          "id": "extrude-cabinet-05",
          "type": "cabinet",
          "x": 83.1,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 5"
        },
        {
          "id": "extrude-cabinet-06",
          "type": "cabinet",
          "x": 85.3,
          "y": 69.95,
          "width": 1.4,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "필터 스크린·온도센서 6"
        },
        {
          "id": "extrude-worktable-01",
          "type": "worktable",
          "x": 89.875,
          "y": 81.625,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "압출 스크린팩 교환대 1"
        },
        {
          "id": "extrude-worktable-02",
          "type": "worktable",
          "x": 71.625,
          "y": 77.825,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "압출 스크린팩 교환대 2"
        },
        {
          "id": "extrude-worktable-03",
          "type": "worktable",
          "x": 73.625,
          "y": 77.825,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "압출 스크린팩 교환대 3"
        },
        {
          "id": "extrude-worktable-04",
          "type": "worktable",
          "x": 91.925,
          "y": 81.625,
          "width": 1.25,
          "depth": 0.65,
          "height": 1.0,
          "count": 1,
          "label": "압출 스크린팩 교환대 4"
        }
      ]
    },
    {
      "id": "pellets",
      "name": "품질 판정·톤백 포장 셀",
      "role": "process",
      "building_id": "pellets",
      "x": 62,
      "y": 53,
      "width": 29.0,
      "depth": 11,
      "stage_ids": [
        "S08"
      ],
      "fixtures": [
        {
          "id": "pellets-floor_pallets-06",
          "type": "floor_pallets",
          "x": 63.5,
          "y": 53.75,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 6"
        },
        {
          "id": "pellets-floor_pallets-07",
          "type": "floor_pallets",
          "x": 88.4,
          "y": 54.25,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 7"
        },
        {
          "id": "pellets-floor_pallets-10",
          "type": "floor_pallets",
          "x": 66.1,
          "y": 53.75,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 10"
        },
        {
          "id": "robot-1-0-handover",
          "type": "workbench",
          "x": 66.3,
          "y": 62.15,
          "width": 1.2,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "angle": 0,
          "label": "접힌 빈 톤백 펼침·걸이 준비대 S08:0"
        },
        {
          "id": "robot-1-1-handover",
          "type": "workbench",
          "x": 75.3,
          "y": 62.15,
          "width": 1.2,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "angle": 0,
          "label": "접힌 빈 톤백 펼침·걸이 준비대 S08:1"
        }
      ]
    },
    {
      "id": "bales",
      "name": "원료 베일·이물 격리 저장",
      "role": "warehouse",
      "building_id": "bales",
      "x": 14,
      "y": 14,
      "width": 42,
      "depth": 24,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "bales-floor_pallets-01",
          "type": "floor_pallets",
          "x": 15.75,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 1"
        },
        {
          "id": "bales-floor_pallets-02",
          "type": "floor_pallets",
          "x": 18.85,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 2"
        },
        {
          "id": "bales-floor_pallets-03",
          "type": "floor_pallets",
          "x": 21.95,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 3"
        },
        {
          "id": "bales-floor_pallets-04",
          "type": "floor_pallets",
          "x": 25.05,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 4"
        },
        {
          "id": "bales-floor_pallets-05",
          "type": "floor_pallets",
          "x": 28.15,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 5"
        },
        {
          "id": "bales-floor_pallets-06",
          "type": "floor_pallets",
          "x": 31.25,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 6"
        },
        {
          "id": "bales-floor_pallets-07",
          "type": "floor_pallets",
          "x": 34.35,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 7"
        },
        {
          "id": "bales-floor_pallets-08",
          "type": "floor_pallets",
          "x": 37.45,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 8"
        },
        {
          "id": "bales-floor_pallets-09",
          "type": "floor_pallets",
          "x": 40.55,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 9"
        },
        {
          "id": "bales-floor_pallets-10",
          "type": "floor_pallets",
          "x": 43.65,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 10"
        },
        {
          "id": "bales-floor_pallets-11",
          "type": "floor_pallets",
          "x": 46.75,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 11"
        },
        {
          "id": "bales-floor_pallets-12",
          "type": "floor_pallets",
          "x": 49.85,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 12"
        },
        {
          "id": "bales-floor_pallets-13",
          "type": "floor_pallets",
          "x": 52.95,
          "y": 15.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 13"
        },
        {
          "id": "bales-floor_pallets-14",
          "type": "floor_pallets",
          "x": 15.75,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 14"
        },
        {
          "id": "bales-floor_pallets-15",
          "type": "floor_pallets",
          "x": 18.85,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 15"
        },
        {
          "id": "bales-floor_pallets-16",
          "type": "floor_pallets",
          "x": 21.95,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 16"
        },
        {
          "id": "bales-floor_pallets-17",
          "type": "floor_pallets",
          "x": 25.05,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 17"
        },
        {
          "id": "bales-floor_pallets-18",
          "type": "floor_pallets",
          "x": 28.15,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 18"
        },
        {
          "id": "bales-floor_pallets-19",
          "type": "floor_pallets",
          "x": 31.25,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 19"
        },
        {
          "id": "bales-floor_pallets-20",
          "type": "floor_pallets",
          "x": 34.35,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 20"
        },
        {
          "id": "bales-floor_pallets-21",
          "type": "floor_pallets",
          "x": 37.45,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 21"
        },
        {
          "id": "bales-floor_pallets-22",
          "type": "floor_pallets",
          "x": 40.55,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 22"
        },
        {
          "id": "bales-floor_pallets-23",
          "type": "floor_pallets",
          "x": 43.65,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 23"
        },
        {
          "id": "bales-floor_pallets-24",
          "type": "floor_pallets",
          "x": 46.75,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 24"
        },
        {
          "id": "bales-floor_pallets-25",
          "type": "floor_pallets",
          "x": 49.85,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 25"
        },
        {
          "id": "bales-floor_pallets-26",
          "type": "floor_pallets",
          "x": 52.95,
          "y": 18.45,
          "width": 2.3,
          "depth": 1.7,
          "height": 2,
          "count": 1,
          "label": "수지·색상별 원료 베일 26"
        },
        {
          "id": "bales-waste_station-01",
          "type": "waste_station",
          "x": 15.6,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 1"
        },
        {
          "id": "bales-waste_station-02",
          "type": "waste_station",
          "x": 18.4,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 2"
        },
        {
          "id": "bales-waste_station-03",
          "type": "waste_station",
          "x": 21.2,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 3"
        },
        {
          "id": "bales-waste_station-04",
          "type": "waste_station",
          "x": 24.0,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 4"
        },
        {
          "id": "bales-waste_station-05",
          "type": "waste_station",
          "x": 26.8,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 5"
        },
        {
          "id": "bales-waste_station-06",
          "type": "waste_station",
          "x": 29.6,
          "y": 20.95,
          "width": 2,
          "depth": 1.5,
          "height": 1.5,
          "count": 1,
          "label": "격리 이물 전용용기 6"
        }
      ]
    },
    {
      "id": "o10-office",
      "name": "생산·품질 사무실",
      "role": "office",
      "building_id": "support",
      "x": 62,
      "y": 14,
      "width": 16.8,
      "depth": 12.0,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "o10-office-office_desks-01",
          "type": "office_desks",
          "x": 63.85,
          "y": 15.4,
          "width": 2.5,
          "depth": 1.6,
          "height": 1.2,
          "count": 1,
          "label": "생산계획·품질 대응 1"
        },
        {
          "id": "o10-office-office_desks-02",
          "type": "office_desks",
          "x": 67.15,
          "y": 15.4,
          "width": 2.5,
          "depth": 1.6,
          "height": 1.2,
          "count": 1,
          "label": "생산계획·품질 대응 2"
        },
        {
          "id": "o10-office-office_desks-03",
          "type": "office_desks",
          "x": 70.45,
          "y": 15.4,
          "width": 2.5,
          "depth": 1.6,
          "height": 1.2,
          "count": 1,
          "label": "생산계획·품질 대응 3"
        }
      ]
    },
    {
      "id": "o10-staff",
      "name": "교대 탈의·휴게",
      "role": "staff",
      "building_id": "support",
      "x": 78.8,
      "y": 14,
      "width": 12.6,
      "depth": 12.0,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "o10-staff-locker_bank-01",
          "type": "locker_bank",
          "x": 80.3,
          "y": 14.85,
          "width": 1.8,
          "depth": 0.5,
          "height": 1.8,
          "count": 1,
          "label": "교대 개인 보관함 1"
        },
        {
          "id": "o10-staff-locker_bank-02",
          "type": "locker_bank",
          "x": 82.9,
          "y": 14.85,
          "width": 1.8,
          "depth": 0.5,
          "height": 1.8,
          "count": 1,
          "label": "교대 개인 보관함 2"
        },
        {
          "id": "o10-staff-locker_bank-03",
          "type": "locker_bank",
          "x": 85.5,
          "y": 14.85,
          "width": 1.8,
          "depth": 0.5,
          "height": 1.8,
          "count": 1,
          "label": "교대 개인 보관함 3"
        },
        {
          "id": "o10-staff-locker_bank-04",
          "type": "locker_bank",
          "x": 88.1,
          "y": 14.85,
          "width": 1.8,
          "depth": 0.5,
          "height": 1.8,
          "count": 1,
          "label": "교대 개인 보관함 4"
        },
        {
          "id": "o10-staff-worktable-01",
          "type": "worktable",
          "x": 80.2,
          "y": 17.1,
          "width": 1.6,
          "depth": 0.8,
          "height": 1,
          "count": 1,
          "label": "휴게 테이블 1"
        }
      ]
    },
    {
      "id": "o10-lab",
      "name": "수지·수질 품질실",
      "role": "laboratory",
      "building_id": "support",
      "x": 91.4,
      "y": 14,
      "width": 12.6,
      "depth": 12.0,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "o10-lab-lab_bench-01",
          "type": "lab_bench",
          "x": 92.9,
          "y": 15.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "label": "수지·수질 품질실 1"
        },
        {
          "id": "o10-lab-lab_bench-02",
          "type": "lab_bench",
          "x": 95.5,
          "y": 15.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "label": "수지·수질 품질실 2"
        },
        {
          "id": "o10-lab-lab_bench-03",
          "type": "lab_bench",
          "x": 98.1,
          "y": 15.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "label": "수지·수질 품질실 3"
        }
      ]
    },
    {
      "id": "o10-maint",
      "name": "칼날·스크린·다이 정비",
      "role": "maintenance",
      "building_id": "support",
      "x": 62,
      "y": 26.0,
      "width": 21.0,
      "depth": 12.0,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "o10-maint-workbench-01",
          "type": "workbench",
          "x": 63.6,
          "y": 27.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "칼날·스크린·다이 정비 1"
        },
        {
          "id": "o10-maint-workbench-02",
          "type": "workbench",
          "x": 66.4,
          "y": 27.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "칼날·스크린·다이 정비 2"
        },
        {
          "id": "o10-maint-workbench-03",
          "type": "workbench",
          "x": 69.2,
          "y": 27.05,
          "width": 2,
          "depth": 0.9,
          "height": 1,
          "count": 1,
          "label": "칼날·스크린·다이 정비 3"
        },
        {
          "id": "o10-maint-bin_rack-01",
          "type": "bin_rack",
          "x": 73.3,
          "y": 27.1,
          "width": 1.8,
          "depth": 0.8,
          "height": 2.2,
          "count": 1,
          "label": "정비 예비품 1"
        },
        {
          "id": "o10-maint-bin_rack-02",
          "type": "bin_rack",
          "x": 75.75,
          "y": 27.1,
          "width": 1.8,
          "depth": 0.8,
          "height": 2.2,
          "count": 1,
          "label": "정비 예비품 2"
        },
        {
          "id": "o10-maint-bin_rack-03",
          "type": "bin_rack",
          "x": 78.2,
          "y": 27.1,
          "width": 1.8,
          "depth": 0.8,
          "height": 2.2,
          "count": 1,
          "label": "정비 예비품 3"
        }
      ]
    },
    {
      "id": "o10-utility",
      "name": "세척수·냉각·공압",
      "role": "utility",
      "building_id": "support",
      "x": 83.0,
      "y": 26.0,
      "width": 21.0,
      "depth": 12.0,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "o10-utility-compressor-01",
          "type": "compressor",
          "x": 84.85,
          "y": 27.35,
          "width": 2.5,
          "depth": 1.5,
          "height": 2,
          "count": 1,
          "label": "공압 공급 1"
        },
        {
          "id": "o10-utility-chiller-01",
          "type": "chiller",
          "x": 88.9,
          "y": 27.5,
          "width": 3,
          "depth": 1.8,
          "height": 2.3,
          "count": 1,
          "label": "공정 냉각 1"
        },
        {
          "id": "o10-utility-electrical_bank-01",
          "type": "electrical_bank",
          "x": 93.55,
          "y": 26.95,
          "width": 1.5,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "공정 배전 1"
        },
        {
          "id": "o10-utility-electrical_bank-02",
          "type": "electrical_bank",
          "x": 95.85,
          "y": 26.95,
          "width": 1.5,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "공정 배전 2"
        },
        {
          "id": "o10-utility-electrical_bank-03",
          "type": "electrical_bank",
          "x": 98.15,
          "y": 26.95,
          "width": 1.5,
          "depth": 0.7,
          "height": 2,
          "count": 1,
          "label": "공정 배전 3"
        }
      ]
    },
    {
      "id": "pellet-silo-buffer",
      "name": "등급별 완성 펠릿·검사대기 저장",
      "role": "warehouse",
      "building_id": "pellets",
      "x": 62,
      "y": 44,
      "width": 29,
      "depth": 9,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "pellets-floor_pallets-01",
          "type": "floor_pallets",
          "x": 84.3,
          "y": 45.35,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 1"
        },
        {
          "id": "pellets-floor_pallets-02",
          "type": "floor_pallets",
          "x": 86.9,
          "y": 45.35,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 2"
        },
        {
          "id": "pellets-floor_pallets-03",
          "type": "floor_pallets",
          "x": 89.5,
          "y": 45.35,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 3"
        },
        {
          "id": "pellets-floor_pallets-04",
          "type": "floor_pallets",
          "x": 89.5,
          "y": 48.15,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 4"
        },
        {
          "id": "pellets-floor_pallets-05",
          "type": "floor_pallets",
          "x": 89.5,
          "y": 50.95,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 5"
        },
        {
          "id": "pellets-floor_pallets-08",
          "type": "floor_pallets",
          "x": 86.9,
          "y": 48.15,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 8"
        },
        {
          "id": "pellets-floor_pallets-09",
          "type": "floor_pallets",
          "x": 86.9,
          "y": 50.95,
          "width": 1.8,
          "depth": 1.5,
          "height": 1.8,
          "count": 1,
          "label": "등급별 완성 펠릿 톤백 9"
        },
        {
          "id": "pellets-lab_bench-01",
          "type": "lab_bench",
          "x": 63.5,
          "y": 45.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "label": "수지 유동·색상 시료 1"
        },
        {
          "id": "pellets-lab_bench-02",
          "type": "lab_bench",
          "x": 66.1,
          "y": 45.0,
          "width": 1.8,
          "depth": 0.8,
          "height": 1.2,
          "count": 1,
          "label": "수지 유동·색상 시료 2"
        }
      ]
    }
  ],
  "equipment": [
    {
      "stage_id": "S01",
      "index": 0,
      "x": 20.5,
      "y": 49.0,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 1,
      "x": 31.5,
      "y": 49.0,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 0,
      "x": 20.5,
      "y": 60.0,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 1,
      "x": 31.5,
      "y": 60.0,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 2,
      "x": 42.5,
      "y": 60.0,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 0,
      "x": 19.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 1,
      "x": 27.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 2,
      "x": 35.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 0,
      "x": 25.0,
      "y": 85.5,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 1,
      "x": 45.0,
      "y": 85.5,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 0,
      "x": 69.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 1,
      "x": 81.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 2,
      "x": 93.0,
      "y": 73.5,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 0,
      "x": 71,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 1,
      "x": 71,
      "y": 87,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 0,
      "x": 85,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 1,
      "x": 85,
      "y": 87,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 0,
      "x": 67.5,
      "y": 59.5,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 1,
      "x": 76.5,
      "y": 59.5,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 2,
      "x": 85.5,
      "y": 59.5,
      "angle": 0
    }
  ],
  "robots": [
    {
      "definition_index": 0,
      "instance_index": 0,
      "stage_id": "S02",
      "x": 20.5,
      "y": 62.75,
      "angle": -1.5707963267948966,
      "task_station": "광학·금속 선별 1호의 북측 작업면. 비전이 지정한 큰 이물을 선별대에서 제거한다."
    },
    {
      "definition_index": 0,
      "instance_index": 1,
      "stage_id": "S02",
      "x": 42.5,
      "y": 62.75,
      "angle": -1.5707963267948966,
      "task_station": "광학·금속 선별 3호의 북측 작업면. 비전이 지정한 큰 이물을 선별대에서 제거한다."
    },
    {
      "definition_index": 1,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 66.3,
      "y": 59.5,
      "angle": 0,
      "task_station": "품질 판정·톤백 포장 #1: FIBC loop 걸이 꼭대기 ↔ 접힌 빈 톤백 펼침·걸이 준비대 S08:0. 지지기둥은 설비·기물·수송 폭 바깥이며 형상별 전용 툴로 수직 접근 후 높은 위치에서 이송한다. 원기계와 로봇 전체 동작 간섭은 별도 검수한다.",
      "host_equipment": {
        "stage_id": "S08",
        "index": 0
      },
      "gantry_span": [
        2.8,
        6.08,
        7.2
      ],
      "task_point": [
        66.3,
        58.74,
        4.2749
      ],
      "task_points": [
        [
          66.5,
          61.99,
          1.35
        ],
        [
          66.3,
          58.74,
          4.2749
        ]
      ],
      "task_fixture_id": "robot-1-0-handover",
      "controller_offset": [
        0.7,
        -2.99,
        0
      ],
      "target_basis": "FIBC loop 걸이 꼭대기"
    },
    {
      "definition_index": 1,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 75.3,
      "y": 59.5,
      "angle": 0,
      "task_station": "품질 판정·톤백 포장 #2: FIBC loop 걸이 꼭대기 ↔ 접힌 빈 톤백 펼침·걸이 준비대 S08:1. 지지기둥은 설비·기물·수송 폭 바깥이며 형상별 전용 툴로 수직 접근 후 높은 위치에서 이송한다. 원기계와 로봇 전체 동작 간섭은 별도 검수한다.",
      "host_equipment": {
        "stage_id": "S08",
        "index": 1
      },
      "gantry_span": [
        2.8,
        6.08,
        7.2
      ],
      "task_point": [
        75.3,
        58.74,
        4.2749
      ],
      "task_points": [
        [
          75.5,
          61.99,
          1.35
        ],
        [
          75.3,
          58.74,
          4.2749
        ]
      ],
      "task_fixture_id": "robot-1-1-handover",
      "controller_offset": [
        0.7,
        -2.99,
        0
      ],
      "target_basis": "FIBC loop 걸이 꼭대기"
    },
    {
      "definition_index": 2,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 76.5,
      "y": 56.25,
      "angle": 1.5707963267948966,
      "task_station": "품질 판정·톤백 포장 2호의 남측 작업면. 검사된 자루를 팔레트 패턴에 맞춰 적재한다."
    },
    {
      "definition_index": 2,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 85.5,
      "y": 56.25,
      "angle": 1.5707963267948966,
      "task_station": "품질 판정·톤백 포장 3호의 남측 작업면. 검사된 자루를 팔레트 패턴에 맞춰 적재한다."
    }
  ],
  "logistics": [
    {
      "id": "S01→S02",
      "kind": "conveyor",
      "from": "S01:0",
      "to": "S02:0",
      "points": [
        [
          20.5,
          49.0,
          1.05
        ],
        [
          20.5,
          60.0,
          1.05
        ]
      ],
      "width": 0.9,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다."
    },
    {
      "id": "S02→S03",
      "kind": "conveyor",
      "from": "S02:0",
      "to": "S03:0",
      "points": [
        [
          20.5,
          60.0,
          1.05
        ],
        [
          20.5,
          73.5,
          1.05
        ],
        [
          19.0,
          73.5,
          1.05
        ]
      ],
      "width": 0.9,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다."
    },
    {
      "id": "S03→S04",
      "kind": "conveyor",
      "from": "S03:1",
      "to": "S04:0",
      "points": [
        [
          27.0,
          73.5,
          1.05
        ],
        [
          30.09,
          73.5,
          1.05
        ],
        [
          30.09,
          85.5,
          1.05
        ],
        [
          25.0,
          85.5,
          1.05
        ]
      ],
      "width": 0.9,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다."
    },
    {
      "id": "S04→S05",
      "kind": "conveyor",
      "from": "S04:1",
      "to": "S05:0",
      "points": [
        [
          45.0,
          85.5,
          1.05
        ],
        [
          45.0,
          73.5,
          1.05
        ],
        [
          69.0,
          73.5,
          1.05
        ]
      ],
      "width": 0.9,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다."
    },
    {
      "id": "S05→S06",
      "kind": "pipe",
      "from": "S05:0",
      "to": "S06:0",
      "points": [
        [
          69.0,
          73.5,
          2.0
        ],
        [
          69.0,
          73.5,
          4.4
        ],
        [
          69.0,
          81,
          4.4
        ],
        [
          71,
          81,
          4.4
        ],
        [
          71,
          81,
          2.0
        ]
      ],
      "width": 0.18,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다. 설비 측 수직 라이저로 실제 높이의 인계 포트까지 연결한다. 설비 측 수직 라이저로 실제 높이의 인계 포트까지 연결한다."
    },
    {
      "id": "S06→S07",
      "kind": "pipe",
      "from": "S06:0",
      "to": "S07:0",
      "points": [
        [
          71,
          81,
          1.8
        ],
        [
          85,
          81,
          1.8
        ]
      ],
      "width": 0.18,
      "authored_transport": true,
      "routing_note": "동일 베이 안의 직접 가열 용융수지 인계. 설비 footprint 사이 노출 배관 길이는 3.5m다."
    },
    {
      "id": "S07→S08",
      "kind": "pipe",
      "from": "S07:0",
      "to": "S08:2",
      "points": [
        [
          85,
          81,
          1.8
        ],
        [
          85,
          81,
          4.4
        ],
        [
          85,
          59.5,
          4.4
        ],
        [
          85.5,
          59.5,
          4.4
        ]
      ],
      "width": 0.18,
      "routing_note": "해당 생산 셀의 명시 수송 대표 경로. 다른 병렬 셀의 실제 분기 포트는 별도 형상 검토한다. 설비 측 수직 라이저로 실제 높이의 인계 포트까지 연결한다."
    },
    {
      "id": "압출 2열→동일 셀 펠릿화",
      "kind": "pipe",
      "width": 0.18,
      "from": "S06:1",
      "to": "S07:1",
      "points": [
        [
          71,
          87,
          1.8
        ],
        [
          85,
          87,
          1.8
        ]
      ],
      "authored_transport": true,
      "routing_note": "동일 베이 안의 직접 가열 용융수지 인계. 설비 footprint 사이 노출 배관 길이는 3.5m다."
    },
    {
      "id": "원료 도크→입고 인계 1",
      "kind": "forklift",
      "width": 2.4,
      "from": "raw-dock",
      "to": "bales",
      "points": [
        [
          14,
          26.0,
          0.1
        ],
        [
          18.0,
          26.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "입고 인계→초공정 1",
      "kind": "forklift",
      "width": 2.4,
      "from": "bales",
      "to": "S01:0",
      "points": [
        [
          18.0,
          26.0,
          0.1
        ],
        [
          23.02,
          26.0,
          0.1
        ],
        [
          23.02,
          45.18,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다.",
      "handover_method": "external_machine_side_staging",
      "handover_note": "차량 중심선은 설비 footprint 바깥에 정차한다. 장비 측 인계대·적재 자세와 지게차 포크/AMR 도킹 상세는 실제 형상 검수 대상이다."
    },
    {
      "id": "정문→교대 탈의·휴게",
      "kind": "pedestrian",
      "width": 1.2,
      "from": "gate",
      "to": "o10-staff",
      "points": [
        [
          58.0,
          7,
          0.1
        ],
        [
          58.0,
          20.0,
          0.1
        ],
        [
          85.3,
          20.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "지원동 보행 o10-staff→o10-office",
      "kind": "pedestrian",
      "width": 1.2,
      "from": "o10-staff",
      "to": "o10-office",
      "points": [
        [
          85.3,
          20.0,
          0.1
        ],
        [
          70.5,
          20.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "지원동 보행 o10-staff→o10-lab",
      "kind": "pedestrian",
      "width": 1.2,
      "from": "o10-staff",
      "to": "o10-lab",
      "points": [
        [
          85.3,
          20.0,
          0.1
        ],
        [
          97.9,
          20.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "지원동 보행 o10-staff→o10-maint",
      "kind": "pedestrian",
      "width": 1.2,
      "from": "o10-staff",
      "to": "o10-maint",
      "points": [
        [
          85.3,
          20.0,
          0.1
        ],
        [
          79.92,
          20.0,
          0.1
        ],
        [
          79.92,
          32.0,
          0.1
        ],
        [
          72.5,
          32.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "지원동 보행 o10-staff→o10-utility",
      "kind": "pedestrian",
      "width": 1.2,
      "from": "o10-staff",
      "to": "o10-utility",
      "points": [
        [
          85.3,
          20.0,
          0.1
        ],
        [
          82.02,
          20.0,
          0.1
        ],
        [
          82.02,
          32.0,
          0.1
        ],
        [
          93.5,
          32.0,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다."
    },
    {
      "id": "최종검사→완제품 출하 2",
      "kind": "forklift",
      "width": 2.4,
      "from": "S08:2",
      "to": "shipping-dock",
      "points": [
        [
          89.82,
          59.5,
          0.1
        ],
        [
          91.0,
          59.5,
          0.1
        ]
      ],
      "routing_note": "원/종점 실좌표와 수송 폭을 명시한 단방향 대표 인계 경로. 교차부 운영·차량 선회는 별도 검수한다.",
      "handover_method": "external_machine_side_staging",
      "handover_note": "차량 중심선은 설비 footprint 바깥에 정차한다. 장비 측 인계대·적재 자세와 지게차 포크/AMR 도킹 상세는 실제 형상 검수 대상이다."
    }
  ],
  "yard": {
    "roads": [
      {
        "points": [
          [
            7,
            7
          ],
          [
            109,
            7
          ],
          [
            109,
            98
          ],
          [
            7,
            98
          ],
          [
            7,
            7
          ]
        ],
        "width": 6
      }
    ],
    "docks": [
      {
        "x": 14,
        "y": 26.0,
        "angle": -1.5707963267948966,
        "building_id": "bales",
        "role": "원료·구매부품 입고 도크 — 원료 베일·이물 격리 저장 도크"
      },
      {
        "building_id": "pellets",
        "role": "완제품 전용 출하 도크",
        "x": 91.0,
        "y": 59.5,
        "angle": 1.5707963267948966
      }
    ],
    "parking": [
      {
        "x": 15,
        "y": 97.0,
        "angle": 0,
        "count": 20
      }
    ],
    "gate": {
      "x": 58.0,
      "y": 7
    },
    "fence": true
  },
  "landmarks": [
    "서쪽 진회색 원료·선별 매스와 실제 이물 용기",
    "긴 부유 세척조·순환 탱크·배관 랙",
    "주황색 압출동의 스크린팩 준비대",
    "밝은 톤백 출하동과 수지 등급별 팔레트"
  ],
  "openings": [
    {
      "id": "opening-1",
      "building_id": "sort",
      "x": 49.0,
      "y": 44.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S02",
        "S03"
      ]
    },
    {
      "id": "opening-2",
      "building_id": "sort",
      "x": 49.0,
      "y": 44.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S02",
        "S03"
      ],
      "zone_id": "sort"
    },
    {
      "id": "opening-3",
      "building_id": "wash",
      "x": 14,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S02",
        "S03"
      ]
    },
    {
      "id": "opening-4",
      "building_id": "wash",
      "x": 14,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S02",
        "S03"
      ],
      "zone_id": "wash"
    },
    {
      "id": "opening-5",
      "building_id": "wash",
      "x": 56,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "opening-6",
      "building_id": "wash",
      "x": 56,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S04",
        "S05"
      ],
      "zone_id": "wash"
    },
    {
      "id": "opening-7",
      "building_id": "extrude",
      "x": 62,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "opening-8",
      "building_id": "extrude",
      "x": 62,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S04",
        "S05"
      ],
      "zone_id": "extrude"
    },
    {
      "id": "opening-9",
      "building_id": "extrude",
      "x": 100.0,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "opening-10",
      "building_id": "extrude",
      "x": 100.0,
      "y": 69.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ],
      "zone_id": "extrude"
    },
    {
      "id": "opening-11",
      "building_id": "pellets",
      "x": 62,
      "y": 44.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "opening-12",
      "building_id": "pellets",
      "x": 62,
      "y": 44.8,
      "width": 1.8,
      "height": 3.0,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ],
      "zone_id": "pellets"
    },
    {
      "id": "routing-r1-013",
      "building_id": "sort",
      "x": 20.5,
      "y": 64.0,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "S02:0",
        "S03:0"
      ],
      "kind": "process_transfer"
    },
    {
      "id": "routing-r1-014",
      "building_id": "wash",
      "x": 20.5,
      "y": 69.0,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "S02:0",
        "S03:0"
      ],
      "kind": "process_transfer"
    },
    {
      "id": "routing-r1-015",
      "building_id": "sort",
      "x": 20.5,
      "y": 64.0,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "S02:0",
        "S03:0"
      ],
      "kind": "process_transfer",
      "zone_id": "sort"
    },
    {
      "id": "routing-r1-016",
      "building_id": "wash",
      "x": 20.5,
      "y": 69.0,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "S02:0",
        "S03:0"
      ],
      "kind": "process_transfer",
      "zone_id": "wash"
    },
    {
      "id": "routing-r1-017",
      "building_id": "wash",
      "x": 56,
      "y": 73.5,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S04:1",
        "S05:0"
      ],
      "kind": "process_transfer"
    },
    {
      "id": "routing-r1-018",
      "building_id": "extrude",
      "x": 62,
      "y": 73.5,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S04:1",
        "S05:0"
      ],
      "kind": "process_transfer"
    },
    {
      "id": "routing-r1-019",
      "building_id": "wash",
      "x": 56,
      "y": 73.5,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S04:1",
        "S05:0"
      ],
      "kind": "process_transfer",
      "zone_id": "wash"
    },
    {
      "id": "routing-r1-020",
      "building_id": "extrude",
      "x": 62,
      "y": 73.5,
      "width": 1.25,
      "height": 1.6,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S04:1",
        "S05:0"
      ],
      "kind": "process_transfer",
      "zone_id": "extrude"
    },
    {
      "id": "routing-r1-021",
      "building_id": "extrude",
      "x": 85.0,
      "y": 69.0,
      "width": 0.53,
      "height": 0.38,
      "sill_height": 4.21,
      "axis": "x",
      "connects": [
        "S07:0",
        "S08:2"
      ],
      "kind": "pipe_sleeve"
    },
    {
      "id": "routing-r1-022",
      "building_id": "pellets",
      "x": 85.0,
      "y": 64.0,
      "width": 0.53,
      "height": 0.38,
      "sill_height": 4.21,
      "axis": "x",
      "connects": [
        "S07:0",
        "S08:2"
      ],
      "kind": "pipe_sleeve"
    },
    {
      "id": "routing-r1-023",
      "building_id": "bales",
      "x": 14,
      "y": 26.0,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "raw-dock",
        "bales"
      ],
      "kind": "material_door"
    },
    {
      "id": "routing-r1-024",
      "building_id": "sort",
      "x": 23.02,
      "y": 44,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "bales",
        "S01:0"
      ],
      "kind": "material_door"
    },
    {
      "id": "routing-r1-025",
      "building_id": "bales",
      "x": 23.02,
      "y": 38,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "bales",
        "S01:0"
      ],
      "kind": "material_door"
    },
    {
      "id": "routing-r1-026",
      "building_id": "sort",
      "x": 23.02,
      "y": 44,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "bales",
        "S01:0"
      ],
      "kind": "material_door",
      "zone_id": "sort"
    },
    {
      "id": "routing-r1-027",
      "building_id": "support",
      "x": 62,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "gate",
        "o10-staff"
      ],
      "kind": "pedestrian_door"
    },
    {
      "id": "routing-r1-028",
      "building_id": "support",
      "x": 78.8,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "gate",
        "o10-staff"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-office"
    },
    {
      "id": "routing-r1-029",
      "building_id": "support",
      "x": 62,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "gate",
        "o10-staff"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-office"
    },
    {
      "id": "routing-r1-030",
      "building_id": "support",
      "x": 78.8,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "gate",
        "o10-staff"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-staff"
    },
    {
      "id": "routing-r1-031",
      "building_id": "support",
      "x": 91.4,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "o10-staff",
        "o10-lab"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-staff"
    },
    {
      "id": "routing-r1-032",
      "building_id": "support",
      "x": 91.4,
      "y": 20.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "o10-staff",
        "o10-lab"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-lab"
    },
    {
      "id": "routing-r1-033",
      "building_id": "support",
      "x": 79.92,
      "y": 26.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "o10-staff",
        "o10-maint"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-staff"
    },
    {
      "id": "routing-r1-034",
      "building_id": "support",
      "x": 79.92,
      "y": 26.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "o10-staff",
        "o10-maint"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-maint"
    },
    {
      "id": "routing-r1-035",
      "building_id": "support",
      "x": 82.02,
      "y": 26.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "o10-staff",
        "o10-utility"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-staff"
    },
    {
      "id": "routing-r1-036",
      "building_id": "support",
      "x": 82.02,
      "y": 26.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "x",
      "connects": [
        "o10-staff",
        "o10-utility"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-maint"
    },
    {
      "id": "routing-r1-037",
      "building_id": "support",
      "x": 83.0,
      "y": 32.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "o10-staff",
        "o10-utility"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-maint"
    },
    {
      "id": "routing-r1-038",
      "building_id": "support",
      "x": 83.0,
      "y": 32.0,
      "width": 1.75,
      "height": 2.4,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "o10-staff",
        "o10-utility"
      ],
      "kind": "pedestrian_door",
      "zone_id": "o10-utility"
    },
    {
      "id": "routing-r1-039",
      "building_id": "pellets",
      "x": 91.0,
      "y": 59.5,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S08:2",
        "shipping-dock"
      ],
      "kind": "material_door"
    },
    {
      "id": "routing-r1-040",
      "building_id": "pellets",
      "x": 91.0,
      "y": 59.5,
      "width": 3.2,
      "height": 3.5,
      "sill_height": 0,
      "axis": "y",
      "connects": [
        "S08:2",
        "shipping-dock"
      ],
      "kind": "material_door",
      "zone_id": "pellets"
    }
  ],
  "density": {
    "intent": "설비 바닥 720.00㎡ / 제조 구획 3002.00㎡ = 23.98%. 개별 생산 셀의 서비스 간격·공정 인계와 실제 원부자재·정비·검사 시설을 먼저 구성했다. 빈 바닥을 채우기 위한 임의 장식 상자를 사용하지 않는다.",
    "production_area_m2": 2741.0,
    "storage_area_m2": 1269,
    "support_area_m2": 1008.0,
    "circulation_area_m2": 0
  },
  "authoring_note": "개별 배치안. 형상·동작·피난·법정 안전설계 검수 및 시각 검수는 별도 수행해야 하며 공개 릴리스 승인 아님.",
  "routing_design_note": "용융수지는 S06:0→S07:0 및 S06:1→S07:1의 동일 실내 직접 연결로 제한한다. 건조 플레이크와 냉각 펠릿은 밀폐 이송관을 쓴다.",
  "routing_revision": 2
}
