feat: complete 5 GAP requirements — auto counters, inspection alarms, machine specs, responsive CSS
All checks were successful
Deploy to Production / deploy (push) Successful in 1m8s

- GAP 2+4: auto_time/date counter auto-computation with manual update blocking
- GAP 3: auto-generate alarms on inspection completion for failed items
- GAP 1: machine spec fields (manufacturer, location, capacity, power, description)
- GAP 5: enhanced mobile responsive CSS (768px/480px breakpoints)
- Alembic migration for new columns, seed data enriched with specs and date-type parts
This commit is contained in:
Johngreen
2026-02-10 15:45:51 +09:00
parent ca29e5b809
commit 00a17c0b86
10 changed files with 564 additions and 22 deletions

View File

@@ -78,12 +78,30 @@ MACHINES = {
"name": "CVD Chamber #1",
"equipment_code": "SF-CVD-001",
"model": "AMAT Centura 5200",
"manufacturer": "Applied Materials",
"location": "클린룸 Bay 3",
"rated_capacity": "200mm 웨이퍼",
"power_rating": "30kW",
"description": "화학기상증착 장비. SiO2, Si3N4 박막 증착용.",
},
{
"name": "Etcher DRY-A",
"equipment_code": "SF-ETCH-001",
"model": "LAM 9600",
"manufacturer": "Lam Research",
"location": "클린룸 Bay 5",
"rated_capacity": "200mm 웨이퍼",
"power_rating": "25kW",
"description": "건식 식각 장비. Poly-Si, Metal 식각용.",
},
{"name": "Etcher DRY-A", "equipment_code": "SF-ETCH-001", "model": "LAM 9600"},
{
"name": "Sputter MC-200",
"equipment_code": "SF-SPT-001",
"model": "Ulvac SH-450",
"manufacturer": "ULVAC",
"location": "클린룸 Bay 7",
"rated_capacity": "Ti/TiN 300mm",
"power_rating": "20kW",
},
],
"enkid": [
@@ -91,16 +109,29 @@ MACHINES = {
"name": "CNC 선반 #1",
"equipment_code": "EK-CNC-001",
"model": "두산 LYNX 220",
"manufacturer": "두산공작기계",
"location": "1공장 A라인",
"rated_capacity": "최대 가공경 220mm",
"power_rating": "15kW (주축 모터)",
"description": "2축 CNC 선반. 알루미늄/스틸 가공용.",
},
{
"name": "프레스 500T",
"equipment_code": "EK-PRS-001",
"model": "현대위아 HF-500",
"manufacturer": "현대위아",
"location": "1공장 B라인",
"rated_capacity": "500톤",
"power_rating": "37kW",
},
{
"name": "용접 로봇 #1",
"equipment_code": "EK-WLD-001",
"model": "화낙 ARC Mate 120",
"manufacturer": "FANUC",
"location": "2공장 용접 셀 1",
"rated_capacity": "6축 120kg 가반하중",
"power_rating": "6kVA",
},
],
"alpet": [
@@ -108,16 +139,29 @@ MACHINES = {
"name": "반응기 R-101",
"equipment_code": "AP-RCT-101",
"model": "Custom Reactor 5000L",
"manufacturer": "한화솔루션 엔지니어링",
"location": "1플랜트 반응 구역",
"rated_capacity": "5,000L (SUS316L)",
"power_rating": "22kW (교반기)",
"description": "교반식 배치 반응기. HCl 합성 공정.",
},
{
"name": "증류탑 D-201",
"equipment_code": "AP-DST-201",
"model": "Sulzer Packed Tower",
"manufacturer": "Sulzer",
"location": "1플랜트 분리 구역",
"rated_capacity": "처리량 2,000 kg/h",
"power_rating": "리보일러 150kW",
},
{
"name": "열교환기 E-301",
"equipment_code": "AP-HEX-301",
"model": "Alfa Laval M10-BW",
"manufacturer": "Alfa Laval",
"location": "1플랜트 유틸리티",
"rated_capacity": "열전달 500kW",
"power_rating": "펌프 7.5kW",
},
],
}
@@ -183,6 +227,16 @@ PARTS = {
"auto_time",
5000,
),
(
"교정 인증서",
"CAL-SPT-01",
"인증",
"date",
365,
80,
"manual",
0,
),
],
},
"enkid": {
@@ -262,6 +316,16 @@ PARTS = {
"auto_time",
1500,
),
(
"안전 검사 인증",
"CERT-WLD-01",
"인증",
"date",
180,
85,
"manual",
0,
),
],
},
"alpet": {
@@ -323,6 +387,16 @@ PARTS = {
15000,
),
("압력 센서", "PS-HEX-01", "계측", "hours", 5000, 90, "auto_time", 2000),
(
"내압 검사 인증",
"CERT-HEX-01",
"인증",
"date",
730,
85,
"manual",
0,
),
],
},
}
@@ -654,6 +728,7 @@ async def seed():
machine_map[(tenant_id, m["name"])] = row.id
continue
machine_id = uuid.uuid4()
install_date = NOW - timedelta(days=365 * 2)
db.add(
Machine(
id=machine_id,
@@ -661,6 +736,12 @@ async def seed():
name=m["name"],
equipment_code=m["equipment_code"],
model=m["model"],
manufacturer=m.get("manufacturer"),
installation_date=install_date,
location=m.get("location"),
rated_capacity=m.get("rated_capacity"),
power_rating=m.get("power_rating"),
description=m.get("description"),
)
)
machine_map[(tenant_id, m["name"])] = machine_id