374 lines
11 KiB
TypeScript
374 lines
11 KiB
TypeScript
// POP 샘플 데이터
|
|
|
|
import { Process, Equipment, WorkOrder, WorkStepTemplate } from "./types";
|
|
|
|
// 공정 목록
|
|
export const PROCESSES: Process[] = [
|
|
{ id: "P001", name: "절단", code: "CUT" },
|
|
{ id: "P002", name: "용접", code: "WELD" },
|
|
{ id: "P003", name: "도장", code: "PAINT" },
|
|
{ id: "P004", name: "조립", code: "ASSY" },
|
|
{ id: "P005", name: "검사", code: "QC" },
|
|
{ id: "P006", name: "포장", code: "PACK" },
|
|
{ id: "P007", name: "프레스", code: "PRESS" },
|
|
{ id: "P008", name: "연마", code: "POLISH" },
|
|
{ id: "P009", name: "열처리", code: "HEAT" },
|
|
{ id: "P010", name: "표면처리", code: "SURFACE" },
|
|
{ id: "P011", name: "드릴링", code: "DRILL" },
|
|
{ id: "P012", name: "밀링", code: "MILL" },
|
|
{ id: "P013", name: "선반", code: "LATHE" },
|
|
{ id: "P014", name: "연삭", code: "GRIND" },
|
|
{ id: "P015", name: "측정", code: "MEASURE" },
|
|
{ id: "P016", name: "세척", code: "CLEAN" },
|
|
{ id: "P017", name: "건조", code: "DRY" },
|
|
{ id: "P018", name: "코팅", code: "COAT" },
|
|
{ id: "P019", name: "라벨링", code: "LABEL" },
|
|
{ id: "P020", name: "출하검사", code: "FINAL_QC" },
|
|
];
|
|
|
|
// 설비 목록
|
|
export const EQUIPMENTS: Equipment[] = [
|
|
{
|
|
id: "E001",
|
|
name: "CNC-01",
|
|
processIds: ["P001"],
|
|
processNames: ["절단"],
|
|
status: "running",
|
|
},
|
|
{
|
|
id: "E002",
|
|
name: "CNC-02",
|
|
processIds: ["P001"],
|
|
processNames: ["절단"],
|
|
status: "idle",
|
|
},
|
|
{
|
|
id: "E003",
|
|
name: "용접기-01",
|
|
processIds: ["P002"],
|
|
processNames: ["용접"],
|
|
status: "running",
|
|
},
|
|
{
|
|
id: "E004",
|
|
name: "도장라인-A",
|
|
processIds: ["P003"],
|
|
processNames: ["도장"],
|
|
status: "running",
|
|
},
|
|
{
|
|
id: "E005",
|
|
name: "조립라인-01",
|
|
processIds: ["P004", "P006"],
|
|
processNames: ["조립", "포장"],
|
|
status: "running",
|
|
},
|
|
{
|
|
id: "E006",
|
|
name: "검사대-01",
|
|
processIds: ["P005"],
|
|
processNames: ["검사"],
|
|
status: "idle",
|
|
},
|
|
{
|
|
id: "E007",
|
|
name: "작업대-A",
|
|
processIds: ["P001", "P002", "P004"],
|
|
processNames: ["절단", "용접", "조립"],
|
|
status: "idle",
|
|
},
|
|
{
|
|
id: "E008",
|
|
name: "작업대-B",
|
|
processIds: ["P003", "P005", "P006"],
|
|
processNames: ["도장", "검사", "포장"],
|
|
status: "idle",
|
|
},
|
|
];
|
|
|
|
// 작업순서 템플릿
|
|
export const WORK_STEP_TEMPLATES: Record<string, WorkStepTemplate[]> = {
|
|
P001: [
|
|
// 절단 공정
|
|
{
|
|
id: 1,
|
|
name: "설비 점검",
|
|
type: "equipment-check",
|
|
description: "설비 상태 및 안전 점검",
|
|
},
|
|
{
|
|
id: 2,
|
|
name: "원자재 확인",
|
|
type: "material-check",
|
|
description: "원자재 수량 및 품질 확인",
|
|
},
|
|
{ id: 3, name: "설비 셋팅", type: "setup", description: "절단 조건 설정" },
|
|
{ id: 4, name: "가공 작업", type: "work", description: "절단 가공 진행" },
|
|
{
|
|
id: 5,
|
|
name: "품질 검사",
|
|
type: "inspection",
|
|
description: "가공 결과 품질 검사",
|
|
},
|
|
{ id: 6, name: "작업 기록", type: "record", description: "작업 실적 기록" },
|
|
],
|
|
P002: [
|
|
// 용접 공정
|
|
{
|
|
id: 1,
|
|
name: "설비 점검",
|
|
type: "equipment-check",
|
|
description: "용접기 및 안전장비 점검",
|
|
},
|
|
{
|
|
id: 2,
|
|
name: "자재 준비",
|
|
type: "material-check",
|
|
description: "용접 자재 및 부품 확인",
|
|
},
|
|
{
|
|
id: 3,
|
|
name: "용접 조건 설정",
|
|
type: "setup",
|
|
description: "전류, 전압 등 설정",
|
|
},
|
|
{ id: 4, name: "용접 작업", type: "work", description: "용접 진행" },
|
|
{
|
|
id: 5,
|
|
name: "용접부 검사",
|
|
type: "inspection",
|
|
description: "용접 품질 검사",
|
|
},
|
|
{ id: 6, name: "작업 기록", type: "record", description: "용접 실적 기록" },
|
|
],
|
|
default: [
|
|
{
|
|
id: 1,
|
|
name: "작업 준비",
|
|
type: "preparation",
|
|
description: "작업 전 준비사항 확인",
|
|
},
|
|
{ id: 2, name: "작업 실행", type: "work", description: "작업 진행" },
|
|
{
|
|
id: 3,
|
|
name: "품질 확인",
|
|
type: "inspection",
|
|
description: "작업 결과 확인",
|
|
},
|
|
{ id: 4, name: "작업 기록", type: "record", description: "작업 내용 기록" },
|
|
],
|
|
};
|
|
|
|
// 작업지시 목록
|
|
export const WORK_ORDERS: WorkOrder[] = [
|
|
{
|
|
id: "WO-2025-001",
|
|
itemCode: "PROD-001",
|
|
itemName: "LCD 패널 A101",
|
|
spec: "1920x1080",
|
|
orderQuantity: 500,
|
|
producedQuantity: 0,
|
|
status: "waiting",
|
|
process: "P001",
|
|
processName: "절단",
|
|
equipment: "E001",
|
|
equipmentName: "CNC-01",
|
|
startDate: "2025-01-06",
|
|
dueDate: "2025-01-10",
|
|
priority: "high",
|
|
accepted: false,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "pending" },
|
|
{ id: "P007", name: "프레스", status: "pending" },
|
|
{ id: "P011", name: "드릴링", status: "pending" },
|
|
{ id: "P002", name: "용접", status: "pending" },
|
|
{ id: "P008", name: "연마", status: "pending" },
|
|
{ id: "P003", name: "도장", status: "pending" },
|
|
{ id: "P004", name: "조립", status: "pending" },
|
|
{ id: "P005", name: "검사", status: "pending" },
|
|
{ id: "P006", name: "포장", status: "pending" },
|
|
],
|
|
currentProcessIndex: 0,
|
|
},
|
|
{
|
|
id: "WO-2025-002",
|
|
itemCode: "PROD-002",
|
|
itemName: "LED 모듈 B202",
|
|
spec: "500x500",
|
|
orderQuantity: 300,
|
|
producedQuantity: 150,
|
|
status: "in-progress",
|
|
process: "P002",
|
|
processName: "용접",
|
|
equipment: "E003",
|
|
equipmentName: "용접기-01",
|
|
startDate: "2025-01-05",
|
|
dueDate: "2025-01-08",
|
|
priority: "medium",
|
|
accepted: true,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P007", name: "프레스", status: "completed" },
|
|
{ id: "P011", name: "드릴링", status: "completed" },
|
|
{ id: "P002", name: "용접", status: "current" },
|
|
{ id: "P008", name: "연마", status: "pending" },
|
|
{ id: "P003", name: "도장", status: "pending" },
|
|
{ id: "P004", name: "조립", status: "pending" },
|
|
{ id: "P005", name: "검사", status: "pending" },
|
|
{ id: "P006", name: "포장", status: "pending" },
|
|
],
|
|
currentProcessIndex: 3,
|
|
},
|
|
{
|
|
id: "WO-2025-003",
|
|
itemCode: "PROD-003",
|
|
itemName: "OLED 디스플레이",
|
|
spec: "2560x1440",
|
|
orderQuantity: 200,
|
|
producedQuantity: 50,
|
|
status: "in-progress",
|
|
process: "P004",
|
|
processName: "조립",
|
|
equipment: "E005",
|
|
equipmentName: "조립라인-01",
|
|
startDate: "2025-01-04",
|
|
dueDate: "2025-01-09",
|
|
priority: "high",
|
|
accepted: true,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P007", name: "프레스", status: "completed" },
|
|
{ id: "P002", name: "용접", status: "completed" },
|
|
{ id: "P003", name: "도장", status: "completed" },
|
|
{ id: "P004", name: "조립", status: "current" },
|
|
{ id: "P005", name: "검사", status: "pending" },
|
|
{ id: "P006", name: "포장", status: "pending" },
|
|
],
|
|
currentProcessIndex: 4,
|
|
},
|
|
{
|
|
id: "WO-2025-004",
|
|
itemCode: "PROD-004",
|
|
itemName: "스틸 프레임 C300",
|
|
spec: "800x600",
|
|
orderQuantity: 150,
|
|
producedQuantity: 30,
|
|
status: "in-progress",
|
|
process: "P005",
|
|
processName: "검사",
|
|
equipment: "E006",
|
|
equipmentName: "검사대-01",
|
|
startDate: "2025-01-03",
|
|
dueDate: "2025-01-10",
|
|
priority: "medium",
|
|
accepted: false,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P002", name: "용접", status: "completed" },
|
|
{ id: "P008", name: "연마", status: "completed" },
|
|
{ id: "P003", name: "도장", status: "completed" },
|
|
{ id: "P004", name: "조립", status: "completed" },
|
|
{ id: "P005", name: "검사", status: "current" },
|
|
{ id: "P006", name: "포장", status: "pending" },
|
|
],
|
|
currentProcessIndex: 5,
|
|
},
|
|
{
|
|
id: "WO-2025-005",
|
|
itemCode: "PROD-005",
|
|
itemName: "알루미늄 케이스",
|
|
spec: "300x400",
|
|
orderQuantity: 400,
|
|
producedQuantity: 400,
|
|
status: "completed",
|
|
process: "P006",
|
|
processName: "포장",
|
|
equipment: "E005",
|
|
equipmentName: "조립라인-01",
|
|
startDate: "2025-01-01",
|
|
dueDate: "2025-01-05",
|
|
completedDate: "2025-01-05",
|
|
priority: "high",
|
|
accepted: true,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P007", name: "프레스", status: "completed" },
|
|
{ id: "P008", name: "연마", status: "completed" },
|
|
{ id: "P003", name: "도장", status: "completed" },
|
|
{ id: "P004", name: "조립", status: "completed" },
|
|
{ id: "P005", name: "검사", status: "completed" },
|
|
{ id: "P006", name: "포장", status: "completed" },
|
|
],
|
|
currentProcessIndex: 6,
|
|
},
|
|
// 공정 리턴 작업지시
|
|
{
|
|
id: "WO-2025-006",
|
|
itemCode: "PROD-006",
|
|
itemName: "리턴품 샤프트 F100",
|
|
spec: "50x300",
|
|
orderQuantity: 80,
|
|
producedQuantity: 30,
|
|
status: "in-progress",
|
|
process: "P008",
|
|
processName: "연마",
|
|
equipment: null,
|
|
equipmentName: null,
|
|
startDate: "2025-01-03",
|
|
dueDate: "2025-01-08",
|
|
priority: "high",
|
|
accepted: false,
|
|
isReturn: true,
|
|
returnReason: "검사 불합격 - 표면 조도 미달",
|
|
returnFromProcess: "P005",
|
|
returnFromProcessName: "검사",
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P002", name: "용접", status: "completed" },
|
|
{ id: "P008", name: "연마", status: "pending", isReturnTarget: true },
|
|
{ id: "P014", name: "연삭", status: "pending" },
|
|
{ id: "P016", name: "세척", status: "pending" },
|
|
{ id: "P005", name: "검사", status: "pending" },
|
|
],
|
|
currentProcessIndex: 2,
|
|
},
|
|
// 분할접수 작업지시
|
|
{
|
|
id: "WO-2025-007",
|
|
itemCode: "PROD-007",
|
|
itemName: "분할접수 테스트 품목",
|
|
spec: "100x200",
|
|
orderQuantity: 200,
|
|
producedQuantity: 50,
|
|
acceptedQuantity: 50,
|
|
remainingQuantity: 150,
|
|
status: "in-progress",
|
|
process: "P002",
|
|
processName: "용접",
|
|
equipment: "E003",
|
|
equipmentName: "용접기-01",
|
|
startDate: "2025-01-04",
|
|
dueDate: "2025-01-10",
|
|
priority: "normal",
|
|
accepted: true,
|
|
isPartialAccept: true,
|
|
processFlow: [
|
|
{ id: "P001", name: "절단", status: "completed" },
|
|
{ id: "P002", name: "용접", status: "current" },
|
|
{ id: "P003", name: "도장", status: "pending" },
|
|
{ id: "P004", name: "조립", status: "pending" },
|
|
{ id: "P005", name: "검사", status: "pending" },
|
|
{ id: "P006", name: "포장", status: "pending" },
|
|
],
|
|
currentProcessIndex: 1,
|
|
},
|
|
];
|
|
|
|
// 상태 텍스트 매핑
|
|
export const STATUS_TEXT: Record<string, string> = {
|
|
waiting: "대기",
|
|
"in-progress": "진행중",
|
|
completed: "완료",
|
|
};
|
|
|