feat: 리비전 관리 시스템 완전 개편

변동이력 관리로 전환:
- 도면번호 기준 변경 추적
- 리비전 업로드 시 전체 자재 저장 (차이분만 저장 방식 폐지)
- 구매신청 정보 수량 기반 상속

리비전 변경 감지:
- 수량/재질/크기/카테고리 변경 감지
- 변경 유형: specification_changed, quantity_changed, added, removed
- 도면별 변경사항 추적

누락 도면 처리:
- 리비전 업로드 시 누락된 도면 자동 감지
- 3가지 선택 옵션: 일부 업로드 / 도면 삭제 / 취소
- 구매신청 여부에 따라 다른 처리 (재고품 vs 숨김)

자재 상태 관리:
- revision_status 컬럼 추가 (active/inventory/deleted_not_purchased/changed)
- 재고품: 연노랑색 배경, '재고품' 배지
- 변경됨: 파란색 테두리, '변경됨' 배지
- 삭제됨: 자동 숨김

구매신청 정보 상속:
- 수량 기반 상속 (그룹별 개수만큼만)
- Rev.0에서 3개 구매 → Rev.1에서 처음 3개만 상속, 추가분은 미구매
- 도면번호 정확히 일치하는 경우에만 상속

기타 개선:
- 구매신청 관리 페이지 수량 표시 개선 (3 EA, 소수점 제거)
- 도면번호/라인번호 파싱 및 저장 (DWG_NAME, LINE_NUM 컬럼)
- SPECIAL 카테고리 도면번호 표시
- 마이그레이션 스크립트 추가 (29_add_revision_status.sql)
This commit is contained in:
Hyungi Ahn
2025-10-14 14:30:34 +09:00
parent e27020ae9b
commit 5a21ef8f6c
27 changed files with 5848 additions and 8503 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,90 +0,0 @@
{
"request_no": "PR-20251014-004",
"job_no": "TKG-25000P",
"created_at": "2025-10-14T02:10:22.262092",
"materials": [
{
"material_id": 77528,
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
"category": "PIPE",
"size": "1/2\"",
"material_grade": "ASTM A312 TP304",
"quantity": 11,
"unit": "EA",
"user_requirement": "열처리?"
}
],
"grouped_materials": [
{
"group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304",
"material_ids": [
77528
],
"description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304",
"category": "PIPE",
"size": "1/2\"",
"material_grade": "ASTM A312 TP304",
"quantity": 11,
"unit": "m",
"total_length": 1395.1,
"pipe_lengths": [
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 155,
"quantity": 1,
"totalLength": 155
},
{
"length": 155,
"quantity": 1,
"totalLength": 155
},
{
"length": 200,
"quantity": 1,
"totalLength": 200
},
{
"length": 245.1,
"quantity": 1,
"totalLength": 245.1
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
}
],
"user_requirement": "열처리?"
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-005",
"job_no": "TKG-25000P",
"created_at": "2025-10-14T02:14:05.318457",
"materials": [
{
"material_id": 78247,
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "10\"",
"material_grade": "ASTM A182 F304",
"quantity": 5,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|10\"|undefined|ASTM A182 F304",
"material_ids": [
78247
],
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "10\"",
"material_grade": "ASTM A182 F304",
"quantity": 5,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-006",
"job_no": "TKG-25000P",
"created_at": "2025-10-14T02:17:13.397257",
"materials": [
{
"material_id": 78599,
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H",
"material_ids": [
78599
],
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-007",
"job_no": "TKG-25000P",
"created_at": "2025-10-14T02:17:26.376309",
"materials": [
{
"material_id": 78599,
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H",
"material_ids": [
78599
],
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,495 +0,0 @@
{
"request_no": "PR-20251014-008",
"job_no": "TKG-25000P",
"created_at": "2025-10-14T02:17:50.004262",
"materials": [
{
"material_id": 77536,
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
"category": "PIPE",
"size": "3/4\"",
"material_grade": "ASTM A106 B",
"quantity": 92,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B",
"material_ids": [
77536
],
"description": "PIPE, SMLS, SCH 80, ASTM A106 B",
"category": "PIPE",
"size": "3/4\"",
"material_grade": "ASTM A106 B",
"quantity": 92,
"unit": "m",
"total_length": 7920.2,
"pipe_lengths": [
{
"length": 60,
"quantity": 1,
"totalLength": 60
},
{
"length": 60,
"quantity": 1,
"totalLength": 60
},
{
"length": 60,
"quantity": 1,
"totalLength": 60
},
{
"length": 60,
"quantity": 1,
"totalLength": 60
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 43.3,
"quantity": 1,
"totalLength": 43.3
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 50,
"quantity": 1,
"totalLength": 50
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 70,
"quantity": 1,
"totalLength": 70
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 76.2,
"quantity": 1,
"totalLength": 76.2
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 77.6,
"quantity": 1,
"totalLength": 77.6
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 80,
"quantity": 1,
"totalLength": 80
},
{
"length": 88.6,
"quantity": 1,
"totalLength": 88.6
},
{
"length": 88.6,
"quantity": 1,
"totalLength": 88.6
},
{
"length": 98.4,
"quantity": 1,
"totalLength": 98.4
},
{
"length": 98.4,
"quantity": 1,
"totalLength": 98.4
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 100,
"quantity": 1,
"totalLength": 100
},
{
"length": 120,
"quantity": 1,
"totalLength": 120
},
{
"length": 120,
"quantity": 1,
"totalLength": 120
},
{
"length": 150,
"quantity": 1,
"totalLength": 150
},
{
"length": 150,
"quantity": 1,
"totalLength": 150
},
{
"length": 150,
"quantity": 1,
"totalLength": 150
},
{
"length": 150,
"quantity": 1,
"totalLength": 150
},
{
"length": 150,
"quantity": 1,
"totalLength": 150
},
{
"length": 223.6,
"quantity": 1,
"totalLength": 223.6
}
],
"user_requirement": ""
}
]
}

View File

@@ -1,55 +0,0 @@
{
"request_no": "PR-20251014-009",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:24:08.046686",
"materials": [
{
"material_id": 88864,
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "10\"",
"material_grade": "ASTM A182 F304",
"quantity": 5,
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 88869,
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "12\"",
"material_grade": "ASTM A182 F304",
"quantity": 1,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|10\"|undefined|ASTM A182 F304",
"material_ids": [
88864
],
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "10\"",
"material_grade": "ASTM A182 F304",
"quantity": 5,
"unit": "EA",
"user_requirement": ""
},
{
"group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|12\"|undefined|ASTM A182 F304",
"material_ids": [
88869
],
"description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304",
"category": "FLANGE",
"size": "12\"",
"material_grade": "ASTM A182 F304",
"quantity": 1,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,55 +0,0 @@
{
"request_no": "PR-20251014-010",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:24:14.814790",
"materials": [
{
"material_id": 90052,
"description": "ON/OFF VALVE, FLG, 600LB",
"category": "VALVE",
"size": "1\"",
"material_grade": "-",
"quantity": 1,
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 90053,
"description": "CHECK VALVE, LIFT, SW, 800LB",
"category": "VALVE",
"size": "1 1/2\"",
"material_grade": "-",
"quantity": 2,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "ON/OFF VALVE, FLG, 600LB|1\"|undefined|-",
"material_ids": [
90052
],
"description": "ON/OFF VALVE, FLG, 600LB",
"category": "VALVE",
"size": "1\"",
"material_grade": "-",
"quantity": 1,
"unit": "EA",
"user_requirement": ""
},
{
"group_key": "CHECK VALVE, LIFT, SW, 800LB|1 1/2\"|undefined|-",
"material_ids": [
90053
],
"description": "CHECK VALVE, LIFT, SW, 800LB",
"category": "VALVE",
"size": "1 1/2\"",
"material_grade": "-",
"quantity": 2,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-011",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:24:21.733349",
"materials": [
{
"material_id": 89216,
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H",
"material_ids": [
89216
],
"description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 51,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-012",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:42:08.351432",
"materials": [
{
"material_id": 89220,
"description": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1 1/2\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 32,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H",
"material_ids": [
89220
],
"description": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV",
"category": "BOLT",
"size": "1 1/2\"",
"material_grade": "ASTM A193/A194 GR B7/2H",
"quantity": 32,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,32 +0,0 @@
{
"request_no": "PR-20251014-013",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:47:17.256790",
"materials": [
{
"material_id": 89465,
"description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm",
"category": "GASKET",
"size": "1/2\"",
"material_grade": "SS304",
"quantity": 44,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm|1/2\"|undefined|SS304",
"material_ids": [
89465
],
"description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm",
"category": "GASKET",
"size": "1/2\"",
"material_grade": "SS304",
"quantity": 44,
"unit": "EA",
"user_requirement": ""
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +0,0 @@
{
"request_no": "PR-20251014-015",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:54:15.899037",
"materials": [],
"grouped_materials": []
}

View File

@@ -1,43 +0,0 @@
{
"request_no": "PR-20251014-016",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:54:33.149908",
"materials": [
{
"material_id": 88142,
"description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT",
"category": "FITTING",
"size": "1/2\"",
"material_grade": "ASTM A312 TP304",
"quantity": "3.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 88144,
"description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT",
"category": "FITTING",
"size": "1/2\"",
"material_grade": "ASTM A312 TP304",
"quantity": "3.000",
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304",
"material_ids": [
88142,
88144
],
"description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT",
"category": "FITTING",
"size": "1/2\"",
"material_grade": "ASTM A312 TP304",
"quantity": "3.000",
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,132 +0,0 @@
{
"request_no": "PR-20251014-017",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:54:45.118843",
"materials": [
{
"material_id": 91515,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91516,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91517,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91518,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91552,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91553,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91554,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91555,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 89471,
"description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm",
"category": "GASKET",
"size": "3/4\"",
"material_grade": "SS304",
"quantity": 18,
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "CLAMP CL-1|1\"|undefined|-",
"material_ids": [
91515,
91516,
91517,
91518,
91552,
91553,
91554,
91555
],
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"group_key": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm|3/4\"|undefined|SS304",
"material_ids": [
89471
],
"description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm",
"category": "GASKET",
"size": "3/4\"",
"material_grade": "SS304",
"quantity": 18,
"unit": "EA",
"user_requirement": ""
}
]
}

View File

@@ -1,109 +0,0 @@
{
"request_no": "PR-20251014-018",
"job_no": "TK-MP-TEST-001",
"created_at": "2025-10-14T02:54:50.900910",
"materials": [
{
"material_id": 91515,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91516,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91517,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91518,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91552,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91553,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91554,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
},
{
"material_id": 91555,
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
}
],
"grouped_materials": [
{
"group_key": "CLAMP CL-1|1\"|undefined|-",
"material_ids": [
91515,
91516,
91517,
91518,
91552,
91553,
91554,
91555
],
"description": "CLAMP CL-1",
"category": "SUPPORT",
"size": "1\"",
"material_grade": "-",
"quantity": "8.000",
"unit": "EA",
"user_requirement": ""
}
]
}