{
  "factory_id": "F05",
  "design_revision": 2,
  "design_story": "콩 입고·침지·두유 처리의 작은 서쪽 습식동과 응고·압착·절단의 동쪽 청정동을 폭6m 밀폐 연결실로 잇는다. 비지 반출은 서쪽 낮은 문, 두부 출하는 남동쪽 냉장 전면으로 분리된다. 세척 완료 틀은 압착실의 소수 빈랙에만 두고 남쪽 504㎡ 자재실에 포장재를 모은다. 장시간 보관보다 당일 출하에 맞춘 작은 냉장실과 빽빽한 배치 응고조가 공장의 규모를 결정한다.",
  "site": {
    "width": 127,
    "depth": 109
  },
  "buildings": [
    {
      "id": "soy",
      "name": "침지·분쇄·가열·비지 분리동",
      "role": "production",
      "polygon": [
        [
          28,
          52
        ],
        [
          58,
          52
        ],
        [
          58,
          90
        ],
        [
          28,
          90
        ]
      ],
      "height": 9,
      "roof": {
        "type": "sawtooth",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.78,
          0.84,
          0.76
        ],
        "accent": [
          0.3,
          0.47,
          0.21
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "link",
      "name": "두유 위생 연결실",
      "role": "circulation",
      "polygon": [
        [
          58,
          60
        ],
        [
          64,
          60
        ],
        [
          64,
          70
        ],
        [
          58,
          70
        ]
      ],
      "height": 9,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.81,
          0.86,
          0.78
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "clean",
      "name": "응고·압착·절단·포장동",
      "role": "production",
      "polygon": [
        [
          64,
          32
        ],
        [
          106,
          32
        ],
        [
          106,
          82
        ],
        [
          64,
          82
        ]
      ],
      "height": 9,
      "roof": {
        "type": "shed",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.86,
          0.88,
          0.8
        ],
        "accent": [
          0.3,
          0.47,
          0.21
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "materials",
      "name": "포장재·빈틀 공급동",
      "role": "warehouse",
      "polygon": [
        [
          64,
          20
        ],
        [
          106,
          20
        ],
        [
          106,
          32
        ],
        [
          64,
          32
        ]
      ],
      "height": 7,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.75,
          0.79,
          0.66
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "staff",
      "name": "검사·작업복 별동",
      "role": "office",
      "polygon": [
        [
          10,
          28
        ],
        [
          22,
          28
        ],
        [
          22,
          58
        ],
        [
          10,
          58
        ]
      ],
      "height": 6,
      "roof": {
        "type": "flat",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.7,
          0.74,
          0.63
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    },
    {
      "id": "utilities",
      "name": "스팀·틀 세척 별동",
      "role": "utility",
      "polygon": [
        [
          28,
          30
        ],
        [
          52,
          30
        ],
        [
          52,
          46
        ],
        [
          28,
          46
        ]
      ],
      "height": 6,
      "roof": {
        "type": "gable",
        "axis": "x",
        "pitch": 0.12
      },
      "facade": {
        "color": [
          0.62,
          0.69,
          0.61
        ],
        "accent": [
          0.1,
          0.28,
          0.36
        ],
        "material": "metal",
        "window_band_height": 3.7
      }
    }
  ],
  "zones": [
    {
      "id": "soak",
      "name": "콩 선별·침지",
      "role": "process",
      "building_id": "soy",
      "x": 28,
      "y": 72,
      "width": 30,
      "depth": 18,
      "stage_ids": [
        "S01"
      ],
      "fixtures": []
    },
    {
      "id": "grind",
      "name": "습식 분쇄",
      "role": "process",
      "building_id": "soy",
      "x": 28,
      "y": 62,
      "width": 16,
      "depth": 10,
      "stage_ids": [
        "S02"
      ],
      "fixtures": []
    },
    {
      "id": "heat",
      "name": "두유 가열",
      "role": "process",
      "building_id": "soy",
      "x": 44,
      "y": 62,
      "width": 14,
      "depth": 10,
      "stage_ids": [
        "S03"
      ],
      "fixtures": []
    },
    {
      "id": "separate",
      "name": "비지·두유 분리",
      "role": "process",
      "building_id": "soy",
      "x": 28,
      "y": 52,
      "width": 30,
      "depth": 10,
      "stage_ids": [
        "S04"
      ],
      "fixtures": []
    },
    {
      "id": "liquid-link",
      "name": "밀폐 두유 인계",
      "role": "circulation",
      "building_id": "link",
      "x": 58,
      "y": 60,
      "width": 6,
      "depth": 10,
      "stage_ids": [],
      "fixtures": []
    },
    {
      "id": "coagulate",
      "name": "6개 배치 응고조",
      "role": "process",
      "building_id": "clean",
      "x": 64,
      "y": 64,
      "width": 42,
      "depth": 18,
      "stage_ids": [
        "S05"
      ],
      "fixtures": []
    },
    {
      "id": "press",
      "name": "4개 압착 셀",
      "role": "process",
      "building_id": "clean",
      "x": 64,
      "y": 48,
      "width": 28,
      "depth": 16,
      "stage_ids": [
        "S06"
      ],
      "fixtures": [
        {
          "id": "F05-robot-0-0-tray-0",
          "type": "worktable",
          "x": 75.75,
          "y": 56,
          "width": 1.2,
          "depth": 1,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "성형 트레이 인계",
          "model_profile": "food_tray_handoff"
        },
        {
          "id": "F05-robot-0-0-tray-1",
          "type": "worktable",
          "x": 77.25,
          "y": 56,
          "width": 1.2,
          "depth": 1,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "성형 트레이 인계",
          "model_profile": "food_tray_handoff"
        },
        {
          "id": "F05-robot-0-1-tray-0",
          "type": "worktable",
          "x": 89.0,
          "y": 56,
          "width": 1.2,
          "depth": 1,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "성형 트레이 인계",
          "model_profile": "food_tray_handoff"
        },
        {
          "id": "F05-robot-0-1-tray-1",
          "type": "worktable",
          "x": 90.5,
          "y": 56,
          "width": 1.2,
          "depth": 1,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "성형 트레이 인계",
          "model_profile": "food_tray_handoff"
        }
      ]
    },
    {
      "id": "cut",
      "name": "두부 절단",
      "role": "process",
      "building_id": "clean",
      "x": 92,
      "y": 48,
      "width": 14,
      "depth": 16,
      "stage_ids": [
        "S07"
      ],
      "fixtures": []
    },
    {
      "id": "pack",
      "name": "용기 밀봉·열처리 냉각",
      "role": "packaging",
      "building_id": "clean",
      "x": 64,
      "y": 32,
      "width": 28,
      "depth": 16,
      "stage_ids": [
        "S08"
      ],
      "fixtures": [
        {
          "id": "F05-robot-1-0-handoff",
          "type": "worktable",
          "x": 75,
          "y": 44,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        },
        {
          "id": "F05-robot-1-1-handoff",
          "type": "worktable",
          "x": 88,
          "y": 44,
          "width": 2,
          "depth": 1.5,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "식품 외포장 인계대",
          "model_profile": "food_case_handoff"
        }
      ]
    },
    {
      "id": "cold",
      "name": "당일 두부 냉장",
      "role": "cold_store",
      "building_id": "clean",
      "x": 92,
      "y": 32,
      "width": 14,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "tofu-cold",
          "type": "cold_rack",
          "x": 99,
          "y": 42,
          "width": 9,
          "depth": 7,
          "height": 4,
          "count": 10,
          "rows": 2,
          "columns": 5,
          "angle": 0,
          "label": "당일 두부 보관"
        },
        {
          "id": "F05-robot-2-0-pallet",
          "type": "floor_pallets",
          "x": 96.5,
          "y": 34.5,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        },
        {
          "id": "F05-robot-2-1-pallet",
          "type": "floor_pallets",
          "x": 103.3,
          "y": 34.5,
          "width": 1.4,
          "depth": 1.2,
          "height": 1.3,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "출하 팔레트 인계"
        }
      ]
    },
    {
      "id": "packing-stock",
      "name": "용기·필름·빈틀 공급",
      "role": "warehouse",
      "building_id": "materials",
      "x": 64,
      "y": 20,
      "width": 42,
      "depth": 12,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "tofu-containers",
          "type": "pallet_rack",
          "x": 80,
          "y": 26,
          "width": 25,
          "depth": 7,
          "height": 4,
          "count": 16,
          "rows": 2,
          "columns": 8,
          "angle": 0,
          "label": "두부 용기·필름"
        },
        {
          "id": "mould-return",
          "type": "bin_rack",
          "x": 102,
          "y": 26,
          "width": 5,
          "depth": 7,
          "height": 2.5,
          "count": 6,
          "rows": 2,
          "columns": 3,
          "angle": 0,
          "label": "세척 완료 빈틀"
        }
      ]
    },
    {
      "id": "lab",
      "name": "두유·응고 검사",
      "role": "laboratory",
      "building_id": "staff",
      "x": 10,
      "y": 43,
      "width": 12,
      "depth": 15,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "lab-furniture",
          "type": "lab_bench",
          "x": 16.0,
          "y": 50.5,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 2,
          "rows": 1,
          "columns": 2,
          "angle": 0,
          "label": "두유·응고 시료"
        }
      ]
    },
    {
      "id": "staff-room",
      "name": "작업복·작업 기록",
      "role": "staff",
      "building_id": "staff",
      "x": 10,
      "y": 28,
      "width": 12,
      "depth": 15,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "staff-room-furniture",
          "type": "locker_bank",
          "x": 16.0,
          "y": 35.5,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 8,
          "rows": 1,
          "columns": 8,
          "angle": 0,
          "label": "위생 작업복"
        }
      ]
    },
    {
      "id": "steam",
      "name": "스팀·응축수",
      "role": "utility",
      "building_id": "utilities",
      "x": 28,
      "y": 30,
      "width": 12,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "steam-furniture",
          "type": "boiler",
          "x": 34.0,
          "y": 38.0,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 1,
          "rows": 1,
          "columns": 1,
          "angle": 0,
          "label": "증기·응축수 스키드"
        }
      ]
    },
    {
      "id": "wash",
      "name": "압착틀 세척",
      "role": "maintenance",
      "building_id": "utilities",
      "x": 40,
      "y": 30,
      "width": 12,
      "depth": 16,
      "stage_ids": [],
      "fixtures": [
        {
          "id": "wash-furniture",
          "type": "wash_station",
          "x": 46.0,
          "y": 38.0,
          "width": 9,
          "depth": 7,
          "height": 1.4,
          "count": 3,
          "rows": 1,
          "columns": 3,
          "angle": 0,
          "label": "압착틀 세척"
        }
      ]
    }
  ],
  "equipment": [
    {
      "stage_id": "S01",
      "index": 0,
      "x": 35,
      "y": 77,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 1,
      "x": 51,
      "y": 77,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 2,
      "x": 35,
      "y": 85,
      "angle": 0
    },
    {
      "stage_id": "S01",
      "index": 3,
      "x": 51,
      "y": 85,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 0,
      "x": 32,
      "y": 67,
      "angle": 0
    },
    {
      "stage_id": "S02",
      "index": 1,
      "x": 40,
      "y": 67,
      "angle": 0
    },
    {
      "stage_id": "S03",
      "index": 0,
      "x": 48,
      "y": 67,
      "angle": 1.5707963267948966
    },
    {
      "stage_id": "S03",
      "index": 1,
      "x": 54,
      "y": 67,
      "angle": 1.5707963267948966
    },
    {
      "stage_id": "S04",
      "index": 0,
      "x": 35,
      "y": 57,
      "angle": 0
    },
    {
      "stage_id": "S04",
      "index": 1,
      "x": 51,
      "y": 57,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 0,
      "x": 70,
      "y": 69,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 1,
      "x": 85,
      "y": 69,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 2,
      "x": 100,
      "y": 69,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 3,
      "x": 70,
      "y": 77,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 4,
      "x": 85,
      "y": 77,
      "angle": 0
    },
    {
      "stage_id": "S05",
      "index": 5,
      "x": 100,
      "y": 77,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 0,
      "x": 70,
      "y": 52,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 1,
      "x": 85,
      "y": 52,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 2,
      "x": 70,
      "y": 60,
      "angle": 0
    },
    {
      "stage_id": "S06",
      "index": 3,
      "x": 85,
      "y": 60,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 0,
      "x": 99,
      "y": 52,
      "angle": 0
    },
    {
      "stage_id": "S07",
      "index": 1,
      "x": 99,
      "y": 60,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 0,
      "x": 71,
      "y": 37,
      "angle": 0
    },
    {
      "stage_id": "S08",
      "index": 1,
      "x": 85,
      "y": 37,
      "angle": 0
    }
  ],
  "robots": [
    {
      "definition_index": 0,
      "instance_index": 0,
      "stage_id": "S06",
      "x": 76.5,
      "y": 56,
      "angle": 0,
      "task_station": "F05-robot-0-0-tray-1",
      "task_point": [
        75.75,
        56,
        1.21
      ],
      "task_points": [
        [
          75.75,
          56,
          1.21
        ],
        [
          77.25,
          56,
          1.21
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-0-0-tray-0",
          "F05-robot-0-0-tray-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          75,
          57,
          0
        ],
        "reason": "공정 사이 실제 트레이 두 작업대를 덮는 포털로 배치하고 기둥을 설비 footprint 밖에 둔다. 반입 트레이에서 대기 트레이로 수직 상승 후 이송한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "gantry_span": [
        5.5,
        2.4,
        3.4
      ],
      "tool_span": [
        0.6,
        0.29
      ]
    },
    {
      "definition_index": 0,
      "instance_index": 1,
      "stage_id": "S06",
      "x": 89.75,
      "y": 56,
      "angle": 0,
      "task_station": "F05-robot-0-1-tray-1",
      "task_point": [
        89.0,
        56,
        1.21
      ],
      "task_points": [
        [
          89.0,
          56,
          1.21
        ],
        [
          90.5,
          56,
          1.21
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-0-1-tray-0",
          "F05-robot-0-1-tray-1"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          90,
          57,
          0
        ],
        "reason": "공정 사이 실제 트레이 두 작업대를 덮는 포털로 배치하고 기둥을 설비 footprint 밖에 둔다. 반입 트레이에서 대기 트레이로 수직 상승 후 이송한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도",
      "gantry_span": [
        5.5,
        2.4,
        3.4
      ],
      "tool_span": [
        0.6,
        0.29
      ]
    },
    {
      "definition_index": 1,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 73.6,
      "y": 44,
      "angle": 0,
      "task_station": "F05-robot-1-0-handoff",
      "task_point": [
        74.6,
        44,
        1.18
      ],
      "task_points": [
        [
          74.6,
          44,
          1.18
        ],
        [
          75.2,
          44,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-1-0-handoff"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          75,
          44,
          0
        ],
        "reason": "해당 공정의 밀폐 제품/트레이 카트가 공급하는 실제 인계면에서 다음 취급 위치로 이동한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 1,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 86.6,
      "y": 44,
      "angle": 0,
      "task_station": "F05-robot-1-1-handoff",
      "task_point": [
        87.6,
        44,
        1.18
      ],
      "task_points": [
        [
          87.6,
          44,
          1.18
        ],
        [
          88.2,
          44,
          1.35
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-1-1-handoff"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          88,
          44,
          0
        ],
        "reason": "해당 공정의 밀폐 제품/트레이 카트가 공급하는 실제 인계면에서 다음 취급 위치로 이동한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 0,
      "stage_id": "S08",
      "x": 94.9,
      "y": 34.5,
      "angle": 0,
      "task_station": "F05-robot-2-0-pallet",
      "task_point": [
        96.24436,
        34.5,
        1.4
      ],
      "task_points": [
        [
          96.24436,
          34.5,
          1.4
        ],
        [
          96.75564,
          34.5,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-2-0-pallet"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          97,
          35,
          0
        ],
        "reason": "별도 최종 출하 카트 인계 팔레트의 실제 두 상자 면을 기준으로 한 층 패턴 대표 동작. 케이스 포장과의 물류는 밀폐 카트 분기로 유지한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    },
    {
      "definition_index": 2,
      "instance_index": 1,
      "stage_id": "S08",
      "x": 101.7,
      "y": 34.5,
      "angle": 0,
      "task_station": "F05-robot-2-1-pallet",
      "task_point": [
        103.04436,
        34.5,
        1.4
      ],
      "task_points": [
        [
          103.04436,
          34.5,
          1.4
        ],
        [
          103.55564,
          34.5,
          1.4
        ]
      ],
      "task_fixture": {
        "fixture_ids": [
          "F05-robot-2-1-pallet"
        ],
        "target_basis": "actual generated mesh contact surfaces"
      },
      "controller_offset": [
        0,
        -1.25,
        0
      ],
      "station_correction": {
        "revision": 1,
        "previous_position": [
          103,
          35,
          0
        ],
        "reason": "별도 최종 출하 카트 인계 팔레트의 실제 두 상자 면을 기준으로 한 층 패턴 대표 동작. 케이스 포장과의 물류는 밀폐 카트 분기로 유지한다."
      },
      "motion_scope": "실제 접촉 TCP의 대표 이송 동작이며 전체 동작 충돌·위생·안전 검수는 별도"
    }
  ],
  "logistics": [
    {
      "id": "F05-liquid-F05-S02-S03-0",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          34.5,
          66.4,
          1.98
        ],
        [
          35.15,
          66.4,
          1.98
        ],
        [
          35.15,
          66.4,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S02-S03-1",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          42.5,
          66.4,
          1.98
        ],
        [
          43.15,
          66.4,
          1.98
        ],
        [
          43.15,
          66.4,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S02-S03-2",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          49.08,
          63.88,
          3.08
        ],
        [
          49.08,
          62.35,
          3.08
        ],
        [
          49.08,
          62.35,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S02-S03-3",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          55.08,
          63.88,
          3.08
        ],
        [
          55.08,
          62.35,
          3.08
        ],
        [
          55.08,
          62.35,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S02-S03-4",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          35.15,
          66.4,
          6.45
        ],
        [
          49.08,
          66.4,
          6.45
        ],
        [
          49.08,
          62.35,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S02-S03-5",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          43.15,
          66.4,
          6.45
        ],
        [
          35.15,
          66.4,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S02-S03-6",
      "kind": "pipe",
      "from": "S02",
      "to": "S03",
      "points": [
        [
          49.08,
          62.35,
          6.45
        ],
        [
          55.08,
          62.35,
          6.45
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S03-S04-0",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          49.08,
          70.12,
          3.08
        ],
        [
          49.08,
          71.65,
          3.08
        ],
        [
          49.08,
          71.65,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S03-S04-1",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          55.08,
          70.12,
          3.08
        ],
        [
          55.08,
          71.65,
          3.08
        ],
        [
          55.08,
          71.65,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S03-S04-2",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          32.41,
          55.6,
          2.65
        ],
        [
          30.85,
          55.6,
          2.65
        ],
        [
          30.85,
          55.6,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S03-S04-3",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          48.41,
          55.6,
          2.65
        ],
        [
          46.85,
          55.6,
          2.65
        ],
        [
          46.85,
          55.6,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S03-S04-4",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          49.08,
          71.65,
          6.675
        ],
        [
          30.85,
          71.65,
          6.675
        ],
        [
          30.85,
          55.6,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S03-S04-5",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          55.08,
          71.65,
          6.675
        ],
        [
          49.08,
          71.65,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S03-S04-6",
      "kind": "pipe",
      "from": "S03",
      "to": "S04",
      "points": [
        [
          30.85,
          55.6,
          6.675
        ],
        [
          46.85,
          55.6,
          6.675
        ]
      ],
      "width": 0.16,
      "transfer_method": "soy_slurry",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-0",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          37.45,
          58.4,
          2.65
        ],
        [
          39.15,
          58.4,
          2.65
        ],
        [
          39.15,
          58.4,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-1",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          53.45,
          58.4,
          2.65
        ],
        [
          55.15,
          58.4,
          2.65
        ],
        [
          55.15,
          58.4,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-2",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          71.1,
          2.73
        ],
        [
          70.0,
          72.15,
          2.73
        ],
        [
          70.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-3",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          85.0,
          71.1,
          2.73
        ],
        [
          85.0,
          72.15,
          2.73
        ],
        [
          85.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-4",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          100.0,
          71.1,
          2.73
        ],
        [
          100.0,
          72.15,
          2.73
        ],
        [
          100.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-5",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          79.1,
          2.73
        ],
        [
          70.0,
          80.15,
          2.73
        ],
        [
          70.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-6",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          85.0,
          79.1,
          2.73
        ],
        [
          85.0,
          80.15,
          2.73
        ],
        [
          85.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-7",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          100.0,
          79.1,
          2.73
        ],
        [
          100.0,
          80.15,
          2.73
        ],
        [
          100.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review",
      "equipment_base_z_m": 0.28,
      "port_height_correction_m": 0.08
    },
    {
      "id": "F05-liquid-F05-S04-S05-8",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          39.15,
          58.4,
          6.89
        ],
        [
          57.825,
          58.4,
          6.89
        ],
        [
          57.825,
          60.175,
          6.89
        ],
        [
          64.55,
          60.175,
          6.89
        ],
        [
          64.55,
          72.15,
          6.89
        ],
        [
          70.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-9",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          55.15,
          58.4,
          6.89
        ],
        [
          39.15,
          58.4,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-10",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          72.15,
          6.89
        ],
        [
          85.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-11",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          72.15,
          6.89
        ],
        [
          100.0,
          72.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-12",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          72.15,
          6.89
        ],
        [
          70.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-13",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          72.15,
          6.89
        ],
        [
          85.0,
          72.15,
          6.89
        ],
        [
          85.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-liquid-F05-S04-S05-14",
      "kind": "pipe",
      "from": "S04",
      "to": "S05",
      "points": [
        [
          70.0,
          72.15,
          6.89
        ],
        [
          100.0,
          72.15,
          6.89
        ],
        [
          100.0,
          80.15,
          6.89
        ]
      ],
      "width": 0.11,
      "transfer_method": "soymilk",
      "review_status": "synthetic_ports_require_equipment_review"
    },
    {
      "id": "F05-solid-S01-S02-0",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          40.4,
          77.0,
          0.2
        ],
        [
          40.23,
          77.0,
          0.2
        ],
        [
          40.23,
          74.77,
          0.2
        ],
        [
          28.8,
          74.77,
          0.2
        ],
        [
          28.8,
          67.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "물류 폭과 벽체 두께를 포함한 이격을 확보하도록 벽을 따라 달리던 구간의 중심선을 조정했다. 설비·기물 설치점은 유지한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F05-solid-S01-S02-1",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          56.4,
          77.0,
          0.2
        ],
        [
          56.23,
          77.0,
          0.2
        ],
        [
          56.23,
          74.77,
          0.2
        ],
        [
          36.6,
          74.77,
          0.2
        ],
        [
          36.6,
          67.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S01-S02-2",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          40.4,
          85.0,
          0.2
        ],
        [
          40.4,
          81.4,
          0.2
        ],
        [
          40.23,
          81.4,
          0.2
        ],
        [
          40.23,
          74.77,
          0.2
        ],
        [
          36.6,
          74.77,
          0.2
        ],
        [
          36.6,
          67.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S01-S02-3",
      "kind": "pedestrian",
      "from": "S01",
      "to": "S02",
      "points": [
        [
          56.4,
          85.0,
          0.2
        ],
        [
          56.23,
          85.0,
          0.2
        ],
        [
          56.23,
          82.77,
          0.2
        ],
        [
          51.23,
          82.77,
          0.2
        ],
        [
          51.23,
          81.4,
          0.2
        ],
        [
          40.23,
          81.4,
          0.2
        ],
        [
          40.23,
          74.77,
          0.2
        ],
        [
          36.6,
          74.77,
          0.2
        ],
        [
          36.6,
          67.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S05-S06-0",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          74.4,
          69.0,
          0.2
        ],
        [
          74.4,
          62.23,
          0.2
        ],
        [
          74.23,
          62.23,
          0.2
        ],
        [
          74.23,
          57.0,
          0.2
        ],
        [
          73.23,
          57.0,
          0.2
        ],
        [
          73.23,
          54.73,
          0.2
        ],
        [
          66.77,
          54.73,
          0.2
        ],
        [
          66.77,
          52.55,
          0.2
        ],
        [
          66.6,
          52.55,
          0.2
        ],
        [
          66.6,
          52.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S05-S06-1",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          89.4,
          69.0,
          0.2
        ],
        [
          89.4,
          62.23,
          0.2
        ],
        [
          89.23,
          62.23,
          0.2
        ],
        [
          89.23,
          57.3,
          0.2
        ],
        [
          87.6,
          57.3,
          0.2
        ],
        [
          87.6,
          54.73,
          0.2
        ],
        [
          81.77,
          54.73,
          0.2
        ],
        [
          81.77,
          52.55,
          0.2
        ],
        [
          81.6,
          52.55,
          0.2
        ],
        [
          81.6,
          52.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다. 실제 생성 기물의 위치와 운반 폭을 대조하여 인계대·출하 팔레트를 피하도록 중심선을 수정했다."
    },
    {
      "id": "F05-solid-S05-S06-2",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          104.4,
          69.0,
          0.2
        ],
        [
          104.23,
          69.0,
          0.2
        ],
        [
          104.23,
          64.9,
          0.2
        ],
        [
          80.27,
          64.9,
          0.2
        ],
        [
          80.27,
          62.73,
          0.2
        ],
        [
          66.77,
          62.73,
          0.2
        ],
        [
          66.77,
          62.23,
          0.2
        ],
        [
          66.6,
          62.23,
          0.2
        ],
        [
          66.6,
          60.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "물류 폭과 벽체 두께를 포함한 이격을 확보하도록 벽을 따라 달리던 구간의 중심선을 조정했다. 설비·기물 설치점은 유지한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F05-solid-S05-S06-3",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          74.4,
          77.0,
          0.2
        ],
        [
          74.4,
          60.0,
          0.2
        ],
        [
          81.6,
          60.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S05-S06-4",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          89.4,
          77.0,
          0.2
        ],
        [
          89.23,
          77.0,
          0.2
        ],
        [
          89.23,
          62.73,
          0.2
        ],
        [
          81.77,
          62.73,
          0.2
        ],
        [
          81.77,
          62.23,
          0.2
        ],
        [
          81.6,
          62.23,
          0.2
        ],
        [
          81.6,
          60.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기",
      "design_note": " 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다."
    },
    {
      "id": "F05-solid-S05-S06-5",
      "kind": "pedestrian",
      "from": "S05",
      "to": "S06",
      "points": [
        [
          104.4,
          77.0,
          0.2
        ],
        [
          104.23,
          77.0,
          0.2
        ],
        [
          104.23,
          64.9,
          0.2
        ],
        [
          89.23,
          64.9,
          0.2
        ],
        [
          89.23,
          62.73,
          0.2
        ],
        [
          81.77,
          62.73,
          0.2
        ],
        [
          81.77,
          62.23,
          0.2
        ],
        [
          81.6,
          62.23,
          0.2
        ],
        [
          81.6,
          60.0,
          0.2
        ]
      ],
      "width": 1.2,
      "transfer_method": "closed_food_trolley_material_lane",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review",
      "design_note": "물류 폭과 벽체 두께를 포함한 이격을 확보하도록 벽을 따라 달리던 구간의 중심선을 조정했다. 설비·기물 설치점은 유지한다. 밀폐 카트의 제품 인계 경로이며 직원 출퇴근 보행망에 포함하지 않는다.",
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "공정 배치별로 구분한 뚜껑 있는 위생 이동 용기"
    },
    {
      "id": "F05-solid-S06-S07-0",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          72.5,
          52.0,
          1.12
        ],
        [
          73.1,
          52.0,
          1.12
        ],
        [
          81.94,
          52.0,
          1.12
        ],
        [
          81.94,
          49.44,
          1.12
        ],
        [
          88.06,
          49.44,
          1.12
        ],
        [
          88.06,
          49.94,
          1.12
        ],
        [
          95.9,
          49.94,
          1.12
        ],
        [
          95.9,
          52.0,
          1.12
        ],
        [
          96.5,
          52.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-solid-S06-S07-1",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          87.5,
          52.0,
          1.12
        ],
        [
          88.1,
          52.0,
          1.12
        ],
        [
          95.9,
          52.0,
          1.12
        ],
        [
          95.9,
          60.0,
          1.12
        ],
        [
          96.5,
          60.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-solid-S06-S07-2",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          72.5,
          60.0,
          1.12
        ],
        [
          73.1,
          60.0,
          1.12
        ],
        [
          81.94,
          60.0,
          1.12
        ],
        [
          81.94,
          62.55,
          1.12
        ],
        [
          88.06,
          62.55,
          1.12
        ],
        [
          88.06,
          60.0,
          1.12
        ],
        [
          95.9,
          60.0,
          1.12
        ],
        [
          96.5,
          60.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-solid-S06-S07-3",
      "kind": "conveyor",
      "from": "S06",
      "to": "S07",
      "points": [
        [
          87.5,
          60.0,
          1.12
        ],
        [
          88.1,
          60.0,
          1.12
        ],
        [
          95.9,
          60.0,
          1.12
        ],
        [
          96.5,
          60.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-solid-S07-S08-0",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          101.5,
          52.0,
          1.12
        ],
        [
          102.1,
          52.0,
          1.12
        ],
        [
          102.06,
          52.0,
          1.12
        ],
        [
          102.06,
          49.94,
          1.12
        ],
        [
          89.06,
          49.94,
          1.12
        ],
        [
          89.06,
          49.44,
          1.12
        ],
        [
          66.4,
          49.44,
          1.12
        ],
        [
          66.4,
          37.0,
          1.12
        ],
        [
          67.0,
          37.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-solid-S07-S08-1",
      "kind": "conveyor",
      "from": "S07",
      "to": "S08",
      "points": [
        [
          101.5,
          60.0,
          1.12
        ],
        [
          102.1,
          60.0,
          1.12
        ],
        [
          102.06,
          60.0,
          1.12
        ],
        [
          102.06,
          57.94,
          1.12
        ],
        [
          89.06,
          57.94,
          1.12
        ],
        [
          89.06,
          57.44,
          1.12
        ],
        [
          80.4,
          57.44,
          1.12
        ],
        [
          80.4,
          37.0,
          1.12
        ],
        [
          81.0,
          37.0,
          1.12
        ]
      ],
      "width": 0.7,
      "transfer_method": "product_belt_with_transfer_plates",
      "review_status": "synthetic_transfer_requires_hygiene_and_controls_review"
    },
    {
      "id": "F05-staff-lab",
      "kind": "pedestrian",
      "from": "gate",
      "to": "lab",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          30,
          0.2
        ],
        [
          8,
          45,
          0.2
        ],
        [
          11,
          45,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F05-staff-staff-room",
      "kind": "pedestrian",
      "from": "gate",
      "to": "staff-room",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          8,
          30,
          0.2
        ],
        [
          11,
          30,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F05-staff-steam",
      "kind": "pedestrian",
      "from": "gate",
      "to": "steam",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          26,
          12,
          0.2
        ],
        [
          26,
          32,
          0.2
        ],
        [
          29,
          32,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F05-staff-wash",
      "kind": "pedestrian",
      "from": "gate",
      "to": "wash",
      "points": [
        [
          65,
          3,
          0.2
        ],
        [
          65,
          12,
          0.2
        ],
        [
          8,
          12,
          0.2
        ],
        [
          26,
          12,
          0.2
        ],
        [
          26,
          32,
          0.2
        ],
        [
          41,
          32,
          0.2
        ]
      ],
      "width": 1.2,
      "design_note": "정문 보행 연결망에서 지원동 각 부서의 남측 비품 없는 접근 통로로 진입한다. 생산물 운반과 구별되는 직원 이동선이다."
    },
    {
      "id": "F05-dock-1-inbound",
      "kind": "pedestrian",
      "from": "raw-dock",
      "to": "S01",
      "points": [
        [
          28,
          82,
          0.2
        ],
        [
          40.4,
          82,
          0.2
        ],
        [
          40.4,
          77,
          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": "F05-dock-3-outbound",
      "kind": "pedestrian",
      "from": "S08",
      "to": "shipping-dock",
      "points": [
        [
          89.9,
          37,
          0.2
        ],
        [
          105,
          37,
          0.2
        ],
        [
          105,
          38,
          0.2
        ],
        [
          106,
          38,
          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": "F05-robot-access-F05-robot-0-0-tray-0",
      "kind": "pedestrian",
      "from": "route:F05-solid-S05-S06-0",
      "to": "fixture:F05-robot-0-0-tray-0",
      "points": [
        [
          74.23,
          57.0,
          0.2
        ],
        [
          74.23,
          56,
          0.2
        ],
        [
          74.60000000000001,
          56,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S05-S06-0",
      "source_handoff": {
        "existing_route_id": "F05-solid-S05-S06-0",
        "world_xy": [
          74.23,
          57.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S05-S06-0",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            74.23,
            57.0,
            0.2
          ],
          "route_point_world_xyz": [
            74.23,
            57.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-0-0-tray-1",
      "kind": "pedestrian",
      "from": "route:F05-solid-S06-S07-0",
      "to": "fixture:F05-robot-0-0-tray-1",
      "points": [
        [
          77.25,
          52.0,
          0.2
        ],
        [
          77.25,
          54.949999999999996,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S06-S07-0",
      "source_handoff": {
        "existing_route_id": "F05-solid-S06-S07-0",
        "world_xy": [
          77.25,
          52.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S06-S07-0",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            77.25,
            52.0,
            0.2
          ],
          "route_point_world_xyz": [
            77.25,
            52.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-0-1-tray-0",
      "kind": "pedestrian",
      "from": "route:F05-solid-S05-S06-1",
      "to": "fixture:F05-robot-0-1-tray-0",
      "points": [
        [
          89.0,
          57.3,
          0.2
        ],
        [
          89.0,
          57.050000000000004,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S05-S06-1",
      "source_handoff": {
        "existing_route_id": "F05-solid-S05-S06-1",
        "world_xy": [
          89.0,
          57.3
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S05-S06-1",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            89.0,
            57.3,
            0.2
          ],
          "route_point_world_xyz": [
            89.0,
            57.3,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-0-1-tray-1",
      "kind": "pedestrian",
      "from": "route:F05-solid-S05-S06-1",
      "to": "fixture:F05-robot-0-1-tray-1",
      "points": [
        [
          89.23,
          57.3,
          0.2
        ],
        [
          90.5,
          57.050000000000004,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S05-S06-1",
      "source_handoff": {
        "existing_route_id": "F05-solid-S05-S06-1",
        "world_xy": [
          89.23,
          57.3
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S05-S06-1",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            89.23,
            57.3,
            0.2
          ],
          "route_point_world_xyz": [
            89.23,
            57.3,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-1-0-handoff",
      "kind": "pedestrian",
      "from": "route:F05-solid-S07-S08-1",
      "to": "fixture:F05-robot-1-0-handoff",
      "points": [
        [
          80.4,
          44.0,
          0.2
        ],
        [
          76.55,
          44,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S07-S08-1",
      "source_handoff": {
        "existing_route_id": "F05-solid-S07-S08-1",
        "world_xy": [
          80.4,
          44.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S07-S08-1",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            80.4,
            44.0,
            0.2
          ],
          "route_point_world_xyz": [
            80.4,
            44.0,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-1-1-handoff",
      "kind": "pedestrian",
      "from": "route:F05-solid-S07-S08-0",
      "to": "fixture:F05-robot-1-1-handoff",
      "points": [
        [
          88.0,
          49.44,
          0.2
        ],
        [
          88.0,
          45.300000000000004,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-solid-S07-S08-0",
      "source_handoff": {
        "existing_route_id": "F05-solid-S07-S08-0",
        "world_xy": [
          88.0,
          49.44
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "from": {
          "reference": "route:F05-solid-S07-S08-0",
          "method": "manual_vertical_handoff",
          "access_point_world_xyz": [
            88.0,
            49.44,
            0.2
          ],
          "route_point_world_xyz": [
            88.0,
            49.44,
            1.12
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-2-0-pallet",
      "kind": "pedestrian",
      "from": "fixture:F05-robot-2-0-pallet",
      "to": "route:F05-dock-3-outbound",
      "points": [
        [
          96.5,
          35.650000000000006,
          0.2
        ],
        [
          96.5,
          37.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F05-dock-3-outbound",
        "world_xy": [
          96.5,
          37.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F05-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            96.5,
            37.0,
            0.2
          ],
          "route_point_world_xyz": [
            96.5,
            37.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    },
    {
      "id": "F05-robot-access-F05-robot-2-1-pallet",
      "kind": "pedestrian",
      "from": "fixture:F05-robot-2-1-pallet",
      "to": "route:F05-dock-3-outbound",
      "points": [
        [
          103.3,
          35.650000000000006,
          0.2
        ],
        [
          103.3,
          37.0,
          0.2
        ]
      ],
      "width": 0.9,
      "transport_method": "manual_closed_cart",
      "carries_product": true,
      "cargo_containment": "위생 밀폐 제품 카트",
      "design_note": "기존 제품 이송 동선에서 실제 로봇 인계대 또는 팔레트의 작업자 접근면으로 연결한다.",
      "feeds_from_route_id": "F05-dock-3-outbound",
      "source_handoff": {
        "existing_route_id": "F05-dock-3-outbound",
        "world_xy": [
          103.3,
          37.0
        ],
        "mode": "manual lift at existing product-transfer lane"
      },
      "endpoint_handoffs": {
        "to": {
          "reference": "route:F05-dock-3-outbound",
          "method": "direct_polyline_join",
          "access_point_world_xyz": [
            103.3,
            37.0,
            0.2
          ],
          "route_point_world_xyz": [
            103.3,
            37.0,
            0.2
          ],
          "basis": "Named existing route polyline; manual lift only for the declared cart-to-belt height change."
        }
      }
    }
  ],
  "yard": {
    "roads": [
      {
        "points": [
          [
            4,
            8
          ],
          [
            119,
            8
          ],
          [
            119,
            102
          ],
          [
            4,
            102
          ],
          [
            4,
            8
          ]
        ],
        "width": 5
      }
    ],
    "docks": [
      {
        "x": 28,
        "y": 82,
        "angle": 4.71238898038469,
        "building_id": "soy",
        "role": "콩 입고"
      },
      {
        "x": 28,
        "y": 56,
        "angle": 4.71238898038469,
        "building_id": "soy",
        "role": "비지 반출"
      },
      {
        "x": 106,
        "y": 38,
        "angle": 1.5707963267948966,
        "building_id": "clean",
        "role": "당일 두부 출하"
      }
    ],
    "parking": [
      {
        "x": 29,
        "y": 20,
        "angle": 0,
        "count": 11
      }
    ],
    "gate": {
      "x": 65,
      "y": 3
    },
    "fence": true
  },
  "landmarks": [
    "톱날 지붕 작은 침지동",
    "폭6m 밀폐 두유 연결실",
    "6기 응고조가 보이는 청정동 창",
    "서쪽 비지 반출 캐노피",
    "남쪽 포장재·빈틀 공급 박공지붕"
  ],
  "density": {
    "intent": "공정별 생산 셀, 원료·제품·포장재 재고, 현장 유틸리티와 작업자 공간을 서로 다른 면적으로 직접 설계하였다. 남는 공간을 무작위 상자로 채우지 않고 명시된 용도와 정비 통로를 유지한다.",
    "production_area_m2": 3016,
    "storage_area_m2": 728,
    "support_area_m2": 744,
    "circulation_area_m2": 60
  },
  "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-soak",
      "building_id": "soy",
      "zone_id": "soak",
      "x": 43.0,
      "y": 72,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "soak",
        "service_access"
      ]
    },
    {
      "id": "door-grind",
      "building_id": "soy",
      "zone_id": "grind",
      "x": 36.0,
      "y": 62,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "grind",
        "service_access"
      ]
    },
    {
      "id": "door-heat",
      "building_id": "soy",
      "zone_id": "heat",
      "x": 51.0,
      "y": 62,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "heat",
        "service_access"
      ]
    },
    {
      "id": "door-separate",
      "building_id": "soy",
      "zone_id": "separate",
      "x": 43.0,
      "y": 52,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "separate",
        "service_access"
      ]
    },
    {
      "id": "door-liquid-link",
      "building_id": "link",
      "zone_id": "liquid-link",
      "x": 61.0,
      "y": 60,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "liquid-link",
        "service_access"
      ]
    },
    {
      "id": "door-coagulate",
      "building_id": "clean",
      "zone_id": "coagulate",
      "x": 85.0,
      "y": 64,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "coagulate",
        "service_access"
      ]
    },
    {
      "id": "door-press",
      "building_id": "clean",
      "zone_id": "press",
      "x": 78.0,
      "y": 48,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "press",
        "service_access"
      ]
    },
    {
      "id": "door-cut",
      "building_id": "clean",
      "zone_id": "cut",
      "x": 99.0,
      "y": 48,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "cut",
        "service_access"
      ]
    },
    {
      "id": "door-pack",
      "building_id": "clean",
      "zone_id": "pack",
      "x": 78.0,
      "y": 32,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "pack",
        "service_access"
      ]
    },
    {
      "id": "door-cold",
      "building_id": "clean",
      "zone_id": "cold",
      "x": 99.0,
      "y": 32,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "cold",
        "service_access"
      ]
    },
    {
      "id": "door-packing-stock",
      "building_id": "materials",
      "zone_id": "packing-stock",
      "x": 85.0,
      "y": 20,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "packing-stock",
        "service_access"
      ]
    },
    {
      "id": "door-lab",
      "building_id": "staff",
      "zone_id": "lab",
      "x": 16.0,
      "y": 43,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "lab",
        "service_access"
      ]
    },
    {
      "id": "door-staff-room",
      "building_id": "staff",
      "zone_id": "staff-room",
      "x": 16.0,
      "y": 28,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "staff-room",
        "service_access"
      ]
    },
    {
      "id": "door-steam",
      "building_id": "utilities",
      "zone_id": "steam",
      "x": 34.0,
      "y": 30,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "steam",
        "service_access"
      ]
    },
    {
      "id": "door-wash",
      "building_id": "utilities",
      "zone_id": "wash",
      "x": 46.0,
      "y": 30,
      "width": 3.0,
      "height": 2.7,
      "axis": "x",
      "connects": [
        "wash",
        "service_access"
      ]
    },
    {
      "id": "transfer-F05-solid-S01-S02-0-0",
      "building_id": "soy",
      "zone_id": "soak",
      "x": 28.6,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S01",
        "S02"
      ]
    },
    {
      "id": "transfer-F05-solid-S01-S02-1-0",
      "building_id": "soy",
      "zone_id": "soak",
      "x": 36.6,
      "y": 72.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S01",
        "S02"
      ]
    },
    {
      "id": "transfer-F05-solid-S05-S06-0-0",
      "building_id": "clean",
      "zone_id": "coagulate",
      "x": 74.4,
      "y": 64.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F05-solid-S05-S06-1-0",
      "building_id": "clean",
      "zone_id": "coagulate",
      "x": 89.4,
      "y": 64.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F05-solid-S05-S06-2-0",
      "building_id": "clean",
      "zone_id": "coagulate",
      "x": 80.27,
      "y": 64.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F05-solid-S05-S06-4-0",
      "building_id": "clean",
      "zone_id": "coagulate",
      "x": 89.23,
      "y": 64.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S05",
        "S06"
      ]
    },
    {
      "id": "transfer-F05-solid-S06-S07-0-0",
      "building_id": "clean",
      "zone_id": "press",
      "x": 92.0,
      "y": 49.94,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F05-solid-S06-S07-1-0",
      "building_id": "clean",
      "zone_id": "press",
      "x": 92.0,
      "y": 52.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F05-solid-S06-S07-2-0",
      "building_id": "clean",
      "zone_id": "press",
      "x": 92.0,
      "y": 60.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S06",
        "S07"
      ]
    },
    {
      "id": "transfer-F05-solid-S07-S08-0-1",
      "building_id": "clean",
      "zone_id": "press",
      "x": 66.4,
      "y": 48.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "transfer-F05-solid-S07-S08-1-0",
      "building_id": "clean",
      "zone_id": "press",
      "x": 92.0,
      "y": 57.94,
      "width": 1.6,
      "height": 2.5,
      "axis": "y",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "transfer-F05-solid-S07-S08-1-1",
      "building_id": "clean",
      "zone_id": "press",
      "x": 80.4,
      "y": 48.0,
      "width": 1.6,
      "height": 2.5,
      "axis": "x",
      "connects": [
        "S07",
        "S08"
      ]
    },
    {
      "id": "route-r1-building-soy-28",
      "building_id": "soy",
      "x": 58.0,
      "y": 60.175,
      "axis": "y",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F05-liquid-F05-S04-S05-8"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 6.64
    },
    {
      "id": "route-r1-building-link-29",
      "building_id": "link",
      "x": 64.0,
      "y": 60.175,
      "axis": "y",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F05-liquid-F05-S04-S05-8"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 6.64
    },
    {
      "id": "route-r1-building-link-30",
      "building_id": "link",
      "x": 58.0,
      "y": 60.175,
      "axis": "y",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F05-liquid-F05-S04-S05-8"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 6.64
    },
    {
      "id": "route-r1-building-clean-31",
      "building_id": "clean",
      "x": 64.0,
      "y": 60.175,
      "axis": "y",
      "width": 0.5,
      "height": 0.5,
      "connects": [
        "S04",
        "S05"
      ],
      "route_ids": [
        "F05-liquid-F05-S04-S05-8"
      ],
      "kind": "pipe_sleeve",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "sill_height": 6.64
    },
    {
      "id": "route-r1-zone-soak-32",
      "building_id": "soy",
      "x": 28.8,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S01",
        "S02"
      ],
      "route_ids": [
        "F05-solid-S01-S02-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "soak"
    },
    {
      "id": "route-r1-zone-grind-33",
      "building_id": "soy",
      "x": 28.8,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S01",
        "S02"
      ],
      "route_ids": [
        "F05-solid-S01-S02-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "grind"
    },
    {
      "id": "route-r1-zone-grind-34",
      "building_id": "soy",
      "x": 36.6,
      "y": 72.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S01",
        "S02"
      ],
      "route_ids": [
        "F05-solid-S01-S02-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "grind"
    },
    {
      "id": "route-r1-zone-press-35",
      "building_id": "clean",
      "x": 74.4,
      "y": 64.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F05-solid-S05-S06-0"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "press"
    },
    {
      "id": "route-r1-zone-press-36",
      "building_id": "clean",
      "x": 89.4,
      "y": 64.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F05-solid-S05-S06-1"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "press"
    },
    {
      "id": "route-r1-zone-press-37",
      "building_id": "clean",
      "x": 80.27,
      "y": 64.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F05-solid-S05-S06-2"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "press"
    },
    {
      "id": "route-r1-zone-press-38",
      "building_id": "clean",
      "x": 89.23,
      "y": 64.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S05",
        "S06"
      ],
      "route_ids": [
        "F05-solid-S05-S06-4"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "press"
    },
    {
      "id": "route-r1-zone-cut-39",
      "building_id": "clean",
      "x": 92.0,
      "y": 49.94,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F05-solid-S06-S07-0"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cut"
    },
    {
      "id": "route-r1-zone-cut-40",
      "building_id": "clean",
      "x": 92.0,
      "y": 52.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F05-solid-S06-S07-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cut"
    },
    {
      "id": "route-r1-zone-cut-41",
      "building_id": "clean",
      "x": 92.0,
      "y": 60.0,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S06",
        "S07"
      ],
      "route_ids": [
        "F05-solid-S06-S07-2"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cut"
    },
    {
      "id": "route-r1-zone-cut-42",
      "building_id": "clean",
      "x": 92.0,
      "y": 57.94,
      "axis": "y",
      "width": 1.2,
      "height": 1.6,
      "connects": [
        "S07",
        "S08"
      ],
      "route_ids": [
        "F05-solid-S07-S08-1"
      ],
      "kind": "conveyor_transfer",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cut"
    },
    {
      "id": "route-r1-building-staff-43",
      "building_id": "staff",
      "x": 10.0,
      "y": 45.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "lab"
      ],
      "route_ids": [
        "F05-staff-lab"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-lab-44",
      "building_id": "staff",
      "x": 10.0,
      "y": 45.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "lab"
      ],
      "route_ids": [
        "F05-staff-lab"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "lab"
    },
    {
      "id": "route-r1-building-staff-45",
      "building_id": "staff",
      "x": 10.0,
      "y": 30.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff-room"
      ],
      "route_ids": [
        "F05-staff-staff-room"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-staff-room-46",
      "building_id": "staff",
      "x": 10.0,
      "y": 30.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "staff-room"
      ],
      "route_ids": [
        "F05-staff-staff-room"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "staff-room"
    },
    {
      "id": "route-r1-building-utilities-47",
      "building_id": "utilities",
      "x": 28.0,
      "y": 32.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "steam"
      ],
      "route_ids": [
        "F05-staff-steam"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-steam-48",
      "building_id": "utilities",
      "x": 28.0,
      "y": 32.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "steam"
      ],
      "route_ids": [
        "F05-staff-steam"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-steam-49",
      "building_id": "utilities",
      "x": 40.0,
      "y": 32.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "wash"
      ],
      "route_ids": [
        "F05-staff-wash"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "steam"
    },
    {
      "id": "route-r1-zone-wash-50",
      "building_id": "utilities",
      "x": 40.0,
      "y": 32.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "gate",
        "wash"
      ],
      "route_ids": [
        "F05-staff-wash"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "wash"
    },
    {
      "id": "route-r1-building-soy-51",
      "building_id": "soy",
      "x": 28.0,
      "y": 82.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F05-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-soak-52",
      "building_id": "soy",
      "x": 28.0,
      "y": 82.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "raw-dock",
        "S01"
      ],
      "route_ids": [
        "F05-dock-1-inbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "soak"
    },
    {
      "id": "route-r1-building-clean-53",
      "building_id": "clean",
      "x": 106.0,
      "y": 38.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F05-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다."
    },
    {
      "id": "route-r1-zone-cold-54",
      "building_id": "clean",
      "x": 106.0,
      "y": 38.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F05-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cold"
    },
    {
      "id": "route-r1-zone-cold-55",
      "building_id": "clean",
      "x": 92.0,
      "y": 37.0,
      "axis": "y",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "shipping-dock"
      ],
      "route_ids": [
        "F05-dock-3-outbound"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "cold"
    },
    {
      "id": "route-r1-zone-press-56",
      "building_id": "clean",
      "x": 88.0,
      "y": 48.0,
      "axis": "x",
      "width": 1.6,
      "height": 2.5,
      "connects": [
        "S08",
        "fixture:F05-robot-1-1-handoff"
      ],
      "route_ids": [
        "F05-robot-access-F05-robot-1-1-handoff"
      ],
      "kind": "personnel_door",
      "design_note": "해당 경로가 통과하는 소유벽의 국부 개구부. 인접 소유벽은 별도로 기록한다.",
      "zone_id": "press"
    }
  ],
  "connection_review": {
    "counts": {
      "declared_process_edges": 7,
      "wet_edges_classified": 3,
      "wet_edges_routed": 3,
      "graph_only_edges": 4,
      "unresolved_edges": 0
    },
    "unresolved": [],
    "limitations": [
      "Synthetic product ports require equipment-level visual review.",
      "Pipe pressure drop, cleanability, thermal expansion and pump sizing are not simulated.",
      "Cutaway room crossings are not validated sealed hygiene penetrations.",
      "Dry or unsupported material transfers remain graph-only; no invented floor-centre conveyors."
    ],
    "dry_connections": [
      {
        "source": "S01",
        "target": "S02",
        "index": 0,
        "method": "cart"
      },
      {
        "source": "S01",
        "target": "S02",
        "index": 1,
        "method": "cart"
      },
      {
        "source": "S01",
        "target": "S02",
        "index": 2,
        "method": "cart"
      },
      {
        "source": "S01",
        "target": "S02",
        "index": 3,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 0,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 1,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 2,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 3,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 4,
        "method": "cart"
      },
      {
        "source": "S05",
        "target": "S06",
        "index": 5,
        "method": "cart"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 0,
        "method": "conveyor"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 1,
        "method": "conveyor"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 2,
        "method": "conveyor"
      },
      {
        "source": "S06",
        "target": "S07",
        "index": 3,
        "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": "공정·입출하 제품 카트 12개 경로, 직원 보행 4개 경로를 구별한다. 직원 경로는 실제 정문에서 지원동 각 부서의 남측 접근 공간까지 이어진다. 외벽과 부서벽은 동일 좌표에서도 소유벽별 개구부를 가진다. 관통구는 통과 물체에 필요한 국부 폭으로만 만들며, 고소 배관 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": "S06",
        "position": [
          76.5,
          56,
          0.28
        ],
        "task_points": [
          [
            75.75,
            56,
            1.21
          ],
          [
            77.25,
            56,
            1.21
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-0-0-tray-0",
            "F05-robot-0-0-tray-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          75,
          57,
          0
        ]
      },
      {
        "robot": "0/1",
        "stage_id": "S06",
        "position": [
          89.75,
          56,
          0.28
        ],
        "task_points": [
          [
            89.0,
            56,
            1.21
          ],
          [
            90.5,
            56,
            1.21
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-0-1-tray-0",
            "F05-robot-0-1-tray-1"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          90,
          57,
          0
        ]
      },
      {
        "robot": "1/0",
        "stage_id": "S08",
        "position": [
          73.6,
          44,
          0.28
        ],
        "task_points": [
          [
            74.6,
            44,
            1.18
          ],
          [
            75.2,
            44,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-1-0-handoff"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          75,
          44,
          0
        ]
      },
      {
        "robot": "1/1",
        "stage_id": "S08",
        "position": [
          86.6,
          44,
          0.28
        ],
        "task_points": [
          [
            87.6,
            44,
            1.18
          ],
          [
            88.2,
            44,
            1.35
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-1-1-handoff"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          88,
          44,
          0
        ]
      },
      {
        "robot": "2/0",
        "stage_id": "S08",
        "position": [
          94.9,
          34.5,
          0.28
        ],
        "task_points": [
          [
            96.24436,
            34.5,
            1.4
          ],
          [
            96.75564,
            34.5,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-2-0-pallet"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          97,
          35,
          0
        ]
      },
      {
        "robot": "2/1",
        "stage_id": "S08",
        "position": [
          101.7,
          34.5,
          0.28
        ],
        "task_points": [
          [
            103.04436,
            34.5,
            1.4
          ],
          [
            103.55564,
            34.5,
            1.4
          ]
        ],
        "task_fixture": {
          "fixture_ids": [
            "F05-robot-2-1-pallet"
          ],
          "target_basis": "actual generated mesh contact surfaces"
        },
        "previous_position": [
          103,
          35,
          0
        ]
      }
    ]
  }
}
