{
  "factory_id": "F04",
  "design_revision": 2,
  "design_story": "작은 액상 믹스동 아래로 스틱·컵 두 지선을 나누고, 두 지선의 북쪽에 공유 경화터널을 배치한 아이스크림 사업장이다. 생산실 동쪽의 720㎡ 냉동고만 높게 세워 낮은 믹스 지붕과 대비시킨다. 냉동 포장은 냉동고 남쪽에 바로 붙어 실온 이동 거리가 짧다. 분말·콘·스틱 재고는 작은 별도 자재실에 제한하며 에이징 탱크 주변을 창고로 쓰지 않는다.",
  "site": {
    "width": 129,
    "depth": 106
  },
  "buildings": [
    {
      "id": "mixhall",
      "name": "믹스·에이징·연속동결",
      "role": "production",
      "polygon": [
        [
          28,
          68
        ],
        [
          84,
          68
        ],
        [
          84,
          86
        ],
        [
          28,
          86
        ]
      ],
      "height": 11,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.82,
          0.86,
          0.82
        ],
        "accent": [
          0.15,
          0.49,
          0.6
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "forming",
      "name": "스틱·컵·경화 터널동",
      "role": "production",
      "polygon": [
        [
          28,
          38
        ],
        [
          84,
          38
        ],
        [
          84,
          68
        ],
        [
          28,
          68
        ]
      ],
      "height": 9,
      "roof": {
        "type": "shed",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.84,
          0.89,
          0.87
        ],
        "accent": [
          0.15,
          0.49,
          0.6
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "frozen",
      "name": "포장·고층 냉동동",
      "role": "production",
      "polygon": [
        [
          84,
          38
        ],
        [
          108,
          38
        ],
        [
          108,
          86
        ],
        [
          84,
          86
        ]
      ],
      "height": 17,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.72,
          0.84,
          0.87
        ],
        "accent": [
          0.15,
          0.49,
          0.6
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "support",
      "name": "분말·검사·냉열 별동",
      "role": "office",
      "polygon": [
        [
          10,
          40
        ],
        [
          22,
          40
        ],
        [
          22,
          82
        ],
        [
          10,
          82
        ]
      ],
      "height": 7,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.69,
          0.74,
          0.66
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "admin",
      "name": "직원·관리동",
      "role": "office",
      "polygon": [
        [
          10,
          18
        ],
        [
          30,
          18
        ],
        [
          30,
          34
        ],
        [
          10,
          34
        ]
      ],
      "height": 6,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.79,
          0.77,
          0.65
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "brick",
        "window_band_height": 3.7
      }
    }
  ],
  "zones": [
    {
      "id": "liquid",
      "name": "분말·유지 믹스 열처리",
      "role": "process",
      "building_id": "mixhall",
      "x": 28,
      "y": 68,
      "width": 24,
      "depth": 18,
      "stage_ids": [
        "S01",
        "S02"
      ],
      "fixtures": []
    },
    {
      "id": "aging",
      "name": "에이징 탱크",
      "role": "process",
      "building_id": "mixhall",
      "x": 52,
      "y": 68,
      "width": 18,
      "depth": 18,
      "stage_ids": [
        "S03"
      ],
      "fixtures": []
    },
    {
      "id": "aeration",
      "name": "연속 동결·공기 혼합",
      "role": "process",
      "building_id": "mixhall",
      "x": 70,
      "y": 68,
      "width": 14,
      "depth": 18,
      "stage_ids": [
        "S04"
      ],
      "fixtures": []
    },
    {
      "id": "stick",
      "name": "스틱 성형",
      "role": "process",
      "building_id": "forming",
      "x": 28,
      "y": 38,
      "width": 28,
      "depth": 16,
      "stage_ids": [
        "S05"
      ],
      "fixtures": []
    },
    {
      "id": "cup",
      "name": "컵 충전",
      "role": "process",
      "building_id": "forming",
      "x": 56,
      "y": 38,
      "width": 28,
      "depth": 16,
      "stage_ids": [
        "S06"
      ],
      "fixtures": []
    },
    {
      "id": "hardening",
      "name": "공유 경화터널",
      "role": "process",
      "building_id": "forming",
      "x": 28,
      "y": 54,
      "width": 56,
      "depth": 14,
      "stage_ids": [
        "S07"
      ],
      "fixtures": []
    },
    {
      "id": "packing",
      "name": "냉동 제품 포장",
      "role": "packaging",
      "building_id": "frozen",
      "x": 84,
      "y": 38,
      "width": 24,
      "depth": 18,
      "stage_ids": [
        "S08"
      ],
      "fixtures": []
    },
    {
      "id": "frozen-stock",
      "name": "완제품 냉동 저장",
      "role": "cold_store",
      "building_id": "frozen",
      "x": 84,
      "y": 56,
      "width": 24,
      "depth": 30,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "frozen-racks",
          "type": "cold_rack",
          "x": 96,
          "y": 73,
          "width": 17,
          "depth": 20,
          "height": 7,
          "count": 36,
          "rows": 6,
          "columns": 6,
          "angle": 0,
          "label": "36개 냉동 팔레트 위치"
        },
        {
          "id": "F04-robot-case-1",
          "type": "worktable",
          "x": 89.4,
          "y": 58.5,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        },
        {
          "id": "F04-robot-pallet-1",
          "type": "floor_pallets",
          "x": 93.7,
          "y": 60,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        },
        {
          "id": "F04-robot-case-2",
          "type": "worktable",
          "x": 101,
          "y": 58.5,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        },
        {
          "id": "F04-robot-pallet-2",
          "type": "floor_pallets",
          "x": 105.3,
          "y": 60,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        }
      ]
    },
    {
      "id": "powder",
      "name": "분말·스틱·콘 자재",
      "role": "warehouse",
      "building_id": "support",
      "x": 10,
      "y": 68,
      "width": 12,
      "depth": 14,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "powder-furniture",
          "type": "bin_rack",
          "x": 16.0,
          "y": 75.0,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 8,
          "rows": 1,
          "columns": 8,
          "angle": 0,
          "label": "분말·콘·스틱 포장"
        }
      ]
    },
    {
      "id": "lab",
      "name": "믹스·오버런 검사",
      "role": "laboratory",
      "building_id": "support",
      "x": 10,
      "y": 56,
      "width": 12,
      "depth": 12,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "lab-furniture",
          "type": "lab_bench",
          "x": 16.0,
          "y": 62.0,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 2,
          "rows": 1,
          "columns": 2,
          "angle": 0,
          "label": "믹스·오버런 시료"
        }
      ]
    },
    {
      "id": "plant",
      "name": "냉동기·CIP",
      "role": "utility",
      "building_id": "support",
      "x": 10,
      "y": 40,
      "width": 12,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "plant-furniture",
          "type": "chiller",
          "x": 16.0,
          "y": 48.0,
          "width": 9,
          "depth": 7,
          "height": 3,
          "count": 2,
          "rows": 1,
          "columns": 2,
          "angle": 0,
          "label": "저온 브라인 냉동기"
        }
      ]
    },
    {
      "id": "admin-room",
      "name": "관리·휴게",
      "role": "office",
      "building_id": "admin",
      "x": 10,
      "y": 18,
      "width": 10,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "admin-room-furniture",
          "type": "office_desks",
          "x": 15.0,
          "y": 26.0,
          "width": 7,
          "depth": 7,
          "height": 1.4,
          "count": 3,
          "rows": 1,
          "columns": 3,
          "angle": 0,
          "label": "생산 계획"
        }
      ]
    },
    {
      "id": "staff",
      "name": "작업복·위생",
      "role": "staff",
      "building_id": "admin",
      "x": 20,
      "y": 18,
      "width": 10,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "staff-furniture",
          "type": "locker_bank",
          "x": 25.0,
          "y": 26.0,
          "width": 7,
          "depth": 7,
          "height": 1.4,
          "count": 8,
          "rows": 1,
          "columns": 8,
          "angle": 0,
          "label": "작업복"
        }
      ]
    }
  ],
  "equipment": [
    {
      "stage_id": "S01",
      "index": 0,
      "x": 32,
      "y": 72,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 1,
      "x": 39,
      "y": 72,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 2,
      "x": 47,
      "y": 72,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 0,
      "x": 34,
      "y": 80,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 1,
      "x": 46,
      "y": 80,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 0,
      "x": 55.5,
      "y": 73,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 1,
      "x": 61,
      "y": 73,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 2,
      "x": 66.5,
      "y": 73,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 3,
      "x": 55.5,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 4,
      "x": 61,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 5,
      "x": 66.5,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 0,
      "x": 77,
      "y": 73,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 1,
      "x": 77,
      "y": 81,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 0,
      "x": 35,
      "y": 44,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 1,
      "x": 49,
      "y": 44,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 0,
      "x": 63,
      "y": 45,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 1,
      "x": 77,
      "y": 45,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 0,
      "x": 41,
      "y": 61,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 1,
      "x": 69,
      "y": 61,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 0,
      "x": 90,
      "y": 43,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 1,
      "x": 102,
      "y": 43,
      "angle": 0
    }
  ],
  "robots": [
    {
      "definition_index": 0,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 88,
      "y": 51,
      "angle": 0,
      "task_station": "robot:0/0:transfer-belt",
      "task_point": [
        87.8,
        51,
        1.22
      ],
      "task_points": [
        [
          87.8,
          51,
          1.22
        ],
        [
          88.2,
          51,
          1.22
        ]
      ],
      "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": [
          88,
          51,
          0
        ],
        "reason": "실제 제품 벨트의 두 식품 상면을 흡착 TCP로 지정한다. 네 모서리 지지발은 설비에서 이격하며 중앙 바닥 베이스는 없다. 기존 공정 제품선에서 밀폐 카트로 로봇 벨트 투입면에 공급하는 접근 경로를 따로 명시한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "self",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.1725,
        "food_sample_height_m": 0.0475,
        "contact_world_z": 1.22
      },
      "supply_route_id": "F04-robot-access-F04-delta-0-0-belt",
      "transfer_port": {
        "id": "manual-food-belt-infeed",
        "interface": "manual_closed_cart_to_belt",
        "access_point_world_xyz": [
          85.45,
          51,
          0.2
        ],
        "contact_point_world_xyz": [
          86.0,
          51.0,
          1.1725
        ],
        "geometry_basis": "4m x 1.1m Delta transfer belt edge; actual top world z .28 + .8 + .07 + .0225",
        "manual_horizontal_handoff_m": 0.55
      }
    },
    {
      "definition_index": 0,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 94,
      "y": 51,
      "angle": 0,
      "task_station": "robot:0/1:transfer-belt",
      "task_point": [
        93.8,
        51,
        1.22
      ],
      "task_points": [
        [
          93.8,
          51,
          1.22
        ],
        [
          94.2,
          51,
          1.22
        ]
      ],
      "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": [
          94,
          51,
          0
        ],
        "reason": "실제 제품 벨트의 두 식품 상면을 흡착 TCP로 지정한다. 네 모서리 지지발은 설비에서 이격하며 중앙 바닥 베이스는 없다. 기존 공정 제품선에서 밀폐 카트로 로봇 벨트 투입면에 공급하는 접근 경로를 따로 명시한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "self",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.1725,
        "food_sample_height_m": 0.0475,
        "contact_world_z": 1.22
      },
      "supply_route_id": "F04-robot-access-F04-delta-0-1-belt",
      "transfer_port": {
        "id": "manual-food-belt-infeed",
        "interface": "manual_closed_cart_to_belt",
        "access_point_world_xyz": [
          96.55,
          51,
          0.2
        ],
        "contact_point_world_xyz": [
          96.0,
          51.0,
          1.1725
        ],
        "geometry_basis": "4m x 1.1m Delta transfer belt edge; actual top world z .28 + .8 + .07 + .0225",
        "manual_horizontal_handoff_m": 0.55
      }
    },
    {
      "definition_index": 0,
      "instance_index": 2,
      "stage_id": "S08",
      "x": 101,
      "y": 51,
      "angle": 0,
      "task_station": "robot:0/2:transfer-belt",
      "task_point": [
        100.8,
        51,
        1.22
      ],
      "task_points": [
        [
          100.8,
          51,
          1.22
        ],
        [
          101.2,
          51,
          1.22
        ]
      ],
      "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": [
          101,
          51,
          0
        ],
        "reason": "실제 제품 벨트의 두 식품 상면을 흡착 TCP로 지정한다. 네 모서리 지지발은 설비에서 이격하며 중앙 바닥 베이스는 없다. 기존 공정 제품선에서 밀폐 카트로 로봇 벨트 투입면에 공급하는 접근 경로를 따로 명시한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "task_surface": {
        "asset": "self",
        "primitive": "Modular belt",
        "belt_top_world_z": 1.1725,
        "food_sample_height_m": 0.0475,
        "contact_world_z": 1.22
      },
      "supply_route_id": "F04-robot-access-F04-delta-0-2-belt",
      "transfer_port": {
        "id": "manual-food-belt-infeed",
        "interface": "manual_closed_cart_to_belt",
        "access_point_world_xyz": [
          98.45,
          51,
          0.2
        ],
        "contact_point_world_xyz": [
          99.0,
          51.0,
          1.1725
        ],
        "geometry_basis": "4m x 1.1m Delta transfer belt edge; actual top world z .28 + .8 + .07 + .0225",
        "manual_horizontal_handoff_m": 0.55
      }
    },
    {
      "definition_index": 1,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 88.0,
      "y": 58.5,
      "angle": 0,
      "task_station": "F04-robot-case-1",
      "task_point": [
        89.0,
        58.5,
        1.18
      ],
      "task_points": [
        [
          89.0,
          58.5,
          1.18
        ],
        [
          89.60000000000001,
          58.5,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F04-robot-case-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          89,
          57,
          0
        ],
        "reason": "최종 포장 제품을 밀폐 카트로 받아 실제 트레이 상면에서 외포장 상자로 인계한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 1,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 99.6,
      "y": 58.5,
      "angle": 0,
      "task_station": "F04-robot-case-2",
      "task_point": [
        100.6,
        58.5,
        1.18
      ],
      "task_points": [
        [
          100.6,
          58.5,
          1.18
        ],
        [
          101.2,
          58.5,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F04-robot-case-2"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          103,
          57,
          0
        ],
        "reason": "최종 포장 제품을 밀폐 카트로 받아 실제 트레이 상면에서 외포장 상자로 인계한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 92.2,
      "y": 58.5,
      "angle": 0,
      "task_station": "F04-robot-pallet-1",
      "task_point": [
        89.60000000000001,
        58.5,
        1.35
      ],
      "task_points": [
        [
          89.60000000000001,
          58.5,
          1.35
        ],
        [
          93.44436,
          60,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F04-robot-case-1",
          "F04-robot-pallet-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          33,
          49,
          0
        ],
        "reason": "박스 인계대의 실제 상자 윗면에서 집어 인접 출하 팔레트의 실제 상자 위치로 적층한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 103.8,
      "y": 58.5,
      "angle": 0,
      "task_station": "F04-robot-pallet-2",
      "task_point": [
        101.2,
        58.5,
        1.35
      ],
      "task_points": [
        [
          101.2,
          58.5,
          1.35
        ],
        [
          105.04436,
          60,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F04-robot-case-2",
          "F04-robot-pallet-2"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          45,
          49,
          0
        ],
        "reason": "박스 인계대의 실제 상자 윗면에서 집어 인접 출하 팔레트의 실제 상자 위치로 적층한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 3,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 29,
      "y": 52,
      "angle": 0,
      "task_station": "스틱·컵 자재 토트 인계"
    },
    {
      "definition_index": 3,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 53,
      "y": 52,
      "angle": 0,
      "task_station": "스틱·컵 자재 토트 인계"
    },
    {
      "definition_index": 3,
      "instance_index": 2,
      "stage_id": "S08",
      "x": 82,
      "y": 52,
      "angle": 0,
      "task_station": "스틱·컵 자재 토트 인계"
    }
  ],
  "logistics": [
    {
      "id": "F04-liquid-F04-S01-S02-0",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          33.8,
          70.05,
          0.73
        ],
        [
          33.8,
          69.85,
          0.73
        ],
        [
          33.8,
          69.85,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S01-S02-1",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          40.8,
          70.05,
          0.73
        ],
        [
          40.8,
          69.85,
          0.73
        ],
        [
          40.8,
          69.85,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S01-S02-2",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          48.8,
          70.05,
          0.73
        ],
        [
          48.8,
          69.85,
          0.73
        ],
        [
          48.8,
          69.85,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S01-S02-3",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          31.5,
          79.34,
          1.4
        ],
        [
          30.85,
          79.34,
          1.4
        ],
        [
          30.85,
          79.34,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S01-S02-4",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          43.5,
          79.34,
          1.4
        ],
        [
          42.85,
          79.34,
          1.4
        ],
        [
          42.85,
          79.34,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S01-S02-5",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          33.8,
          69.85,
          8.65
        ],
        [
          30.85,
          69.85,
          8.65
        ],
        [
          30.85,
          79.34,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S01-S02-6",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          40.8,
          69.85,
          8.65
        ],
        [
          33.8,
          69.85,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S01-S02-7",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          48.8,
          69.85,
          8.65
        ],
        [
          33.8,
          69.85,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S01-S02-8",
      "kind": "pipe",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          30.85,
          79.34,
          8.65
        ],
        [
          42.85,
          79.34,
          8.65
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-0",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          31.5,
          80.66,
          2.16
        ],
        [
          30.85,
          80.66,
          2.16
        ],
        [
          30.85,
          80.66,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-1",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          43.5,
          80.66,
          2.16
        ],
        [
          42.85,
          80.66,
          2.16
        ],
        [
          42.85,
          80.66,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-2",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          74.68,
          4.53
        ],
        [
          55.5,
          75.65,
          4.53
        ],
        [
          55.5,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-3",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          61.0,
          74.68,
          4.53
        ],
        [
          61.0,
          75.65,
          4.53
        ],
        [
          61.0,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-4",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          66.5,
          74.68,
          4.53
        ],
        [
          66.5,
          75.65,
          4.53
        ],
        [
          66.5,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-5",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          82.68,
          4.53
        ],
        [
          55.5,
          83.65,
          4.53
        ],
        [
          55.5,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-6",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          61.0,
          82.68,
          4.53
        ],
        [
          61.0,
          83.65,
          4.53
        ],
        [
          61.0,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-7",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          66.5,
          82.68,
          4.53
        ],
        [
          66.5,
          83.65,
          4.53
        ],
        [
          66.5,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S02-S03-8",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          30.85,
          80.66,
          8.43
        ],
        [
          55.5,
          80.66,
          8.43
        ],
        [
          55.5,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-9",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          42.85,
          80.66,
          8.43
        ],
        [
          30.85,
          80.66,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-10",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          75.65,
          8.43
        ],
        [
          61.0,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-11",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          75.65,
          8.43
        ],
        [
          66.5,
          75.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-12",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          75.65,
          8.43
        ],
        [
          55.5,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-13",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          75.65,
          8.43
        ],
        [
          61.0,
          75.65,
          8.43
        ],
        [
          61.0,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S02-S03-14",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.5,
          75.65,
          8.43
        ],
        [
          66.5,
          75.65,
          8.43
        ],
        [
          66.5,
          83.65,
          8.43
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-0",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          57.3,
          70.4,
          0.73
        ],
        [
          57.3,
          70.35,
          0.73
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-1",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          62.8,
          70.4,
          0.73
        ],
        [
          62.8,
          70.35,
          0.73
        ],
        [
          62.8,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-2",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          68.3,
          70.4,
          0.73
        ],
        [
          68.3,
          70.35,
          0.73
        ],
        [
          68.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-3",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          57.3,
          78.4,
          0.73
        ],
        [
          57.3,
          78.35,
          0.73
        ],
        [
          57.3,
          78.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-4",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          62.8,
          78.4,
          0.73
        ],
        [
          62.8,
          78.35,
          0.73
        ],
        [
          62.8,
          78.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-5",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          68.3,
          78.4,
          0.73
        ],
        [
          68.3,
          78.35,
          0.73
        ],
        [
          68.3,
          78.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-6",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          73.5,
          72.2,
          2.08
        ],
        [
          72.85,
          72.2,
          2.08
        ],
        [
          72.85,
          72.2,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-7",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          73.5,
          80.2,
          2.08
        ],
        [
          72.85,
          80.2,
          2.08
        ],
        [
          72.85,
          80.2,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S03-S04-8",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          57.3,
          70.35,
          8.21
        ],
        [
          72.85,
          70.35,
          8.21
        ],
        [
          72.85,
          72.2,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-9",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          62.8,
          70.35,
          8.21
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-10",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          68.3,
          70.35,
          8.21
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-11",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          57.3,
          78.35,
          8.21
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-12",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          62.8,
          78.35,
          8.21
        ],
        [
          57.3,
          78.35,
          8.21
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-13",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          68.3,
          78.35,
          8.21
        ],
        [
          57.3,
          78.35,
          8.21
        ],
        [
          57.3,
          70.35,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S03-S04-14",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          72.85,
          72.2,
          8.21
        ],
        [
          72.85,
          80.2,
          8.21
        ]
      ],
      "width": 0.11,
      "transfer_method": "milk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S04-S05-0",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          80.5,
          72.2,
          2.08
        ],
        [
          81.15,
          72.2,
          2.08
        ],
        [
          81.15,
          72.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S04-S05-1",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          80.5,
          80.2,
          2.08
        ],
        [
          81.15,
          80.2,
          2.08
        ],
        [
          81.15,
          80.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S04-S05-2",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          31.5,
          43.2,
          1.98
        ],
        [
          30.85,
          43.2,
          1.98
        ],
        [
          30.85,
          43.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S04-S05-3",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          45.5,
          43.2,
          1.98
        ],
        [
          44.85,
          43.2,
          1.98
        ],
        [
          44.85,
          43.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F04-liquid-F04-S04-S05-4",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          81.15,
          72.2,
          7.99
        ],
        [
          81.15,
          43.2,
          7.99
        ],
        [
          30.85,
          43.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S04-S05-5",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          81.15,
          80.2,
          7.99
        ],
        [
          81.15,
          72.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S04-S05-6",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          30.85,
          43.2,
          7.99
        ],
        [
          44.85,
          43.2,
          7.99
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F04-liquid-F04-S04-S06-2",
      "kind": "pipe",
      "from": "S04",
      "to": "S06",
      "points": [
        [
          66.2,
          47.4,
          2.58
        ],
        [
          66.2,
          48.15,
          2.58
        ],
        [
          66.2,
          48.15,
          7.77
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08,
      "shared_source_routes": [
        "F04-liquid-F04-S04-S05-0",
        "F04-liquid-F04-S04-S05-1"
      ],
      "shared_source_note": "컵 충전 헤더 z=7.77은 같은 S04 배출관의 수직 라이저 z=2.08..7.99에 T 분기된다. source riser를 중복 작성하지 않는다."
    },
    {
      "id": "F04-liquid-F04-S04-S06-3",
      "kind": "pipe",
      "from": "S04",
      "to": "S06",
      "points": [
        [
          80.2,
          47.4,
          2.58
        ],
        [
          80.2,
          48.15,
          2.58
        ],
        [
          80.2,
          48.15,
          7.77
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08,
      "shared_source_routes": [
        "F04-liquid-F04-S04-S05-0",
        "F04-liquid-F04-S04-S05-1"
      ],
      "shared_source_note": "컵 충전 헤더 z=7.77은 같은 S04 배출관의 수직 라이저 z=2.08..7.99에 T 분기된다. source riser를 중복 작성하지 않는다."
    },
    {
      "id": "F04-liquid-F04-S04-S06-4",
      "kind": "pipe",
      "from": "S04",
      "to": "S06",
      "points": [
        [
          81.15,
          72.2,
          7.77
        ],
        [
          81.15,
          48.15,
          7.77
        ],
        [
          66.2,
          48.15,
          7.77
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "shared_source_routes": [
        "F04-liquid-F04-S04-S05-0",
        "F04-liquid-F04-S04-S05-1"
      ],
      "shared_source_note": "컵 충전 헤더 z=7.77은 같은 S04 배출관의 수직 라이저 z=2.08..7.99에 T 분기된다. source riser를 중복 작성하지 않는다."
    },
    {
      "id": "F04-liquid-F04-S04-S06-5",
      "kind": "pipe",
      "from": "S04",
      "to": "S06",
      "points": [
        [
          81.15,
          80.2,
          7.77
        ],
        [
          81.15,
          72.2,
          7.77
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "shared_source_routes": [
        "F04-liquid-F04-S04-S05-0",
        "F04-liquid-F04-S04-S05-1"
      ],
      "shared_source_note": "컵 충전 헤더 z=7.77은 같은 S04 배출관의 수직 라이저 z=2.08..7.99에 T 분기된다. source riser를 중복 작성하지 않는다."
    },
    {
      "id": "F04-liquid-F04-S04-S06-6",
      "kind": "pipe",
      "from": "S04",
      "to": "S06",
      "points": [
        [
          66.2,
          48.15,
          7.77
        ],
        [
          80.2,
          48.15,
          7.77
        ]
      ],
      "width": 0.11,
      "transfer_method": "icecream_mix",
      "review_status": "synthetic_ports_require_equipment_review",
      "shared_source_routes": [
        "F04-liquid-F04-S04-S05-0",
        "F04-liquid-F04-S04-S05-1"
      ],
      "shared_source_note": "컵 충전 헤더 z=7.77은 같은 S04 배출관의 수직 라이저 z=2.08..7.99에 T 분기된다. source riser를 중복 작성하지 않는다."
    },
    {
      "id": "F04-solid-S05-S07-0",
      "kind": "conveyor",
      "from": "S05",
      "to": "S07",
      "points": [
        [
          38.5,
          44.0,
          1.12
        ],
        [
          39.1,
          44.0,
          1.12
        ],
        [
          39.06,
          44.0,
          1.12
        ],
        [
          39.06,
          46.56,
          1.12
        ],
        [
          32.9,
          46.56,
          1.12
        ],
        [
          32.9,
          61.0,
          1.12
        ],
        [
          33.5,
          61.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-solid-S05-S07-1",
      "kind": "conveyor",
      "from": "S05",
      "to": "S07",
      "points": [
        [
          52.5,
          44.0,
          1.12
        ],
        [
          53.1,
          44.0,
          1.12
        ],
        [
          53.1,
          61.0,
          1.12
        ],
        [
          60.9,
          61.0,
          1.12
        ],
        [
          61.5,
          61.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-solid-S06-S07-0",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          67.0,
          45.0,
          1.12
        ],
        [
          67.6,
          45.0,
          1.12
        ],
        [
          67.56,
          45.0,
          1.12
        ],
        [
          67.56,
          48.06,
          1.12
        ],
        [
          32.9,
          48.06,
          1.12
        ],
        [
          32.9,
          61.0,
          1.12
        ],
        [
          33.5,
          61.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-solid-S06-S07-1",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          81.0,
          45.0,
          1.12
        ],
        [
          81.6,
          45.0,
          1.12
        ],
        [
          81.56,
          45.0,
          1.12
        ],
        [
          81.56,
          48.06,
          1.12
        ],
        [
          60.9,
          48.06,
          1.12
        ],
        [
          60.9,
          61.0,
          1.12
        ],
        [
          61.5,
          61.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-solid-S07-S08-0",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          48.5,
          61.0,
          1.12
        ],
        [
          49.1,
          61.0,
          1.12
        ],
        [
          58.44,
          61.0,
          1.12
        ],
        [
          58.44,
          56.44,
          1.12
        ],
        [
          84.55,
          56.44,
          1.12
        ],
        [
          84.55,
          53.0,
          1.12
        ],
        [
          85.4,
          53.0,
          1.12
        ],
        [
          85.4,
          43.0,
          1.12
        ],
        [
          86.0,
          43.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-solid-S07-S08-1",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          76.5,
          61.0,
          1.12
        ],
        [
          77.1,
          61.0,
          1.12
        ],
        [
          97.4,
          61.0,
          1.12
        ],
        [
          97.4,
          43.0,
          1.12
        ],
        [
          98.0,
          43.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F04-staff-powder",
      "kind": "pedestrian",
      "from": "gate",
      "to": "powder",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          20,
          0.2
        ],
        [
          8,
          70,
          0.2
        ],
        [
          11,
          70,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F04-staff-lab",
      "kind": "pedestrian",
      "from": "gate",
      "to": "lab",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          20,
          0.2
        ],
        [
          8,
          58,
          0.2
        ],
        [
          11,
          58,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F04-staff-plant",
      "kind": "pedestrian",
      "from": "gate",
      "to": "plant",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          20,
          0.2
        ],
        [
          8,
          42,
          0.2
        ],
        [
          11,
          42,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F04-staff-admin-room",
      "kind": "pedestrian",
      "from": "gate",
      "to": "admin-room",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          20,
          0.2
        ],
        [
          11,
          20,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F04-staff-staff",
      "kind": "pedestrian",
      "from": "gate",
      "to": "staff",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          20,
          0.2
        ],
        [
          21,
          20,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F04-dock-1-inbound",
      "kind": "pedestrian",
      "from": "raw-dock",
      "to": "S01",
      "points": [
        [
          28,
          78,
          0.2
        ],
        [
          29.1,
          78,
          0.2
        ],
        [
          29.1,
          74.4,
          0.2
        ],
        [
          32,
          74.4,
          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": "F04-dock-2-outbound",
      "kind": "pedestrian",
      "from": "S08",
      "to": "shipping-dock",
      "points": [
        [
          106.9,
          43,
          0.2
        ],
        [
          106.9,
          67,
          0.2
        ],
        [
          108,
          67,
          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": "F04-dock-3-outbound",
      "kind": "pedestrian",
      "from": "S08",
      "to": "shipping-dock",
      "points": [
        [
          106.9,
          43,
          0.2
        ],
        [
          106.9,
          79,
          0.2
        ],
        [
          108,
          79,
          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": "F04-robot-access-F04-robot-case-1",
      "kind": "pedestrian",
      "from": "route:F04-solid-S07-S08-1",
      "to": "fixture:F04-robot-case-1",
      "points": [
        [
          89.4,
          61.0,
          0.2
        ],
        [
          89.4,
          59.800000000000004,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-1",
        "world_xy": [
          89.4,
          61.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F04-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            89.4,
            61.0,
            0.2
          ],
          "route_point_world_xyz": [
            89.4,
            61.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-robot-pallet-1",
      "kind": "pedestrian",
      "from": "fixture:F04-robot-pallet-1",
      "to": "route:F04-solid-S07-S08-1",
      "points": [
        [
          93.7,
          61.150000000000006,
          0.2
        ],
        [
          93.7,
          61.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-1",
        "world_xy": [
          93.7,
          61.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F04-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            93.7,
            61.0,
            0.2
          ],
          "route_point_world_xyz": [
            93.7,
            61.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-robot-case-2",
      "kind": "pedestrian",
      "from": "route:F04-solid-S07-S08-1",
      "to": "fixture:F04-robot-case-2",
      "points": [
        [
          97.4,
          57.2,
          0.2
        ],
        [
          101,
          57.199999999999996,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-1",
        "world_xy": [
          97.4,
          57.2
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F04-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            97.4,
            57.2,
            0.2
          ],
          "route_point_world_xyz": [
            97.4,
            57.2,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-robot-pallet-2",
      "kind": "pedestrian",
      "from": "fixture:F04-robot-pallet-2",
      "to": "route:F04-dock-2-outbound",
      "points": [
        [
          106.55,
          60,
          0.2
        ],
        [
          106.9,
          60.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-dock-2-outbound",
      "source_handoff": {
        "existing_route_id": "F04-dock-2-outbound",
        "world_xy": [
          106.9,
          60.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F04-dock-2-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            106.9,
            60.0,
            0.2
          ],
          "route_point_world_xyz": [
            106.9,
            60.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-delta-0-0-belt",
      "kind": "pedestrian",
      "from": "route:F04-solid-S07-S08-0",
      "to": "robot:0:0",
      "points": [
        [
          85.4,
          51.0,
          0.2
        ],
        [
          85.45,
          51,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-0",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-0",
        "world_xy": [
          85.4,
          51.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "target_handoff": {
        "robot_definition_index": 0,
        "robot_instance_index": 0,
        "primitive": "Modular belt",
        "belt_end_x_world": [
          86,
          90
        ],
        "mode": "manual closed cart unload to belt inlet or side-feed position",
        "transfer_port_id": "manual-food-belt-infeed",
        "reference": "robot:0:0"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F04-solid-S07-S08-0",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            85.4,
            51.0,
            0.2
          ],
          "route_point_world_xyz": [
            85.4,
            51.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-delta-0-1-belt",
      "kind": "pedestrian",
      "from": "route:F04-solid-S07-S08-1",
      "to": "robot:0:1",
      "points": [
        [
          97.4,
          51.0,
          0.2
        ],
        [
          96.55,
          51,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-1",
        "world_xy": [
          97.4,
          51.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "target_handoff": {
        "robot_definition_index": 0,
        "robot_instance_index": 1,
        "primitive": "Modular belt",
        "belt_end_x_world": [
          92,
          96
        ],
        "mode": "manual closed cart unload to belt inlet or side-feed position",
        "transfer_port_id": "manual-food-belt-infeed",
        "reference": "robot:0:1"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F04-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            97.4,
            51.0,
            0.2
          ],
          "route_point_world_xyz": [
            97.4,
            51.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F04-robot-access-F04-delta-0-2-belt",
      "kind": "pedestrian",
      "from": "route:F04-solid-S07-S08-1",
      "to": "robot:0:2",
      "points": [
        [
          97.4,
          51.0,
          0.2
        ],
        [
          98.45,
          51,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F04-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F04-solid-S07-S08-1",
        "world_xy": [
          97.4,
          51.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "target_handoff": {
        "robot_definition_index": 0,
        "robot_instance_index": 2,
        "primitive": "Modular belt",
        "belt_end_x_world": [
          99,
          103
        ],
        "mode": "manual closed cart unload to belt inlet or side-feed position",
        "transfer_port_id": "manual-food-belt-infeed",
        "reference": "robot:0:2"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F04-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            97.4,
            51.0,
            0.2
          ],
          "route_point_world_xyz": [
            97.4,
            51.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    }
  ],
  "yard": {
    "roads": [
      {
        "points": [
          [
            4,
            8
          ],
          [
            121,
            8
          ],
          [
            121,
            99
          ],
          [
            4,
            99
          ],
          [
            4,
            8
          ]
        ],
        "width": 5
      }
    ],
    "docks": [
      {
        "x": 28,
        "y": 78,
        "angle": 4.71238898038469,
        "building_id": "mixhall",
        "role": "믹스 원료"
      },
      {
        "x": 108,
        "y": 67,
        "angle": 1.5707963267948966,
        "building_id": "frozen",
        "role": "냉동 출하"
      },
      {
        "x": 108,
        "y": 79,
        "angle": 1.5707963267948966,
        "building_id": "frozen",
        "role": "냉동 출하"
      }
    ],
    "parking": [
      {
        "x": 36,
        "y": 23,
        "angle": 0,
        "count": 24
      }
    ],
    "gate": {
      "x": 65,
      "y": 3
    },
    "fence": true
  },
  "landmarks": [
    "17m 냉동고와 낮은 믹스 지붕",
    "스틱·컵 지선의 나란한 문",
    "두 경화터널 배기",
    "푸른 냉동 출하 캐노피",
    "작은 분말 전용 입고문"
  ],
  "density": {
    "intent": "공정별 생산 셀, 원료·제품·포장재 재고, 현장 유틸리티와 작업자 공간을 서로 다른 면적으로 직접 설계하였다. 남는 공간을 무작위 상자로 채우지 않고 명시된 용도와 정비 통로를 유지한다.",
    "production_area_m2": 3120,
    "storage_area_m2": 888,
    "support_area_m2": 656,
    "circulation_area_m2": 0
  },
  "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-liquid",
      "building_id": "mixhall",
      "zone_id": "liquid",
      "x": 40.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "liquid",
        "service_access"
      ]
    },
    {
      "id": "door-aging",
      "building_id": "mixhall",
      "zone_id": "aging",
      "x": 61.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "aging",
        "service_access"
      ]
    },
    {
      "id": "door-aeration",
      "building_id": "mixhall",
      "zone_id": "aeration",
      "x": 77.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "aeration",
        "service_access"
      ]
    },
    {
      "id": "door-stick",
      "building_id": "forming",
      "zone_id": "stick",
      "x": 42.0,
      "y": 38,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "stick",
        "service_access"
      ]
    },
    {
      "id": "door-cup",
      "building_id": "forming",
      "zone_id": "cup",
      "x": 70.0,
      "y": 38,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "cup",
        "service_access"
      ]
    },
    {
      "id": "door-hardening",
      "building_id": "forming",
      "zone_id": "hardening",
      "x": 56.0,
      "y": 54,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "hardening",
        "service_access"
      ]
    },
    {
      "id": "door-packing",
      "building_id": "frozen",
      "zone_id": "packing",
      "x": 96.0,
      "y": 38,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "packing",
        "service_access"
      ]
    },
    {
      "id": "door-frozen-stock",
      "building_id": "frozen",
      "zone_id": "frozen-stock",
      "x": 96.0,
      "y": 56,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "frozen-stock",
        "service_access"
      ]
    },
    {
      "id": "door-powder",
      "building_id": "support",
      "zone_id": "powder",
      "x": 16.0,
      "y": 68,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "powder",
        "service_access"
      ]
    },
    {
      "id": "door-lab",
      "building_id": "support",
      "zone_id": "lab",
      "x": 16.0,
      "y": 56,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "lab",
        "service_access"
      ]
    },
    {
      "id": "door-plant",
      "building_id": "support",
      "zone_id": "plant",
      "x": 16.0,
      "y": 40,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "plant",
        "service_access"
      ]
    },
    {
      "id": "door-admin-room",
      "building_id": "admin",
      "zone_id": "admin-room",
      "x": 15.0,
      "y": 18,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "admin-room",
        "service_access"
      ]
    },
    {
      "id": "door-staff",
      "building_id": "admin",
      "zone_id": "staff",
      "x": 25.0,
      "y": 18,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "staff",
        "service_access"
      ]
    },
    {
      "id": "transfer-F04-solid-S05-S07-0-0",
      "building_id": "forming",
      "zone_id": "stick",
      "x": 32.9,
      "y": 54.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S07"
      ]
    },
    {
      "id": "transfer-F04-solid-S05-S07-1-0",
      "building_id": "forming",
      "zone_id": "stick",
      "x": 53.1,
      "y": 54.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S07"
      ]
    },
    {
      "id": "transfer-F04-solid-S06-S07-0-0",
      "building_id": "forming",
      "zone_id": "stick",
      "x": 56.0,
      "y": 48.06,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F04-solid-S06-S07-1-0",
      "building_id": "forming",
      "zone_id": "cup",
      "x": 60.9,
      "y": 54.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F04-solid-S07-S08-0-0",
      "building_id": "forming",
      "zone_id": "hardening",
      "x": 84.0,
      "y": 56.44,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "transfer-F04-solid-S07-S08-0-1",
      "building_id": "frozen",
      "zone_id": "packing",
      "x": 84.55,
      "y": 56.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "transfer-F04-solid-S07-S08-1-0",
      "building_id": "forming",
      "zone_id": "hardening",
      "x": 84.0,
      "y": 61.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "transfer-F04-solid-S07-S08-1-1",
      "building_id": "frozen",
      "zone_id": "packing",
      "x": 97.4,
      "y": 56.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "route-r1-building-mixhall-22",
      "building_id": "mixhall",
      "x": 81.15,
      "y": 68.0,
      "axis": "x",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F04-liquid-F04-S04-S05-4"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 7.74
    },
    {
      "id": "route-r1-building-forming-23",
      "building_id": "forming",
      "x": 81.15,
      "y": 68.0,
      "axis": "x",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F04-liquid-F04-S04-S05-4"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 7.74
    },
    {
      "id": "route-r1-building-mixhall-24",
      "building_id": "mixhall",
      "x": 81.15,
      "y": 68.0,
      "axis": "x",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S06"
      ],
      "route_ids": [
        "F04-liquid-F04-S04-S06-4"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 7.52
    },
    {
      "id": "route-r1-building-forming-25",
      "building_id": "forming",
      "x": 81.15,
      "y": 68.0,
      "axis": "x",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S06"
      ],
      "route_ids": [
        "F04-liquid-F04-S04-S06-4"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 7.52
    },
    {
      "id": "route-r1-zone-hardening-26",
      "building_id": "forming",
      "x": 32.9,
      "y": 54.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S07"
      ],
      "route_ids": [
        "F04-solid-S05-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "hardening"
    },
    {
      "id": "route-r1-zone-hardening-27",
      "building_id": "forming",
      "x": 53.1,
      "y": 54.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S05",
        "S07"
      ],
      "route_ids": [
        "F04-solid-S05-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "hardening"
    },
    {
      "id": "route-r1-zone-cup-28",
      "building_id": "forming",
      "x": 56.0,
      "y": 48.06,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F04-solid-S06-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cup"
    },
    {
      "id": "route-r1-zone-hardening-29",
      "building_id": "forming",
      "x": 60.9,
      "y": 54.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F04-solid-S06-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "hardening"
    },
    {
      "id": "route-r1-building-forming-30",
      "building_id": "forming",
      "x": 84.0,
      "y": 56.44,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-frozen-31",
      "building_id": "frozen",
      "x": 84.0,
      "y": 56.44,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-frozen-stock-32",
      "building_id": "frozen",
      "x": 84.55,
      "y": 56.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-zone-frozen-stock-33",
      "building_id": "frozen",
      "x": 84.0,
      "y": 56.44,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-building-forming-34",
      "building_id": "forming",
      "x": 84.0,
      "y": 61.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-frozen-35",
      "building_id": "frozen",
      "x": 84.0,
      "y": 61.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-frozen-stock-36",
      "building_id": "frozen",
      "x": 97.4,
      "y": 56.0,
      "axis": "x",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-zone-frozen-stock-37",
      "building_id": "frozen",
      "x": 84.0,
      "y": 61.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F04-solid-S07-S08-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-building-support-38",
      "building_id": "support",
      "x": 10.0,
      "y": 70.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "powder"
      ],
      "route_ids": [
        "F04-staff-powder"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-building-support-39",
      "building_id": "support",
      "x": 10.0,
      "y": 58.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "lab"
      ],
      "route_ids": [
        "F04-staff-lab"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-lab-40",
      "building_id": "support",
      "x": 10.0,
      "y": 58.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "lab"
      ],
      "route_ids": [
        "F04-staff-lab"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "lab"
    },
    {
      "id": "route-r1-building-support-41",
      "building_id": "support",
      "x": 10.0,
      "y": 42.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "plant"
      ],
      "route_ids": [
        "F04-staff-plant"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-plant-42",
      "building_id": "support",
      "x": 10.0,
      "y": 42.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "plant"
      ],
      "route_ids": [
        "F04-staff-plant"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "plant"
    },
    {
      "id": "route-r1-building-admin-43",
      "building_id": "admin",
      "x": 10.0,
      "y": 20.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "admin-room"
      ],
      "route_ids": [
        "F04-staff-admin-room"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-admin-room-44",
      "building_id": "admin",
      "x": 10.0,
      "y": 20.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "admin-room"
      ],
      "route_ids": [
        "F04-staff-admin-room"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "admin-room"
    },
    {
      "id": "route-r1-zone-admin-room-45",
      "building_id": "admin",
      "x": 20.0,
      "y": 20.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff"
      ],
      "route_ids": [
        "F04-staff-staff"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "admin-room"
    },
    {
      "id": "route-r1-zone-staff-46",
      "building_id": "admin",
      "x": 20.0,
      "y": 20.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff"
      ],
      "route_ids": [
        "F04-staff-staff"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "staff"
    },
    {
      "id": "route-r1-building-mixhall-47",
      "building_id": "mixhall",
      "x": 28.0,
      "y": 78.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F04-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-liquid-48",
      "building_id": "mixhall",
      "x": 28.0,
      "y": 78.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F04-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "liquid"
    },
    {
      "id": "route-r1-building-frozen-49",
      "building_id": "frozen",
      "x": 108.0,
      "y": 67.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F04-dock-2-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-frozen-stock-50",
      "building_id": "frozen",
      "x": 106.9,
      "y": 56.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F04-dock-2-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-zone-frozen-stock-51",
      "building_id": "frozen",
      "x": 108.0,
      "y": 67.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F04-dock-2-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    },
    {
      "id": "route-r1-building-frozen-52",
      "building_id": "frozen",
      "x": 108.0,
      "y": 79.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F04-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-frozen-stock-53",
      "building_id": "frozen",
      "x": 108.0,
      "y": 79.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F04-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "frozen-stock"
    }
  ],
  "connection_review": {
    "counts": {
      "declared_process_edges": 8,
      "wet_edges_classified": 5,
      "wet_edges_routed": 5,
      "graph_only_edges": 3,
      "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."
    ],
    "shared_source_manifold": "S04 stick/cup branches intentionally share the existing source risers. Duplicate source riser geometry is omitted; isolation/control engineering remains pending.",
    "dry_connections": [
      {
        "source": "S05",
        "target": "S07",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S05",
        "target": "S07",
        "index": 1,
        "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": "공정·입출하 제품 카트 3개 경로, 직원 보행 5개 경로를 구별한다. 직원 경로는 실제 정문에서 지원동 각 부서의 남측 접근 공간까지 이어진다. 외벽과 부서벽은 동일 좌표에서도 소유벽별 개구부를 가진다. 관통구는 통과 물체에 필요한 국부 폭으로만 만들며, 고소 배관 4개 관통구에는 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": "S08",
        "position": [
          88,
          51,
          0.28
        ],
        "task_points": [
          [
            87.8,
            51,
            1.22
          ],
          [
            88.2,
            51,
            1.22
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/0:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          88,
          51,
          0
        ]
      },
      {
        "robot": "0/1",
        "stage_id": "S08",
        "position": [
          94,
          51,
          0.28
        ],
        "task_points": [
          [
            93.8,
            51,
            1.22
          ],
          [
            94.2,
            51,
            1.22
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/1:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          94,
          51,
          0
        ]
      },
      {
        "robot": "0/2",
        "stage_id": "S08",
        "position": [
          101,
          51,
          0.28
        ],
        "task_points": [
          [
            100.8,
            51,
            1.22
          ],
          [
            101.2,
            51,
            1.22
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "robot:0/2:transfer-belt"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          101,
          51,
          0
        ]
      },
      {
        "robot": "1/0",
        "stage_id": "S08",
        "position": [
          88.0,
          58.5,
          0.28
        ],
        "task_points": [
          [
            89.0,
            58.5,
            1.18
          ],
          [
            89.60000000000001,
            58.5,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F04-robot-case-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          89,
          57,
          0
        ]
      },
      {
        "robot": "1/1",
        "stage_id": "S08",
        "position": [
          99.6,
          58.5,
          0.28
        ],
        "task_points": [
          [
            100.6,
            58.5,
            1.18
          ],
          [
            101.2,
            58.5,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F04-robot-case-2"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          103,
          57,
          0
        ]
      },
      {
        "robot": "2/0",
        "stage_id": "S08",
        "position": [
          92.2,
          58.5,
          0.28
        ],
        "task_points": [
          [
            89.60000000000001,
            58.5,
            1.35
          ],
          [
            93.44436,
            60,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F04-robot-case-1",
            "F04-robot-pallet-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          33,
          49,
          0
        ]
      },
      {
        "robot": "2/1",
        "stage_id": "S08",
        "position": [
          103.8,
          58.5,
          0.28
        ],
        "task_points": [
          [
            101.2,
            58.5,
            1.35
          ],
          [
            105.04436,
            60,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F04-robot-case-2",
            "F04-robot-pallet-2"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          45,
          49,
          0
        ]
      }
    ]
  }
}
