data: import 304 spifox machines from digital twin DB (이천공장 실설비)
All checks were successful
Deploy to Production / deploy (push) Successful in 46s
All checks were successful
Deploy to Production / deploy (push) Successful in 46s
This commit is contained in:
495
scripts/seed.py
495
scripts/seed.py
@@ -72,174 +72,173 @@ TENANT_ADMINS = [
|
||||
|
||||
NOW = datetime.now(timezone.utc)
|
||||
|
||||
MACHINES = {
|
||||
"spifox": [
|
||||
|
||||
# ─── Spifox 설비 생성 (이천공장 304대 — Digital Twin DB 기준) ───
|
||||
|
||||
# CASE프레스 번호 목록 (P-1xx ~ P-9xx, 총 215대)
|
||||
_CASE_NUMBERS = (
|
||||
list(range(101, 132)) # P-101 ~ P-131 (31)
|
||||
+ list(range(201, 233)) # P-201 ~ P-232 (32)
|
||||
+ list(range(301, 333)) # P-301 ~ P-332 (32)
|
||||
+ list(range(401, 433)) # P-401 ~ P-432 (32)
|
||||
+ list(range(501, 519)) # P-501 ~ P-518 (18)
|
||||
+ list(range(601, 633)) # P-601 ~ P-632 (32)
|
||||
+ list(range(701, 713)) # P-701 ~ P-712 (12)
|
||||
+ list(range(801, 821)) # P-801 ~ P-820 (20)
|
||||
+ [903, 904, 905, 906, 908, 910] # (6)
|
||||
)
|
||||
|
||||
SPIFOX_MACHINES: list[dict] = []
|
||||
|
||||
# ── CASE프레스 215대 ──
|
||||
for num in _CASE_NUMBERS:
|
||||
m: dict = {
|
||||
"name": f"CASE프레스 P-{num}",
|
||||
"equipment_code": f"SF-CASE-P{num}",
|
||||
"model": "Finish Press 80T",
|
||||
"manufacturer": "SpiFox",
|
||||
"location": "이천공장",
|
||||
"area": "CASE프레스",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "80T",
|
||||
"power_rating": "18.5kW",
|
||||
}
|
||||
if num == 101:
|
||||
m["description"] = "2차 딥드로잉 성형. 콘덴서 케이스 최종 형상."
|
||||
SPIFOX_MACHINES.append(m)
|
||||
|
||||
# ── CUP프레스 32대 ──
|
||||
for i in range(1, 33):
|
||||
m = {
|
||||
"name": f"CUP프레스 {i}호기",
|
||||
"equipment_code": f"SF-CUP-{i:03d}",
|
||||
"model": "Cup Making Press 60T",
|
||||
"manufacturer": "SpiFox",
|
||||
"location": "이천공장",
|
||||
"area": "CUP프레스",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "60T, UPH 520pcs",
|
||||
"power_rating": "15kW",
|
||||
}
|
||||
if i == 1:
|
||||
m["description"] = "알루미늄 슬러그 → CUP 형상 1차 딥드로잉 성형."
|
||||
SPIFOX_MACHINES.append(m)
|
||||
|
||||
# ── 컵핑 33대 (컵핑1~32호기 + 컵핑기 003호기) ──
|
||||
for i in range(1, 33):
|
||||
SPIFOX_MACHINES.append(
|
||||
{
|
||||
"name": "반제품 프레스 #1",
|
||||
"equipment_code": "SF-CUP-001",
|
||||
"model": "Cup Making Press 60T",
|
||||
"manufacturer": "SpiFox 자체설계",
|
||||
"location": "1동 반제품 라인",
|
||||
"area": "반제품 프레스",
|
||||
"name": f"컵핑{i}호기",
|
||||
"equipment_code": f"SF-CPN-{i:03d}",
|
||||
"model": "Cup Forming Press",
|
||||
"manufacturer": "SpiFox",
|
||||
"location": "이천공장",
|
||||
"area": "컵핑",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "60T, UPH 520pcs",
|
||||
"rated_capacity": "컵핑 성형",
|
||||
"power_rating": "15kW",
|
||||
"description": "알루미늄 슬러그 → CUP 형상 1차 성형. 딥드로잉 공법.",
|
||||
},
|
||||
}
|
||||
)
|
||||
SPIFOX_MACHINES.append(
|
||||
{
|
||||
"name": "컵핑기 003호기",
|
||||
"equipment_code": "SF-CPN-033",
|
||||
"model": "Cup Forming Press",
|
||||
"manufacturer": "SpiFox",
|
||||
"location": "이천공장",
|
||||
"area": "컵핑",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "컵핑 성형",
|
||||
"power_rating": "15kW",
|
||||
}
|
||||
)
|
||||
|
||||
# ── CUP건조설비 8대 ──
|
||||
for i in range(1, 9):
|
||||
m = {
|
||||
"name": f"CUP건조설비 {i}호기",
|
||||
"equipment_code": f"SF-DRY-{i:03d}",
|
||||
"model": "Hot Air Dryer 300",
|
||||
"manufacturer": "대한열기",
|
||||
"location": "이천공장",
|
||||
"area": "CUP건조설비",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "반제품 건조 300kg/batch",
|
||||
"power_rating": "25kW",
|
||||
}
|
||||
if i == 1:
|
||||
m["description"] = "반제품 CUP 건조. 열풍 순환 방식."
|
||||
SPIFOX_MACHINES.append(m)
|
||||
|
||||
# ── 건조 8대 ──
|
||||
for i in range(1, 9):
|
||||
SPIFOX_MACHINES.append(
|
||||
{
|
||||
"name": "반제품 프레스 #2",
|
||||
"equipment_code": "SF-CUP-002",
|
||||
"model": "Cup Making Press 60T",
|
||||
"manufacturer": "SpiFox 자체설계",
|
||||
"location": "1동 반제품 라인",
|
||||
"area": "반제품 프레스",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "60T, UPH 520pcs",
|
||||
"power_rating": "15kW",
|
||||
"description": "알루미늄 슬러그 → CUP 형상 1차 성형.",
|
||||
},
|
||||
{
|
||||
"name": "완제품 프레스 #1",
|
||||
"equipment_code": "SF-FIN-001",
|
||||
"model": "Finish Press 80T",
|
||||
"manufacturer": "SpiFox 자체설계",
|
||||
"location": "2동 완제품 성형 라인 A",
|
||||
"area": "완제품 성형 A",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "80T, UPH 480pcs",
|
||||
"power_rating": "18.5kW",
|
||||
"description": "2차 딥드로잉 성형. 콘덴서 케이스 최종 형상.",
|
||||
},
|
||||
{
|
||||
"name": "완제품 프레스 #2",
|
||||
"equipment_code": "SF-FIN-002",
|
||||
"model": "Finish Press 80T",
|
||||
"manufacturer": "SpiFox 자체설계",
|
||||
"location": "2동 완제품 성형 라인 A",
|
||||
"area": "완제품 성형 A",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "80T, UPH 480pcs",
|
||||
"power_rating": "18.5kW",
|
||||
"description": "2차 딥드로잉 성형.",
|
||||
},
|
||||
{
|
||||
"name": "완제품 프레스 #3",
|
||||
"equipment_code": "SF-FIN-003",
|
||||
"model": "Finish Press 80T",
|
||||
"manufacturer": "SpiFox 자체설계",
|
||||
"location": "2동 완제품 성형 라인 B",
|
||||
"area": "완제품 성형 B",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "80T, UPH 480pcs",
|
||||
"power_rating": "18.5kW",
|
||||
},
|
||||
{
|
||||
"name": "건조기 #1",
|
||||
"equipment_code": "SF-DRY-001",
|
||||
"model": "Hot Air Dryer 300",
|
||||
"name": f"건조{i}호기",
|
||||
"equipment_code": f"SF-DRB-{i:03d}",
|
||||
"model": "Industrial Dryer",
|
||||
"manufacturer": "대한열기",
|
||||
"location": "1동 건조 구역",
|
||||
"area": "건조/세척",
|
||||
"location": "이천공장",
|
||||
"area": "건조",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "반제품 건조 300kg/batch",
|
||||
"rated_capacity": "건조 300kg/batch",
|
||||
"power_rating": "25kW",
|
||||
"description": "반제품 CUP 건조. 열풍 순환 방식.",
|
||||
},
|
||||
{
|
||||
"name": "탈유기 #1",
|
||||
"equipment_code": "SF-DEG-001",
|
||||
"model": "Degreaser SC-500",
|
||||
"manufacturer": "세정산업",
|
||||
"location": "2동 후공정 라인",
|
||||
"area": "건조/세척",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "500L 세척조",
|
||||
"power_rating": "12kW",
|
||||
"description": "성형유 제거. 초음파 탈유 방식.",
|
||||
},
|
||||
{
|
||||
"name": "세척기 #1",
|
||||
"equipment_code": "SF-WSH-001",
|
||||
"model": "Ultrasonic Washer UW-800",
|
||||
"manufacturer": "세정산업",
|
||||
"location": "2동 후공정 라인",
|
||||
"area": "건조/세척",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "800L 세척조",
|
||||
"power_rating": "15kW",
|
||||
"description": "탈유 후 초음파 세척.",
|
||||
},
|
||||
{
|
||||
"name": "열처리로 #1",
|
||||
"equipment_code": "SF-HT-001",
|
||||
"model": "Annealing Furnace AF-1200",
|
||||
"manufacturer": "한국전기로",
|
||||
"location": "2동 열처리 구역",
|
||||
"area": "열처리",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "1200°C, 500kg/batch",
|
||||
"power_rating": "80kW",
|
||||
"description": "어닐링 열처리. 알루미늄 케이스 응력 제거.",
|
||||
},
|
||||
{
|
||||
"name": "머신비전 검사기 #1",
|
||||
"equipment_code": "SF-VIS-001",
|
||||
"model": "AI Vision Inspector V3",
|
||||
"manufacturer": "SpiFox 자체개발",
|
||||
"location": "2동 검사 라인",
|
||||
"area": "검사/포장",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "검사속도 1,200pcs/min",
|
||||
"power_rating": "3kW",
|
||||
"description": "AI 머신러닝 기반 전수 외관검사. 치수/형상/결함 동시 검출.",
|
||||
},
|
||||
{
|
||||
"name": "머신비전 검사기 #2",
|
||||
"equipment_code": "SF-VIS-002",
|
||||
"model": "AI Vision Inspector V3",
|
||||
"manufacturer": "SpiFox 자체개발",
|
||||
"location": "2동 검사 라인",
|
||||
"area": "검사/포장",
|
||||
"criticality": "critical",
|
||||
"rated_capacity": "검사속도 1,200pcs/min",
|
||||
"power_rating": "3kW",
|
||||
},
|
||||
{
|
||||
"name": "자동포장기 #1",
|
||||
"equipment_code": "SF-PKG-001",
|
||||
"model": "Auto Packer AP-200",
|
||||
"manufacturer": "포장기계",
|
||||
"location": "2동 포장 구역",
|
||||
"area": "검사/포장",
|
||||
"criticality": "minor",
|
||||
"rated_capacity": "200box/h",
|
||||
"power_rating": "5kW",
|
||||
},
|
||||
{
|
||||
"name": "구름다리 컨베이어",
|
||||
"equipment_code": "SF-CVY-001",
|
||||
"model": "Overbridge Conveyor OB-50",
|
||||
"manufacturer": "물류자동화",
|
||||
"location": "1동-2동 연결",
|
||||
"area": "물류/반송",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "반제품 이송 50m",
|
||||
"power_rating": "7.5kW",
|
||||
"description": "1동(반제품)→2동(완제품) 반제품 및 빈 통 이송.",
|
||||
},
|
||||
{
|
||||
"name": "AMR #1",
|
||||
"equipment_code": "SF-AMR-001",
|
||||
"model": "자율주행로봇 AGV-300",
|
||||
"manufacturer": "로봇솔루션",
|
||||
"location": "2동 물류 구역",
|
||||
"area": "물류/반송",
|
||||
"criticality": "minor",
|
||||
"rated_capacity": "적재 300kg",
|
||||
"power_rating": "배터리 48V",
|
||||
"description": "완제품 자동 반송. 성형→후공정→포장 경로.",
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
# ── EMS 6대 ──
|
||||
for i in range(1, 7):
|
||||
m = {
|
||||
"name": f"EMS {i}호기",
|
||||
"equipment_code": f"SF-EMS-{i:03d}",
|
||||
"model": "Electrified Monorail System",
|
||||
"manufacturer": "물류자동화",
|
||||
"location": "이천공장",
|
||||
"area": "EMS",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "천장주행 모노레일",
|
||||
"power_rating": "5.5kW",
|
||||
}
|
||||
if i == 1:
|
||||
m["description"] = "반제품 공정 간 천장주행 이송 시스템(EMS)."
|
||||
SPIFOX_MACHINES.append(m)
|
||||
|
||||
# ── 크레인 2대 ──
|
||||
SPIFOX_MACHINES.append(
|
||||
{
|
||||
"name": "CUP공급크레인",
|
||||
"equipment_code": "SF-CRN-001",
|
||||
"model": "Auto Warehouse Crane",
|
||||
"manufacturer": "물류자동화",
|
||||
"location": "이천공장",
|
||||
"area": "크레인",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "자동창고 스태커 크레인",
|
||||
"power_rating": "11kW",
|
||||
"description": "CUP 반제품 자동창고 입고 크레인.",
|
||||
}
|
||||
)
|
||||
SPIFOX_MACHINES.append(
|
||||
{
|
||||
"name": "CUP출고크레인",
|
||||
"equipment_code": "SF-CRN-002",
|
||||
"model": "Auto Warehouse Crane",
|
||||
"manufacturer": "물류자동화",
|
||||
"location": "이천공장",
|
||||
"area": "크레인",
|
||||
"criticality": "major",
|
||||
"rated_capacity": "자동창고 스태커 크레인",
|
||||
"power_rating": "11kW",
|
||||
"description": "CUP 반제품 자동창고 출고 크레인.",
|
||||
}
|
||||
)
|
||||
|
||||
assert len(SPIFOX_MACHINES) == 304, (
|
||||
f"Expected 304 spifox machines, got {len(SPIFOX_MACHINES)}"
|
||||
)
|
||||
|
||||
MACHINES = {
|
||||
"spifox": SPIFOX_MACHINES,
|
||||
"enkid": [
|
||||
{
|
||||
"name": "CNC 선반 #1",
|
||||
@@ -317,7 +316,7 @@ MACHINES = {
|
||||
# 부품: (name, part_number, category, lifecycle_type, lifecycle_limit, alarm_threshold, counter_source, current_value)
|
||||
PARTS = {
|
||||
"spifox": {
|
||||
"반제품 프레스 #1": [
|
||||
"CUP프레스 1호기": [
|
||||
(
|
||||
"컷트핀 (Cut Pin)",
|
||||
"CP-CUP-01",
|
||||
@@ -338,42 +337,18 @@ PARTS = {
|
||||
"manual",
|
||||
165000,
|
||||
),
|
||||
("스트리퍼", "ST-CUP-01", "금형", "count", 300000, 80, "manual", 210000),
|
||||
],
|
||||
"반제품 프레스 #2": [
|
||||
(
|
||||
"컷트핀 (Cut Pin)",
|
||||
"CP-CUP-02",
|
||||
"금형",
|
||||
"count",
|
||||
150000,
|
||||
80,
|
||||
"manual",
|
||||
95000,
|
||||
),
|
||||
(
|
||||
"컷트메스 (Cut Die)",
|
||||
"CD-CUP-02",
|
||||
"금형",
|
||||
"count",
|
||||
200000,
|
||||
85,
|
||||
"manual",
|
||||
120000,
|
||||
),
|
||||
("스트리퍼", "ST-CUP-02", "금형", "count", 300000, 80, "manual", 180000),
|
||||
],
|
||||
"완제품 프레스 #1": [
|
||||
(
|
||||
"정형메스 (Forming Die)",
|
||||
"FD-FIN-01",
|
||||
"FD-CUP-01",
|
||||
"금형",
|
||||
"count",
|
||||
100000,
|
||||
300000,
|
||||
80,
|
||||
"manual",
|
||||
87000,
|
||||
210000,
|
||||
),
|
||||
],
|
||||
"CASE프레스 P-101": [
|
||||
(
|
||||
"컷트핀 (Cut Pin)",
|
||||
"CP-FIN-01",
|
||||
@@ -384,20 +359,28 @@ PARTS = {
|
||||
"manual",
|
||||
98000,
|
||||
),
|
||||
("펀치", "PH-FIN-01", "금형", "count", 250000, 85, "manual", 175000),
|
||||
("성형유 필터", "OF-FIN-01", "소모품", "hours", 720, 80, "auto_time", 580),
|
||||
],
|
||||
"완제품 프레스 #2": [
|
||||
(
|
||||
"컷트메스 (Cut Die)",
|
||||
"CD-FIN-01",
|
||||
"금형",
|
||||
"count",
|
||||
150000,
|
||||
85,
|
||||
"manual",
|
||||
112000,
|
||||
),
|
||||
(
|
||||
"정형메스 (Forming Die)",
|
||||
"FD-FIN-02",
|
||||
"FD-FIN-01",
|
||||
"금형",
|
||||
"count",
|
||||
100000,
|
||||
80,
|
||||
"manual",
|
||||
62000,
|
||||
87000,
|
||||
),
|
||||
],
|
||||
"CASE프레스 P-102": [
|
||||
(
|
||||
"컷트핀 (Cut Pin)",
|
||||
"CP-FIN-02",
|
||||
@@ -408,19 +391,28 @@ PARTS = {
|
||||
"manual",
|
||||
73000,
|
||||
),
|
||||
("펀치", "PH-FIN-02", "금형", "count", 250000, 85, "manual", 140000),
|
||||
],
|
||||
"완제품 프레스 #3": [
|
||||
(
|
||||
"컷트메스 (Cut Die)",
|
||||
"CD-FIN-02",
|
||||
"금형",
|
||||
"count",
|
||||
150000,
|
||||
85,
|
||||
"manual",
|
||||
95000,
|
||||
),
|
||||
(
|
||||
"정형메스 (Forming Die)",
|
||||
"FD-FIN-03",
|
||||
"FD-FIN-02",
|
||||
"금형",
|
||||
"count",
|
||||
100000,
|
||||
80,
|
||||
"manual",
|
||||
45000,
|
||||
62000,
|
||||
),
|
||||
],
|
||||
"CASE프레스 P-103": [
|
||||
(
|
||||
"컷트핀 (Cut Pin)",
|
||||
"CP-FIN-03",
|
||||
@@ -431,9 +423,28 @@ PARTS = {
|
||||
"manual",
|
||||
52000,
|
||||
),
|
||||
("펀치", "PH-FIN-03", "금형", "count", 250000, 85, "manual", 95000),
|
||||
(
|
||||
"컷트메스 (Cut Die)",
|
||||
"CD-FIN-03",
|
||||
"금형",
|
||||
"count",
|
||||
150000,
|
||||
85,
|
||||
"manual",
|
||||
68000,
|
||||
),
|
||||
(
|
||||
"정형메스 (Forming Die)",
|
||||
"FD-FIN-03",
|
||||
"금형",
|
||||
"count",
|
||||
100000,
|
||||
80,
|
||||
"manual",
|
||||
45000,
|
||||
),
|
||||
],
|
||||
"건조기 #1": [
|
||||
"CUP건조설비 1호기": [
|
||||
(
|
||||
"히터 엘리먼트",
|
||||
"HE-DRY-01",
|
||||
@@ -455,34 +466,6 @@ PARTS = {
|
||||
11000,
|
||||
),
|
||||
],
|
||||
"열처리로 #1": [
|
||||
("발열체", "HT-HT-01", "핵심부품", "hours", 10000, 80, "auto_time", 7200),
|
||||
(
|
||||
"온도 센서 (TC)",
|
||||
"TC-HT-01",
|
||||
"계측",
|
||||
"hours",
|
||||
5000,
|
||||
90,
|
||||
"auto_time",
|
||||
4200,
|
||||
),
|
||||
("단열재", "IN-HT-01", "소모품", "hours", 20000, 85, "auto_time", 14000),
|
||||
],
|
||||
"머신비전 검사기 #1": [
|
||||
(
|
||||
"카메라 모듈",
|
||||
"CM-VIS-01",
|
||||
"핵심부품",
|
||||
"hours",
|
||||
20000,
|
||||
85,
|
||||
"auto_time",
|
||||
8500,
|
||||
),
|
||||
("조명 LED", "LD-VIS-01", "소모품", "hours", 10000, 80, "auto_time", 7800),
|
||||
("교정 인증서", "CAL-VIS-01", "인증", "date", 365, 80, "manual", 0),
|
||||
],
|
||||
},
|
||||
"enkid": {
|
||||
"CNC 선반 #1": [
|
||||
@@ -651,9 +634,9 @@ PARTS = {
|
||||
TEMPLATES = {
|
||||
"spifox": [
|
||||
{
|
||||
"name": "프레스 일일 점검",
|
||||
"name": "CASE프레스 일일 점검",
|
||||
"subject_type": "equipment",
|
||||
"machine_name": "완제품 프레스 #1",
|
||||
"machine_name": "CASE프레스 P-101",
|
||||
"schedule_type": "daily",
|
||||
"inspection_mode": "checklist",
|
||||
"items": [
|
||||
@@ -716,9 +699,9 @@ TEMPLATES = {
|
||||
],
|
||||
},
|
||||
{
|
||||
"name": "반제품 프레스 일일 점검",
|
||||
"name": "CUP프레스 일일 점검",
|
||||
"subject_type": "equipment",
|
||||
"machine_name": "반제품 프레스 #1",
|
||||
"machine_name": "CUP프레스 1호기",
|
||||
"schedule_type": "daily",
|
||||
"inspection_mode": "checklist",
|
||||
"items": [
|
||||
@@ -760,46 +743,6 @@ TEMPLATES = {
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"name": "열처리로 일일 점검",
|
||||
"subject_type": "equipment",
|
||||
"machine_name": "열처리로 #1",
|
||||
"schedule_type": "daily",
|
||||
"inspection_mode": "checklist",
|
||||
"items": [
|
||||
{
|
||||
"name": "노내 온도",
|
||||
"category": "온도",
|
||||
"data_type": "numeric",
|
||||
"unit": "°C",
|
||||
"spec_min": 350,
|
||||
"spec_max": 420,
|
||||
"warning_min": 360,
|
||||
"warning_max": 410,
|
||||
},
|
||||
{
|
||||
"name": "온도 균일도 (편차)",
|
||||
"category": "온도",
|
||||
"data_type": "numeric",
|
||||
"unit": "°C",
|
||||
"spec_min": 0,
|
||||
"spec_max": 10,
|
||||
"warning_max": 7,
|
||||
},
|
||||
{
|
||||
"name": "배기 팬 작동 정상",
|
||||
"category": "기계",
|
||||
"data_type": "boolean",
|
||||
},
|
||||
{"name": "도어 씰 상태", "category": "기계", "data_type": "boolean"},
|
||||
{
|
||||
"name": "가스 분위기",
|
||||
"category": "분위기",
|
||||
"data_type": "select",
|
||||
"select_options": ["정상", "불안정", "이상"],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"name": "콘덴서 케이스 치수검사",
|
||||
"subject_type": "product",
|
||||
|
||||
Reference in New Issue
Block a user