{
  "factory_id": "F15",
  "design_revision": 2,
  "design_story": "만두피와 만두소가 서로 다른 북쪽 입구를 가진다. 서쪽 피 압연선과 동쪽 작은 냉장 다짐·배합실이 가운데 4대 성형 셀에서 만난 뒤 동쪽 증숙으로 흐른다. 남쪽 급속동결과 포장은 냉동 물류만 취급하고, 동쪽 별도 냉동고는 폭6m 밀폐 연결실로 이어진다. 소 원료·피 원료·완제품 동선이 한 마당에서 교차하지 않도록 세 출입면을 구분한다.",
  "site": {
    "width": 153,
    "depth": 111
  },
  "buildings": [
    {
      "id": "wrapper",
      "name": "피 반죽·압연동",
      "role": "production",
      "polygon": [
        [
          30,
          68
        ],
        [
          58,
          68
        ],
        [
          58,
          92
        ],
        [
          30,
          92
        ]
      ],
      "height": 9,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.84,
          0.82,
          0.7
        ],
        "accent": [
          0.36,
          0.47,
          0.24
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "filling",
      "name": "냉장 속 다짐·배합동",
      "role": "production",
      "polygon": [
        [
          80,
          72
        ],
        [
          104,
          72
        ],
        [
          104,
          88
        ],
        [
          80,
          88
        ]
      ],
      "height": 8,
      "roof": {
        "type": "shed",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.8,
          0.87,
          0.8
        ],
        "accent": [
          0.36,
          0.47,
          0.24
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "filling-link",
      "name": "속 원료 밀폐 인계",
      "role": "circulation",
      "polygon": [
        [
          80,
          68
        ],
        [
          104,
          68
        ],
        [
          104,
          72
        ],
        [
          80,
          72
        ]
      ],
      "height": 6,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.78,
          0.84,
          0.76
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "form",
      "name": "4셀 성형·증숙동",
      "role": "production",
      "polygon": [
        [
          30,
          48
        ],
        [
          104,
          48
        ],
        [
          104,
          68
        ],
        [
          30,
          68
        ]
      ],
      "height": 10,
      "roof": {
        "type": "sawtooth",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.84,
          0.87,
          0.76
        ],
        "accent": [
          0.36,
          0.47,
          0.24
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "freeze",
      "name": "급속동결·포장동",
      "role": "production",
      "polygon": [
        [
          30,
          26
        ],
        [
          104,
          26
        ],
        [
          104,
          48
        ],
        [
          30,
          48
        ]
      ],
      "height": 11,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.8,
          0.87,
          0.82
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "cold-link",
      "name": "냉동 물류 연결실",
      "role": "circulation",
      "polygon": [
        [
          104,
          34
        ],
        [
          110,
          34
        ],
        [
          110,
          42
        ],
        [
          104,
          42
        ]
      ],
      "height": 6,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.72,
          0.82,
          0.82
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "cold",
      "name": "급식·소매 냉동 창고",
      "role": "cold_store",
      "polygon": [
        [
          110,
          26
        ],
        [
          130,
          26
        ],
        [
          130,
          68
        ],
        [
          110,
          68
        ]
      ],
      "height": 13,
      "roof": {
        "type": "barrel",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.73,
          0.84,
          0.87
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "support",
      "name": "품질·직원·유틸리티 별동",
      "role": "office",
      "polygon": [
        [
          10,
          28
        ],
        [
          24,
          28
        ],
        [
          24,
          72
        ],
        [
          10,
          72
        ]
      ],
      "height": 6,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.72,
          0.75,
          0.66
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    }
  ],
  "zones": [
    {
      "id": "dough",
      "name": "피 반죽",
      "role": "process",
      "building_id": "wrapper",
      "x": 30,
      "y": 82,
      "width": 28,
      "depth": 10,
      "stage_ids": [
        "S01"
      ],
      "fixtures": []
    },
    {
      "id": "sheet",
      "name": "만두피 압연",
      "role": "process",
      "building_id": "wrapper",
      "x": 30,
      "y": 68,
      "width": 28,
      "depth": 14,
      "stage_ids": [
        "S02"
      ],
      "fixtures": []
    },
    {
      "id": "trim",
      "name": "냉장 속 원료 다짐",
      "role": "process",
      "building_id": "filling",
      "x": 80,
      "y": 80,
      "width": 24,
      "depth": 8,
      "stage_ids": [
        "S03"
      ],
      "fixtures": []
    },
    {
      "id": "mix",
      "name": "만두소 배합",
      "role": "process",
      "building_id": "filling",
      "x": 80,
      "y": 72,
      "width": 24,
      "depth": 8,
      "stage_ids": [
        "S04"
      ],
      "fixtures": []
    },
    {
      "id": "filling-transfer",
      "name": "만두소 밀폐 토트 인계",
      "role": "circulation",
      "building_id": "filling-link",
      "x": 80,
      "y": 68,
      "width": 24,
      "depth": 4,
      "stage_ids": [],
      "fixtures": []
    },
    {
      "id": "form-zone",
      "name": "충전·주름 4셀",
      "role": "process",
      "building_id": "form",
      "x": 30,
      "y": 48,
      "width": 38,
      "depth": 20,
      "stage_ids": [
        "S05"
      ],
      "fixtures": []
    },
    {
      "id": "steam",
      "name": "만두 연속 증숙",
      "role": "process",
      "building_id": "form",
      "x": 68,
      "y": 48,
      "width": 36,
      "depth": 20,
      "stage_ids": [
        "S06"
      ],
      "fixtures": []
    },
    {
      "id": "tunnel",
      "name": "급속동결 2계열",
      "role": "process",
      "building_id": "freeze",
      "x": 62,
      "y": 26,
      "width": 42,
      "depth": 22,
      "stage_ids": [
        "S07"
      ],
      "fixtures": []
    },
    {
      "id": "pack",
      "name": "계수·검사·포장",
      "role": "packaging",
      "building_id": "freeze",
      "x": 30,
      "y": 26,
      "width": 32,
      "depth": 12,
      "stage_ids": [
        "S08"
      ],
      "fixtures": []
    },
    {
      "id": "packs",
      "name": "급식·소매 포장재",
      "role": "warehouse",
      "building_id": "freeze",
      "x": 30,
      "y": 38,
      "width": 32,
      "depth": 10,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "dumpling-packs",
          "type": "pallet_rack",
          "x": 46,
          "y": 42,
          "width": 25,
          "depth": 5,
          "height": 4,
          "count": 12,
          "rows": 1,
          "columns": 12,
          "angle": 0,
          "label": "급식·소매 포장재"
        }
      ]
    },
    {
      "id": "cold-transfer",
      "name": "냉동 팔레트 전용 인계",
      "role": "circulation",
      "building_id": "cold-link",
      "x": 104,
      "y": 34,
      "width": 6,
      "depth": 8,
      "stage_ids": [],
      "fixtures": []
    },
    {
      "id": "cold-stock",
      "name": "냉동 만두 저장",
      "role": "cold_store",
      "building_id": "cold",
      "x": 110,
      "y": 26,
      "width": 20,
      "depth": 42,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "dumpling-frozen",
          "type": "cold_rack",
          "x": 120,
          "y": 51,
          "width": 14,
          "depth": 25,
          "height": 7,
          "count": 36,
          "rows": 9,
          "columns": 4,
          "angle": 0,
          "label": "냉동 만두 36팔레트"
        },
        {
          "id": "F15-robot-case-1",
          "type": "worktable",
          "x": 113.6,
          "y": 29,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        },
        {
          "id": "F15-robot-pallet-1",
          "type": "floor_pallets",
          "x": 117.89999999999999,
          "y": 30.5,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        },
        {
          "id": "F15-robot-case-2",
          "type": "worktable",
          "x": 123.4,
          "y": 29,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        },
        {
          "id": "F15-robot-pallet-2",
          "type": "floor_pallets",
          "x": 127.7,
          "y": 30.5,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        }
      ]
    },
    {
      "id": "qa",
      "name": "공정 품질·시료",
      "role": "laboratory",
      "building_id": "support",
      "x": 10,
      "y": 58,
      "width": 14,
      "depth": 14,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "qa-furniture",
          "type": "lab_bench",
          "x": 17.0,
          "y": 65.0,
          "width": 11,
          "depth": 7,
          "height": 1.4,
          "count": 3,
          "rows": 1,
          "columns": 3,
          "angle": 0,
          "label": "품질·공정 시료"
        }
      ]
    },
    {
      "id": "staff",
      "name": "작업복·작업기록",
      "role": "staff",
      "building_id": "support",
      "x": 10,
      "y": 42,
      "width": 14,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "staff-furniture",
          "type": "locker_bank",
          "x": 17.0,
          "y": 50.0,
          "width": 11,
          "depth": 7,
          "height": 1.4,
          "count": 8,
          "rows": 1,
          "columns": 8,
          "angle": 0,
          "label": "구역별 작업복"
        }
      ]
    },
    {
      "id": "plant",
      "name": "공장 열원·냉열",
      "role": "utility",
      "building_id": "support",
      "x": 10,
      "y": 28,
      "width": 14,
      "depth": 14,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "plant-furniture",
          "type": "chiller",
          "x": 17.0,
          "y": 35.0,
          "width": 11,
          "depth": 7,
          "height": 3,
          "count": 2,
          "rows": 1,
          "columns": 2,
          "angle": 0,
          "label": "냉열·공기 공급"
        }
      ]
    }
  ],
  "equipment": [
    {
      "stage_id": "S01",
      "index": 0,
      "x": 35,
      "y": 87,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 1,
      "x": 44,
      "y": 87,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 2,
      "x": 53,
      "y": 87,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 0,
      "x": 44,
      "y": 72,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 1,
      "x": 44,
      "y": 78,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 0,
      "x": 84,
      "y": 84,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 1,
      "x": 92,
      "y": 84,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 2,
      "x": 100,
      "y": 84,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 0,
      "x": 84,
      "y": 76,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 1,
      "x": 92,
      "y": 76,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 2,
      "x": 100,
      "y": 76,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 0,
      "x": 38,
      "y": 53,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 1,
      "x": 59,
      "y": 53,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 2,
      "x": 38,
      "y": 63,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 3,
      "x": 59,
      "y": 63,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 0,
      "x": 86,
      "y": 53,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 1,
      "x": 86,
      "y": 63,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 0,
      "x": 72,
      "y": 37,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 1,
      "x": 94,
      "y": 37,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 0,
      "x": 37,
      "y": 31,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 1,
      "x": 55,
      "y": 31,
      "angle": 0
    }
  ],
  "robots": [
    {
      "definition_index": 0,
      "instance_index": 0,
      "stage_id": "S05",
      "x": 44,
      "y": 53,
      "angle": 0,
      "task_station": "robot:0/0:transfer-belt",
      "task_point": [
        43.8,
        53,
        1.2575
      ],
      "task_points": [
        [
          43.8,
          53,
          1.2575
        ],
        [
          44.2,
          53,
          1.2575
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "robot:0/0:transfer-belt"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        -0.35,
        1.45,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          44,
          53,
          0
        ],
        "reason": "S05 특수 성형기 본체가 아닌 기존 S05→S06 이송 벨트의 제품 취출 위치에 네 모서리 프레임을 배치했다. 기존 벨트 상면1.2125m + 식품0.045m에 pad TCP1.2575m를 맞추며 독립 벨트를 생성하지 않는다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "transfer_route",
        "route_id": "F15-solid-S05-S06-0",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.2125,
        "food_sample_height_m": 0.045,
        "contact_world_z": 1.2575
      },
      "host_equipment": {
        "stage_id": "S05",
        "index": 0
      },
      "transfer_conveyor": false,
      "host_route_id": "F15-solid-S05-S06-0"
    },
    {
      "definition_index": 0,
      "instance_index": 1,
      "stage_id": "S05",
      "x": 44,
      "y": 63,
      "angle": 0,
      "task_station": "robot:0/1:transfer-belt",
      "task_point": [
        43.8,
        63,
        1.2575
      ],
      "task_points": [
        [
          43.8,
          63,
          1.2575
        ],
        [
          44.2,
          63,
          1.2575
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "robot:0/1:transfer-belt"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        -0.35,
        1.45,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          44,
          63,
          0
        ],
        "reason": "S05 특수 성형기 본체가 아닌 기존 S05→S06 이송 벨트의 제품 취출 위치에 네 모서리 프레임을 배치했다. 기존 벨트 상면1.2125m + 식품0.045m에 pad TCP1.2575m를 맞추며 독립 벨트를 생성하지 않는다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "transfer_route",
        "route_id": "F15-solid-S05-S06-2",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.2125,
        "food_sample_height_m": 0.045,
        "contact_world_z": 1.2575
      },
      "host_equipment": {
        "stage_id": "S05",
        "index": 2
      },
      "transfer_conveyor": false,
      "host_route_id": "F15-solid-S05-S06-2"
    },
    {
      "definition_index": 0,
      "instance_index": 2,
      "stage_id": "S05",
      "x": 65,
      "y": 63,
      "angle": 0,
      "task_station": "robot:0/2:transfer-belt",
      "task_point": [
        64.8,
        63,
        1.2575
      ],
      "task_points": [
        [
          64.8,
          63,
          1.2575
        ],
        [
          65.2,
          63,
          1.2575
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "robot:0/2:transfer-belt"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        -0.35,
        1.45,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          65,
          59,
          0
        ],
        "reason": "S05 특수 성형기 본체가 아닌 기존 S05→S06 이송 벨트의 제품 취출 위치에 네 모서리 프레임을 배치했다. 기존 벨트 상면1.2125m + 식품0.045m에 pad TCP1.2575m를 맞추며 독립 벨트를 생성하지 않는다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "transfer_route",
        "route_id": "F15-solid-S05-S06-3",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.2125,
        "food_sample_height_m": 0.045,
        "contact_world_z": 1.2575
      },
      "host_equipment": {
        "stage_id": "S05",
        "index": 3
      },
      "transfer_conveyor": false,
      "host_route_id": "F15-solid-S05-S06-3"
    },
    {
      "definition_index": 1,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 112.19999999999999,
      "y": 29,
      "angle": 0,
      "task_station": "F15-robot-case-1",
      "task_point": [
        113.19999999999999,
        29,
        1.18
      ],
      "task_points": [
        [
          113.19999999999999,
          29,
          1.18
        ],
        [
          113.8,
          29,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F15-robot-case-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          40,
          35,
          0
        ],
        "reason": "최종 포장 제품을 밀폐 카트로 받아 실제 트레이 상면에서 외포장 상자로 인계한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 1,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 122.0,
      "y": 29,
      "angle": 0,
      "task_station": "F15-robot-case-2",
      "task_point": [
        123.0,
        29,
        1.18
      ],
      "task_points": [
        [
          123.0,
          29,
          1.18
        ],
        [
          123.60000000000001,
          29,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F15-robot-case-2"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          54,
          35,
          0
        ],
        "reason": "최종 포장 제품을 밀폐 카트로 받아 실제 트레이 상면에서 외포장 상자로 인계한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 116.39999999999999,
      "y": 29,
      "angle": 0,
      "task_station": "F15-robot-pallet-1",
      "task_point": [
        113.8,
        29,
        1.35
      ],
      "task_points": [
        [
          113.8,
          29,
          1.35
        ],
        [
          117.64436,
          30.5,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F15-robot-case-1",
          "F15-robot-pallet-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          115,
          32,
          0
        ],
        "reason": "박스 인계대의 실제 상자 윗면에서 집어 인접 출하 팔레트의 실제 상자 위치로 적층한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 126.2,
      "y": 29,
      "angle": 0,
      "task_station": "F15-robot-pallet-2",
      "task_point": [
        123.60000000000001,
        29,
        1.35
      ],
      "task_points": [
        [
          123.60000000000001,
          29,
          1.35
        ],
        [
          127.44436,
          30.5,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F15-robot-case-2",
          "F15-robot-pallet-2"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          125,
          32,
          0
        ],
        "reason": "박스 인계대의 실제 상자 윗면에서 집어 인접 출하 팔레트의 실제 상자 위치로 적층한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 3,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 32,
      "y": 46,
      "angle": 0,
      "task_station": "급식 포장재·출하 토트"
    },
    {
      "definition_index": 3,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 59,
      "y": 46,
      "angle": 0,
      "task_station": "급식 포장재·출하 토트"
    },
    {
      "definition_index": 3,
      "instance_index": 2,
      "stage_id": "S08",
      "x": 109,
      "y": 40,
      "angle": 0,
      "task_station": "급식 포장재·출하 토트"
    }
  ],
  "logistics": [
    {
      "id": "F15-solid-S01-S02-0",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          37.9,
          87.0,
          0.2
        ],
        [
          37.73,
          87.0,
          0.2
        ],
        [
          37.73,
          80.73,
          0.2
        ],
        [
          36.27,
          80.73,
          0.2
        ],
        [
          36.27,
          72.55,
          0.2
        ],
        [
          36.1,
          72.55,
          0.2
        ],
        [
          36.1,
          72.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S01-S02-1",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          46.9,
          87.0,
          0.2
        ],
        [
          46.73,
          87.0,
          0.2
        ],
        [
          46.73,
          84.77,
          0.2
        ],
        [
          36.1,
          84.77,
          0.2
        ],
        [
          36.1,
          78.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S01-S02-2",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          55.9,
          87.0,
          0.2
        ],
        [
          55.73,
          87.0,
          0.2
        ],
        [
          55.73,
          84.77,
          0.2
        ],
        [
          36.1,
          84.77,
          0.2
        ],
        [
          36.1,
          78.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S02-S05-0",
      "kind": "conveyor",
      "from": "S02",
      "to": "S05",
      "points": [
        [
          51.0,
          72.0,
          1.12
        ],
        [
          51.6,
          72.0,
          1.12
        ],
        [
          51.56,
          72.0,
          1.12
        ],
        [
          51.56,
          69.44,
          1.12
        ],
        [
          33.4,
          69.44,
          1.12
        ],
        [
          33.4,
          53.0,
          1.12
        ],
        [
          34.0,
          53.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S02-S05-1",
      "kind": "conveyor",
      "from": "S02",
      "to": "S05",
      "points": [
        [
          51.0,
          78.0,
          1.12
        ],
        [
          51.6,
          78.0,
          1.12
        ],
        [
          54.4,
          78.0,
          1.12
        ],
        [
          54.4,
          53.0,
          1.12
        ],
        [
          55.0,
          53.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S02-S05-2",
      "kind": "conveyor",
      "from": "S02",
      "to": "S05",
      "points": [
        [
          51.0,
          78.0,
          1.12
        ],
        [
          51.6,
          78.0,
          1.12
        ],
        [
          51.56,
          78.0,
          1.12
        ],
        [
          51.56,
          75.44,
          1.12
        ],
        [
          33.4,
          75.44,
          1.12
        ],
        [
          33.4,
          63.0,
          1.12
        ],
        [
          34.0,
          63.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S02-S05-3",
      "kind": "conveyor",
      "from": "S02",
      "to": "S05",
      "points": [
        [
          51.0,
          78.0,
          1.12
        ],
        [
          51.6,
          78.0,
          1.12
        ],
        [
          54.4,
          78.0,
          1.12
        ],
        [
          54.4,
          63.0,
          1.12
        ],
        [
          55.0,
          63.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S03-S04-0",
      "kind": "pedestrian",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          87.4,
          84.0,
          0.2
        ],
        [
          87.23,
          84.0,
          0.2
        ],
        [
          87.23,
          81.77,
          0.2
        ],
        [
          81.1,
          81.77,
          0.2
        ],
        [
          81.1,
          76.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S03-S04-1",
      "kind": "pedestrian",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          95.4,
          84.0,
          0.2
        ],
        [
          95.23,
          84.0,
          0.2
        ],
        [
          95.23,
          81.77,
          0.2
        ],
        [
          89.1,
          81.77,
          0.2
        ],
        [
          89.1,
          76.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S03-S04-2",
      "kind": "pedestrian",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          103.4,
          84.0,
          0.2
        ],
        [
          103.23,
          84.0,
          0.2
        ],
        [
          103.23,
          81.77,
          0.2
        ],
        [
          97.1,
          81.77,
          0.2
        ],
        [
          97.1,
          76.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F15-solid-S04-S05-0",
      "kind": "pedestrian",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          86.9,
          76,
          0.2
        ],
        [
          86.9,
          70,
          0.2
        ],
        [
          81.5,
          70,
          0.2
        ],
        [
          81.5,
          66.8,
          0.2
        ],
        [
          64.5,
          66.8,
          0.2
        ],
        [
          64.5,
          58,
          0.2
        ],
        [
          33.1,
          58,
          0.2
        ],
        [
          33.1,
          53,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "소 배합실의 밀폐 원료 카트가 y=70 연결통로 중앙에서 서쪽으로 모이고 x=81.5의 직각 전이문을 지나 y=66.8 공정 북측 통로로 진입한다. 통로는 y=68 벽과 증자기 북측 사이에 두며 각 성형 셀 투입면으로 분기한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F15-solid-S04-S05-1",
      "kind": "pedestrian",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          94.9,
          76,
          0.2
        ],
        [
          94.9,
          70,
          0.2
        ],
        [
          81.5,
          70,
          0.2
        ],
        [
          81.5,
          66.8,
          0.2
        ],
        [
          54.1,
          66.8,
          0.2
        ],
        [
          54.1,
          53,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "소 배합실의 밀폐 원료 카트가 y=70 연결통로 중앙에서 서쪽으로 모이고 x=81.5의 직각 전이문을 지나 y=66.8 공정 북측 통로로 진입한다. 통로는 y=68 벽과 증자기 북측 사이에 두며 각 성형 셀 투입면으로 분기한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F15-solid-S04-S05-2",
      "kind": "pedestrian",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          102.9,
          76,
          0.2
        ],
        [
          102.9,
          70,
          0.2
        ],
        [
          81.5,
          70,
          0.2
        ],
        [
          81.5,
          66.8,
          0.2
        ],
        [
          33.1,
          66.8,
          0.2
        ],
        [
          33.1,
          63,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "소 배합실의 밀폐 원료 카트가 y=70 연결통로 중앙에서 서쪽으로 모이고 x=81.5의 직각 전이문을 지나 y=66.8 공정 북측 통로로 진입한다. 통로는 y=68 벽과 증자기 북측 사이에 두며 각 성형 셀 투입면으로 분기한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F15-solid-S04-S05-3",
      "kind": "pedestrian",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          102.9,
          76,
          0.2
        ],
        [
          102.9,
          70,
          0.2
        ],
        [
          81.5,
          70,
          0.2
        ],
        [
          81.5,
          66.8,
          0.2
        ],
        [
          54.1,
          66.8,
          0.2
        ],
        [
          54.1,
          63,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "소 배합실의 밀폐 원료 카트가 y=70 연결통로 중앙에서 서쪽으로 모이고 x=81.5의 직각 전이문을 지나 y=66.8 공정 북측 통로로 진입한다. 통로는 y=68 벽과 증자기 북측 사이에 두며 각 성형 셀 투입면으로 분기한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F15-solid-S05-S06-0",
      "kind": "conveyor",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          42.0,
          53.0,
          1.12
        ],
        [
          42.6,
          53.0,
          1.12
        ],
        [
          54.44,
          53.0,
          1.12
        ],
        [
          54.44,
          49.94,
          1.12
        ],
        [
          68.55,
          49.94,
          1.12
        ],
        [
          68.55,
          53.0,
          1.12
        ],
        [
          76.4,
          53.0,
          1.12
        ],
        [
          77.0,
          53.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S05-S06-1",
      "kind": "conveyor",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          63.0,
          53.0,
          1.12
        ],
        [
          63.6,
          53.0,
          1.12
        ],
        [
          76.4,
          53.0,
          1.12
        ],
        [
          76.4,
          63.0,
          1.12
        ],
        [
          77.0,
          63.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S05-S06-2",
      "kind": "conveyor",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          42.0,
          63.0,
          1.12
        ],
        [
          42.6,
          63.0,
          1.12
        ],
        [
          54.44,
          63.0,
          1.12
        ],
        [
          54.44,
          59.94,
          1.12
        ],
        [
          67.45,
          59.94,
          1.12
        ],
        [
          67.45,
          60.94,
          1.12
        ],
        [
          68.55,
          60.94,
          1.12
        ],
        [
          68.55,
          63.0,
          1.12
        ],
        [
          76.4,
          63.0,
          1.12
        ],
        [
          77.0,
          63.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S05-S06-3",
      "kind": "conveyor",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          63.0,
          63.0,
          1.12
        ],
        [
          63.6,
          63.0,
          1.12
        ],
        [
          76.4,
          63.0,
          1.12
        ],
        [
          77.0,
          63.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S06-S07-0",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          95.0,
          53.0,
          1.12
        ],
        [
          95.6,
          53.0,
          1.12
        ],
        [
          95.56,
          53.0,
          1.12
        ],
        [
          95.56,
          49.94,
          1.12
        ],
        [
          63.9,
          49.94,
          1.12
        ],
        [
          63.9,
          37.0,
          1.12
        ],
        [
          64.5,
          37.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S06-S07-1",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          95.0,
          63.0,
          1.12
        ],
        [
          95.6,
          63.0,
          1.12
        ],
        [
          95.56,
          63.0,
          1.12
        ],
        [
          95.56,
          49.94,
          1.12
        ],
        [
          85.9,
          49.94,
          1.12
        ],
        [
          85.9,
          37.0,
          1.12
        ],
        [
          86.5,
          37.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S07-S08-0",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          79.5,
          37.0,
          1.12
        ],
        [
          80.1,
          37.0,
          1.12
        ],
        [
          80.06,
          37.0,
          1.12
        ],
        [
          80.06,
          32.44,
          1.12
        ],
        [
          59.56,
          32.44,
          1.12
        ],
        [
          59.56,
          33.56,
          1.12
        ],
        [
          32.4,
          33.56,
          1.12
        ],
        [
          32.4,
          31.0,
          1.12
        ],
        [
          33.0,
          31.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-solid-S07-S08-1",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          101.5,
          37.0,
          1.12
        ],
        [
          102.1,
          37.0,
          1.12
        ],
        [
          102.06,
          37.0,
          1.12
        ],
        [
          102.06,
          32.44,
          1.12
        ],
        [
          59.56,
          32.44,
          1.12
        ],
        [
          59.56,
          33.56,
          1.12
        ],
        [
          50.4,
          33.56,
          1.12
        ],
        [
          50.4,
          31.0,
          1.12
        ],
        [
          51.0,
          31.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F15-staff-qa",
      "kind": "pedestrian",
      "from": "gate",
      "to": "qa",
      "points": [
        [
          76.5,
          3,
          0.2
        ],
        [
          76.5,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          30,
          0.2
        ],
        [
          8,
          60,
          0.2
        ],
        [
          11,
          60,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F15-staff-staff",
      "kind": "pedestrian",
      "from": "gate",
      "to": "staff",
      "points": [
        [
          76.5,
          3,
          0.2
        ],
        [
          76.5,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          30,
          0.2
        ],
        [
          8,
          44,
          0.2
        ],
        [
          11,
          44,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F15-staff-plant",
      "kind": "pedestrian",
      "from": "gate",
      "to": "plant",
      "points": [
        [
          76.5,
          3,
          0.2
        ],
        [
          76.5,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          30,
          0.2
        ],
        [
          11,
          30,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F15-dock-1-inbound",
      "kind": "pedestrian",
      "from": "raw-dock",
      "to": "S01",
      "points": [
        [
          30,
          86,
          0.2
        ],
        [
          32.1,
          86,
          0.2
        ],
        [
          32.1,
          87,
          0.2
        ]
      ],
      "width": 1.2,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "냉장·냉동품은 단열 밀폐 카트, 건식 원료·제품은 배치별 밀폐 위생 용기",
      "design_note": "피 원료 도크의 실제 좌표에서 투입 공정으로 연결하는 원료 인계 경로. 선반 예약 면적과 설비를 피한 서비스 통로를 사용한다.",
      "enclosure": {
        "width": 2.0,
        "height": 2.7,
        "type": "sealed_transfer_gallery"
      }
    },
    {
      "id": "F15-dock-2-inbound",
      "kind": "pedestrian",
      "from": "raw-dock",
      "to": "S03",
      "points": [
        [
          104,
          83,
          0.2
        ],
        [
          103.2,
          83,
          0.2
        ],
        [
          103.2,
          81.6,
          0.2
        ],
        [
          100,
          81.6,
          0.2
        ]
      ],
      "width": 1.2,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "냉장·냉동품은 단열 밀폐 카트, 건식 원료·제품은 배치별 밀폐 위생 용기",
      "design_note": "속 원료 도크의 실제 좌표에서 투입 공정으로 연결하는 원료 인계 경로. 선반 예약 면적과 설비를 피한 서비스 통로를 사용한다.",
      "enclosure": {
        "width": 2.0,
        "height": 2.7,
        "type": "sealed_transfer_gallery"
      }
    },
    {
      "id": "F15-dock-3-outbound",
      "kind": "pedestrian",
      "from": "S08",
      "to": "shipping-dock",
      "points": [
        [
          59.9,
          31,
          0.2
        ],
        [
          61,
          31,
          0.2
        ],
        [
          61,
          28,
          0.2
        ],
        [
          102.5,
          28,
          0.2
        ],
        [
          102.5,
          36,
          0.2
        ],
        [
          129,
          36,
          0.2
        ],
        [
          129,
          37,
          0.2
        ],
        [
          130,
          37,
          0.2
        ]
      ],
      "width": 1.2,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "냉장·냉동품은 단열 밀폐 카트, 건식 원료·제품은 배치별 밀폐 위생 용기",
      "design_note": "냉동 만두 출하 도크의 실제 좌표에서 최종 공정 출구를 잇는 제품 인계 경로. 선반 예약 면적과 설비를 피한 서비스 통로를 사용한다.",
      "enclosure": {
        "width": 2.0,
        "height": 2.7,
        "type": "sealed_transfer_gallery"
      }
    },
    {
      "id": "F15-dock-4-outbound",
      "kind": "pedestrian",
      "from": "S08",
      "to": "shipping-dock",
      "points": [
        [
          59.9,
          31,
          0.2
        ],
        [
          61,
          31,
          0.2
        ],
        [
          61,
          28,
          0.2
        ],
        [
          102.5,
          28,
          0.2
        ],
        [
          102.5,
          36,
          0.2
        ],
        [
          129,
          36,
          0.2
        ],
        [
          129,
          56,
          0.2
        ],
        [
          130,
          56,
          0.2
        ]
      ],
      "width": 1.2,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "냉장·냉동품은 단열 밀폐 카트, 건식 원료·제품은 배치별 밀폐 위생 용기",
      "design_note": "급식 만두 출하 도크의 실제 좌표에서 최종 공정 출구를 잇는 제품 인계 경로. 선반 예약 면적과 설비를 피한 서비스 통로를 사용한다.",
      "enclosure": {
        "width": 2.0,
        "height": 2.7,
        "type": "sealed_transfer_gallery"
      }
    },
    {
      "id": "F15-robot-access-F15-robot-case-1",
      "kind": "pedestrian",
      "from": "route:F15-dock-3-outbound",
      "to": "fixture:F15-robot-case-1",
      "points": [
        [
          113.6,
          36.0,
          0.2
        ],
        [
          113.6,
          30.3,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F15-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F15-dock-3-outbound",
        "world_xy": [
          113.6,
          36.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F15-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            113.6,
            36.0,
            0.2
          ],
          "route_point_world_xyz": [
            113.6,
            36.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F15-robot-access-F15-robot-pallet-1",
      "kind": "pedestrian",
      "from": "fixture:F15-robot-pallet-1",
      "to": "route:F15-dock-3-outbound",
      "points": [
        [
          117.9,
          31.650000000000002,
          0.2
        ],
        [
          117.9,
          36.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F15-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F15-dock-3-outbound",
        "world_xy": [
          117.9,
          36.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F15-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            117.9,
            36.0,
            0.2
          ],
          "route_point_world_xyz": [
            117.9,
            36.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F15-robot-access-F15-robot-case-2",
      "kind": "pedestrian",
      "from": "route:F15-dock-3-outbound",
      "to": "fixture:F15-robot-case-2",
      "points": [
        [
          123.4,
          36.0,
          0.2
        ],
        [
          123.4,
          30.3,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F15-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F15-dock-3-outbound",
        "world_xy": [
          123.4,
          36.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F15-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            123.4,
            36.0,
            0.2
          ],
          "route_point_world_xyz": [
            123.4,
            36.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F15-robot-access-F15-robot-pallet-2",
      "kind": "pedestrian",
      "from": "fixture:F15-robot-pallet-2",
      "to": "route:F15-dock-3-outbound",
      "points": [
        [
          127.7,
          31.650000000000002,
          0.2
        ],
        [
          127.7,
          36.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F15-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F15-dock-3-outbound",
        "world_xy": [
          127.7,
          36.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F15-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            127.7,
            36.0,
            0.2
          ],
          "route_point_world_xyz": [
            127.7,
            36.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    }
  ],
  "yard": {
    "roads": [
      {
        "points": [
          [
            4,
            8
          ],
          [
            145,
            8
          ],
          [
            145,
            103
          ],
          [
            4,
            103
          ],
          [
            4,
            8
          ]
        ],
        "width": 5
      }
    ],
    "docks": [
      {
        "x": 30,
        "y": 86,
        "angle": 4.71238898038469,
        "building_id": "wrapper",
        "role": "피 원료"
      },
      {
        "x": 104,
        "y": 83,
        "angle": 1.5707963267948966,
        "building_id": "filling",
        "role": "속 원료"
      },
      {
        "x": 130,
        "y": 37,
        "angle": 1.5707963267948966,
        "building_id": "cold",
        "role": "냉동 만두 출하"
      },
      {
        "x": 130,
        "y": 56,
        "angle": 1.5707963267948966,
        "building_id": "cold",
        "role": "급식 만두 출하"
      }
    ],
    "parking": [
      {
        "x": 30,
        "y": 17,
        "angle": 0,
        "count": 31
      }
    ],
    "gate": {
      "x": 76.5,
      "y": 3
    },
    "fence": true
  },
  "landmarks": [
    "북쪽 두 원료 입구",
    "4성형 셀 톱날 채광",
    "작은 냉장 소 배합 지선",
    "분리된 배럴 냉동고",
    "폭6m 냉동 연결실"
  ],
  "density": {
    "intent": "공정별 생산 셀, 원료·제품·포장재 재고, 현장 유틸리티와 작업자 공간을 서로 다른 면적으로 직접 설계하였다. 남는 공간을 무작위 상자로 채우지 않고 명시된 용도와 정비 통로를 유지한다.",
    "production_area_m2": 3844,
    "storage_area_m2": 1160,
    "support_area_m2": 616,
    "circulation_area_m2": 144
  },
  "compact_campus_revision": 3,
  "production_density_review": [
    {
      "basis": "Explicitly reduced building and room dimensions; no residual space generator.",
      "status": "spatial_preflight_required"
    }
  ],
  "openings": [
    {
      "id": "door-dough",
      "building_id": "wrapper",
      "zone_id": "dough",
      "x": 44.0,
      "y": 82,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "dough",
        "service_access"
      ]
    },
    {
      "id": "door-sheet",
      "building_id": "wrapper",
      "zone_id": "sheet",
      "x": 44.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "sheet",
        "service_access"
      ]
    },
    {
      "id": "door-trim",
      "building_id": "filling",
      "zone_id": "trim",
      "x": 92.0,
      "y": 80,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "trim",
        "service_access"
      ]
    },
    {
      "id": "door-mix",
      "building_id": "filling",
      "zone_id": "mix",
      "x": 92.0,
      "y": 72,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "mix",
        "service_access"
      ]
    },
    {
      "id": "door-filling-transfer",
      "building_id": "filling-link",
      "zone_id": "filling-transfer",
      "x": 92.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "filling-transfer",
        "service_access"
      ]
    },
    {
      "id": "door-form-zone",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 49.0,
      "y": 48,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "form-zone",
        "service_access"
      ]
    },
    {
      "id": "door-steam",
      "building_id": "form",
      "zone_id": "steam",
      "x": 86.0,
      "y": 48,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "steam",
        "service_access"
      ]
    },
    {
      "id": "door-tunnel",
      "building_id": "freeze",
      "zone_id": "tunnel",
      "x": 83.0,
      "y": 26,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "tunnel",
        "service_access"
      ]
    },
    {
      "id": "door-pack",
      "building_id": "freeze",
      "zone_id": "pack",
      "x": 46.0,
      "y": 26,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "pack",
        "service_access"
      ]
    },
    {
      "id": "door-packs",
      "building_id": "freeze",
      "zone_id": "packs",
      "x": 46.0,
      "y": 38,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "packs",
        "service_access"
      ]
    },
    {
      "id": "door-cold-transfer",
      "building_id": "cold-link",
      "zone_id": "cold-transfer",
      "x": 107.0,
      "y": 34,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "cold-transfer",
        "service_access"
      ]
    },
    {
      "id": "door-cold-stock",
      "building_id": "cold",
      "zone_id": "cold-stock",
      "x": 120.0,
      "y": 26,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "cold-stock",
        "service_access"
      ]
    },
    {
      "id": "door-qa",
      "building_id": "support",
      "zone_id": "qa",
      "x": 17.0,
      "y": 58,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "qa",
        "service_access"
      ]
    },
    {
      "id": "door-staff",
      "building_id": "support",
      "zone_id": "staff",
      "x": 17.0,
      "y": 42,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "staff",
        "service_access"
      ]
    },
    {
      "id": "door-plant",
      "building_id": "support",
      "zone_id": "plant",
      "x": 17.0,
      "y": 28,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "plant",
        "service_access"
      ]
    },
    {
      "id": "transfer-F15-solid-S01-S02-0-0",
      "building_id": "wrapper",
      "zone_id": "dough",
      "x": 37.73,
      "y": 82.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S01",
        "S02"
      ]
    },
    {
      "id": "transfer-F15-solid-S01-S02-1-0",
      "building_id": "wrapper",
      "zone_id": "dough",
      "x": 36.1,
      "y": 82.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S01",
        "S02"
      ]
    },
    {
      "id": "transfer-F15-solid-S02-S05-0-0",
      "building_id": "wrapper",
      "zone_id": "sheet",
      "x": 33.4,
      "y": 68.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S02",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S02-S05-1-0",
      "building_id": "wrapper",
      "zone_id": "sheet",
      "x": 54.4,
      "y": 68.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S02",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S03-S04-0-0",
      "building_id": "filling",
      "zone_id": "trim",
      "x": 81.1,
      "y": 80.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S03",
        "S04"
      ]
    },
    {
      "id": "transfer-F15-solid-S03-S04-1-0",
      "building_id": "filling",
      "zone_id": "trim",
      "x": 89.1,
      "y": 80.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S03",
        "S04"
      ]
    },
    {
      "id": "transfer-F15-solid-S03-S04-2-0",
      "building_id": "filling",
      "zone_id": "trim",
      "x": 97.1,
      "y": 80.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S03",
        "S04"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-0-0",
      "building_id": "filling",
      "zone_id": "mix",
      "x": 86.9,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-0-1",
      "building_id": "filling-link",
      "zone_id": "filling-transfer",
      "x": 80.6,
      "y": 68.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-0-2",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 68.0,
      "y": 67.4,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-1-0",
      "building_id": "filling",
      "zone_id": "mix",
      "x": 94.9,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-2-0",
      "building_id": "filling",
      "zone_id": "mix",
      "x": 102.73,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S04-S05-3-0",
      "building_id": "filling",
      "zone_id": "mix",
      "x": 102.9,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S04",
        "S05"
      ]
    },
    {
      "id": "transfer-F15-solid-S05-S06-0-0",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 68.0,
      "y": 49.94,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F15-solid-S05-S06-1-0",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 68.0,
      "y": 53.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F15-solid-S05-S06-2-0",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 68.0,
      "y": 60.94,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F15-solid-S05-S06-3-0",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 68.0,
      "y": 63.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F15-solid-S06-S07-0-1",
      "building_id": "form",
      "zone_id": "form-zone",
      "x": 63.9,
      "y": 48.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F15-solid-S06-S07-1-0",
      "building_id": "form",
      "zone_id": "steam",
      "x": 85.9,
      "y": 48.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F15-solid-S07-S08-0-0",
      "building_id": "freeze",
      "zone_id": "tunnel",
      "x": 62.0,
      "y": 32.44,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "route-r1-zone-sheet-36",
      "building_id": "wrapper",
      "x": 37.73,
      "y": 82.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S01",
        "S02"
      ],
      "route_ids": [
        "F15-solid-S01-S02-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "sheet"
    },
    {
      "id": "route-r1-zone-sheet-37",
      "building_id": "wrapper",
      "x": 36.1,
      "y": 82.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S01",
        "S02"
      ],
      "route_ids": [
        "F15-solid-S01-S02-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "sheet"
    },
    {
      "id": "route-r1-building-wrapper-38",
      "building_id": "wrapper",
      "x": 33.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-form-39",
      "building_id": "form",
      "x": 33.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-form-zone-40",
      "building_id": "form",
      "x": 33.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "form-zone"
    },
    {
      "id": "route-r1-building-wrapper-41",
      "building_id": "wrapper",
      "x": 54.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-form-42",
      "building_id": "form",
      "x": 54.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-form-zone-43",
      "building_id": "form",
      "x": 54.4,
      "y": 68.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S02",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S02-S05-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "form-zone"
    },
    {
      "id": "route-r1-zone-mix-44",
      "building_id": "filling",
      "x": 81.1,
      "y": 80.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S03",
        "S04"
      ],
      "route_ids": [
        "F15-solid-S03-S04-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "mix"
    },
    {
      "id": "route-r1-zone-mix-45",
      "building_id": "filling",
      "x": 89.1,
      "y": 80.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S03",
        "S04"
      ],
      "route_ids": [
        "F15-solid-S03-S04-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "mix"
    },
    {
      "id": "route-r1-building-filling-46",
      "building_id": "filling",
      "x": 104.0,
      "y": 84.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S03",
        "S04"
      ],
      "route_ids": [
        "F15-solid-S03-S04-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-trim-47",
      "building_id": "filling",
      "x": 104.0,
      "y": 84.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S03",
        "S04"
      ],
      "route_ids": [
        "F15-solid-S03-S04-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "trim"
    },
    {
      "id": "route-r1-zone-mix-48",
      "building_id": "filling",
      "x": 97.1,
      "y": 80.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S03",
        "S04"
      ],
      "route_ids": [
        "F15-solid-S03-S04-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "mix"
    },
    {
      "id": "route-r1-building-filling-49",
      "building_id": "filling",
      "x": 86.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-filling-link-50",
      "building_id": "filling-link",
      "x": 81.5,
      "y": 68.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-filling-link-51",
      "building_id": "filling-link",
      "x": 86.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-form-52",
      "building_id": "form",
      "x": 81.5,
      "y": 68.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-form-zone-53",
      "building_id": "form",
      "x": 68.0,
      "y": 66.8,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "form-zone"
    },
    {
      "id": "route-r1-zone-steam-54",
      "building_id": "form",
      "x": 81.5,
      "y": 68.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-steam-55",
      "building_id": "form",
      "x": 68.0,
      "y": 66.8,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-building-filling-56",
      "building_id": "filling",
      "x": 94.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-filling-link-57",
      "building_id": "filling-link",
      "x": 94.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-filling-58",
      "building_id": "filling",
      "x": 102.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-filling-link-59",
      "building_id": "filling-link",
      "x": 102.9,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F15-solid-S04-S05-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-steam-60",
      "building_id": "form",
      "x": 68.0,
      "y": 49.94,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F15-solid-S05-S06-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-steam-61",
      "building_id": "form",
      "x": 68.0,
      "y": 53.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F15-solid-S05-S06-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-steam-62",
      "building_id": "form",
      "x": 68.0,
      "y": 60.94,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F15-solid-S05-S06-2"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-steam-63",
      "building_id": "form",
      "x": 68.0,
      "y": 63.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F15-solid-S05-S06-3"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-building-form-64",
      "building_id": "form",
      "x": 63.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-freeze-65",
      "building_id": "freeze",
      "x": 63.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-tunnel-66",
      "building_id": "freeze",
      "x": 63.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "tunnel"
    },
    {
      "id": "route-r1-building-form-67",
      "building_id": "form",
      "x": 85.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-freeze-68",
      "building_id": "freeze",
      "x": 85.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-tunnel-69",
      "building_id": "freeze",
      "x": 85.9,
      "y": 48.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F15-solid-S06-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "tunnel"
    },
    {
      "id": "route-r1-building-support-70",
      "building_id": "support",
      "x": 10.0,
      "y": 60.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "qa"
      ],
      "route_ids": [
        "F15-staff-qa"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-qa-71",
      "building_id": "support",
      "x": 10.0,
      "y": 60.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "qa"
      ],
      "route_ids": [
        "F15-staff-qa"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "qa"
    },
    {
      "id": "route-r1-building-support-72",
      "building_id": "support",
      "x": 10.0,
      "y": 44.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff"
      ],
      "route_ids": [
        "F15-staff-staff"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-staff-73",
      "building_id": "support",
      "x": 10.0,
      "y": 44.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff"
      ],
      "route_ids": [
        "F15-staff-staff"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "staff"
    },
    {
      "id": "route-r1-building-support-74",
      "building_id": "support",
      "x": 10.0,
      "y": 30.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "plant"
      ],
      "route_ids": [
        "F15-staff-plant"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-plant-75",
      "building_id": "support",
      "x": 10.0,
      "y": 30.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "plant"
      ],
      "route_ids": [
        "F15-staff-plant"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "plant"
    },
    {
      "id": "route-r1-building-wrapper-76",
      "building_id": "wrapper",
      "x": 30.0,
      "y": 86.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F15-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-dough-77",
      "building_id": "wrapper",
      "x": 30.0,
      "y": 86.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F15-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "dough"
    },
    {
      "id": "route-r1-building-filling-78",
      "building_id": "filling",
      "x": 104.0,
      "y": 83.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S03"
      ],
      "route_ids": [
        "F15-dock-2-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-trim-79",
      "building_id": "filling",
      "x": 104.0,
      "y": 83.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S03"
      ],
      "route_ids": [
        "F15-dock-2-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "trim"
    },
    {
      "id": "route-r1-building-freeze-80",
      "building_id": "freeze",
      "x": 104.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-cold-link-81",
      "building_id": "cold-link",
      "x": 110.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-cold-link-82",
      "building_id": "cold-link",
      "x": 104.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-cold-83",
      "building_id": "cold",
      "x": 130.0,
      "y": 37.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-cold-84",
      "building_id": "cold",
      "x": 110.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-tunnel-85",
      "building_id": "freeze",
      "x": 104.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "tunnel"
    },
    {
      "id": "route-r1-zone-tunnel-86",
      "building_id": "freeze",
      "x": 62.0,
      "y": 28.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "tunnel"
    },
    {
      "id": "route-r1-zone-cold-stock-87",
      "building_id": "cold",
      "x": 130.0,
      "y": 37.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cold-stock"
    },
    {
      "id": "route-r1-zone-cold-stock-88",
      "building_id": "cold",
      "x": 110.0,
      "y": 36.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cold-stock"
    },
    {
      "id": "route-r1-building-cold-89",
      "building_id": "cold",
      "x": 130.0,
      "y": 56.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-4-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-cold-stock-90",
      "building_id": "cold",
      "x": 130.0,
      "y": 56.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F15-dock-4-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cold-stock"
    }
  ],
  "connection_review": {
    "counts": {
      "declared_process_edges": 7,
      "wet_edges_classified": 0,
      "wet_edges_routed": 0,
      "graph_only_edges": 7,
      "unresolved_edges": 0
    },
    "unresolved": [],
    "limitations": [
      "Synthetic product ports require equipment-level visual review.",
      "Pipe pressure drop, cleanability, thermal expansion and pump sizing are not simulated.",
      "Cutaway room crossings are not validated sealed hygiene penetrations.",
      "Dry or unsupported material transfers remain graph-only; no invented floor-centre conveyors."
    ],
    "dry_connections": [
      {
        "source": "S01",
        "target": "S02",
        "index": 0,
        "method": "cart"
      },
      {
        "source": "S01",
        "target": "S02",
        "index": 1,
        "method": "cart"
      },
      {
        "source": "S01",
        "target": "S02",
        "index": 2,
        "method": "cart"
      },
      {
        "source": "S02",
        "target": "S05",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S02",
        "target": "S05",
        "index": 1,
        "method": "conveyor"
      },
      {
        "source": "S02",
        "target": "S05",
        "index": 2,
        "method": "conveyor"
      },
      {
        "source": "S02",
        "target": "S05",
        "index": 3,
        "method": "conveyor"
      },
      {
        "source": "S03",
        "target": "S04",
        "index": 0,
        "method": "cart"
      },
      {
        "source": "S03",
        "target": "S04",
        "index": 1,
        "method": "cart"
      },
      {
        "source": "S03",
        "target": "S04",
        "index": 2,
        "method": "cart"
      },
      {
        "source": "S04",
        "target": "S05",
        "index": 0,
        "method": "cart"
      },
      {
        "source": "S04",
        "target": "S05",
        "index": 1,
        "method": "cart"
      },
      {
        "source": "S04",
        "target": "S05",
        "index": 2,
        "method": "cart"
      },
      {
        "source": "S04",
        "target": "S05",
        "index": 3,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 1,
        "method": "conveyor"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 2,
        "method": "conveyor"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 3,
        "method": "conveyor"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 1,
        "method": "conveyor"
      },
      {
        "source": "S07",
        "target": "S08",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S07",
        "target": "S08",
        "index": 1,
        "method": "conveyor"
      }
    ],
    "dry_unresolved": [],
    "world_base_correction": {
      "equipment_base_z_m": 0.28,
      "legacy_planner_base_z_m": 0.2,
      "riser_endpoints_adjusted_m": 0.08,
      "scope": "일부 공정 노즐과 라이저의 낮은 수평 연결부. 고소 주 배관 높이는 유지.",
      "acceptance": "실제 부품 형상 및 노즐 기능 검수는 별도"
    }
  },
  "routing_revision": 1,
  "routing_design_note": "공정·입출하 제품 카트 14개 경로, 직원 보행 3개 경로를 구별한다. 직원 경로는 실제 정문에서 지원동 각 부서의 남측 접근 공간까지 이어진다. 외벽과 부서벽은 동일 좌표에서도 소유벽별 개구부를 가진다. 관통구는 통과 물체에 필요한 국부 폭으로만 만들며, 고소 배관 0개 관통구에는 sill_height와 실제 구멍 높이를 명시해 위아래 벽체를 보존한다. 설비·로봇·기물·건물의 설치 좌표와 기존 ID는 이 수정에서 변경하지 않았다.",
  "robot_station_revision": 1,
  "robot_station_review": {
    "status": "input_authored_pending_render",
    "basis": "actual generated fixture/contact geometry, base/support primitive checks and retained process routes",
    "robots": [
      {
        "robot": "0/0",
        "stage_id": "S05",
        "position": [
          44,
          53,
          0.28
        ],
        "task_points": [
          [
            43.8,
            53,
            1.2575
          ],
          [
            44.2,
            53,
            1.2575
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/0:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          44,
          53,
          0
        ]
      },
      {
        "robot": "0/1",
        "stage_id": "S05",
        "position": [
          44,
          63,
          0.28
        ],
        "task_points": [
          [
            43.8,
            63,
            1.2575
          ],
          [
            44.2,
            63,
            1.2575
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/1:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          44,
          63,
          0
        ]
      },
      {
        "robot": "0/2",
        "stage_id": "S05",
        "position": [
          65,
          63,
          0.28
        ],
        "task_points": [
          [
            64.8,
            63,
            1.2575
          ],
          [
            65.2,
            63,
            1.2575
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/2:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          65,
          59,
          0
        ]
      },
      {
        "robot": "1/0",
        "stage_id": "S08",
        "position": [
          112.19999999999999,
          29,
          0.28
        ],
        "task_points": [
          [
            113.19999999999999,
            29,
            1.18
          ],
          [
            113.8,
            29,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F15-robot-case-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          40,
          35,
          0
        ]
      },
      {
        "robot": "1/1",
        "stage_id": "S08",
        "position": [
          122.0,
          29,
          0.28
        ],
        "task_points": [
          [
            123.0,
            29,
            1.18
          ],
          [
            123.60000000000001,
            29,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F15-robot-case-2"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          54,
          35,
          0
        ]
      },
      {
        "robot": "2/0",
        "stage_id": "S08",
        "position": [
          116.39999999999999,
          29,
          0.28
        ],
        "task_points": [
          [
            113.8,
            29,
            1.35
          ],
          [
            117.64436,
            30.5,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F15-robot-case-1",
            "F15-robot-pallet-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          115,
          32,
          0
        ]
      },
      {
        "robot": "2/1",
        "stage_id": "S08",
        "position": [
          126.2,
          29,
          0.28
        ],
        "task_points": [
          [
            123.60000000000001,
            29,
            1.35
          ],
          [
            127.44436,
            30.5,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F15-robot-case-2",
            "F15-robot-pallet-2"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          125,
          32,
          0
        ]
      }
    ]
  }
}
