/**
 * 작업지시 관리 타입 정의
 */

// 공정 구분
export type ProcessType = 'screen' | 'slat' | 'bending';

export const PROCESS_TYPE_LABELS: Record<ProcessType, string> = {
  screen: '스크린',
  slat: '슬랫',
  bending: '절곡',
};

// 작업 상태
export type WorkOrderStatus =
  | 'unassigned'    // 미배정
  | 'pending'       // 승인대기
  | 'waiting'       // 작업대기
  | 'in_progress'   // 작업중
  | 'completed'     // 작업완료
  | 'shipped';      // 출하완료

export const WORK_ORDER_STATUS_LABELS: Record<WorkOrderStatus, string> = {
  unassigned: '미배정',
  pending: '승인대기',
  waiting: '작업대기',
  in_progress: '작업중',
  completed: '작업완료',
  shipped: '출하완료',
};

export const WORK_ORDER_STATUS_COLORS: Record<WorkOrderStatus, string> = {
  unassigned: 'bg-gray-100 text-gray-700',
  pending: 'bg-yellow-100 text-yellow-700',
  waiting: 'bg-blue-100 text-blue-700',
  in_progress: 'bg-green-100 text-green-700',
  completed: 'bg-purple-100 text-purple-700',
  shipped: 'bg-slate-100 text-slate-700',
};

// 스크린 공정 단계
export type ScreenProcessStep =
  | 'cutting'       // 원단절단
  | 'sewing'        // 미싱
  | 'endlock'       // 앤드락작업
  | 'inspection'    // 중간검사
  | 'packing';      // 포장

export const SCREEN_PROCESS_STEPS: { key: ScreenProcessStep; label: string; order: number }[] = [
  { key: 'cutting', label: '원단절단', order: 1 },
  { key: 'sewing', label: '미싱', order: 2 },
  { key: 'endlock', label: '앤드락작업', order: 3 },
  { key: 'inspection', label: '중간검사', order: 4 },
  { key: 'packing', label: '포장', order: 5 },
];

// 슬랫 공정 단계
export type SlatProcessStep =
  | 'coil_cutting'  // 코일절단
  | 'forming'       // 성형
  | 'finishing'     // 미미작업
  | 'inspection'    // 검사
  | 'packing';      // 포장

export const SLAT_PROCESS_STEPS: { key: SlatProcessStep; label: string; order: number }[] = [
  { key: 'coil_cutting', label: '코일절단', order: 1 },
  { key: 'forming', label: '성형', order: 2 },
  { key: 'finishing', label: '미미작업', order: 3 },
  { key: 'inspection', label: '검사', order: 4 },
  { key: 'packing', label: '포장', order: 5 },
];

// 절곡 공정 단계
export type BendingProcessStep =
  | 'guide_rail'    // 가이드레일 제작
  | 'case'          // 케이스 제작
  | 'bottom_finish' // 하단마감재 제작
  | 'inspection';   // 검사

export const BENDING_PROCESS_STEPS: { key: BendingProcessStep; label: string; order: number }[] = [
  { key: 'guide_rail', label: '가이드레일 제작', order: 1 },
  { key: 'case', label: '케이스 제작', order: 2 },
  { key: 'bottom_finish', label: '하단마감재 제작', order: 3 },
  { key: 'inspection', label: '검사', order: 4 },
];

// 품목 상태
export type ItemStatus = 'waiting' | 'in_progress' | 'completed';

export const ITEM_STATUS_LABELS: Record<ItemStatus, string> = {
  waiting: '대기',
  in_progress: '작업중',
  completed: '완료',
};

// 작업 품목
export interface WorkOrderItem {
  id: string;
  no: number;
  status: ItemStatus;
  productName: string;
  floorCode: string;    // 층/부호
  specification: string; // 규격
  quantity: number;
}

// 전개도 상세 (절곡용)
export interface BendingDetail {
  id: string;
  code: string;         // SD30, SD31 등
  name: string;         // 엘바, 하장바 등
  material: string;     // E.G.I 1.6T 등
  quantity: number;     // 수량
  developWidth: string; // 전개폭
  length: string;       // 길이
  weight: string;       // 중량
  note: string;         // 비고
  developDimension: string; // 전개치수
  imageUrl?: string;    // 전개도 이미지
}

// 이슈
export interface WorkOrderIssue {
  id: string;
  status: 'pending' | 'processing' | 'resolved';
  type: string;         // 불량품발생 등
  description: string;  // 상세 설명
  createdAt: string;
}

export const ISSUE_STATUS_LABELS: Record<WorkOrderIssue['status'], string> = {
  pending: '대기중',
  processing: '처리중',
  resolved: '해결됨',
};

// 작업지시 메인 타입
export interface WorkOrder {
  id: string;
  workOrderNo: string;      // 작업지시번호 (KD-WO-251217-12)
  lotNo: string;            // 로트번호 (KD-TS-251217-10)
  processType: ProcessType; // 공정구분
  status: WorkOrderStatus;  // 작업상태

  // 기본 정보
  client: string;           // 발주처
  projectName: string;      // 현장명
  dueDate: string;          // 납기일
  assignee: string;         // 작업자

  // 날짜 정보
  orderDate: string;        // 지시일
  shipmentDate: string;     // 출고예정일

  // 플래그
  isAssigned: boolean;      // 배정 여부
  isStarted: boolean;       // 시작 여부

  // 우선순위
  priority: number;         // 1~9 (1=긴급, 9=낮음)

  // 품목
  items: WorkOrderItem[];

  // 공정 진행 상태 (현재 단계)
  currentStep: number;

  // 절곡 전용 - 전개도 상세
  bendingDetails?: BendingDetail[];

  // 이슈
  issues?: WorkOrderIssue[];

  // 비고
  note?: string;
}

// 수주 정보 (모달용)
export interface SalesOrder {
  id: string;
  orderNo: string;          // KD-TS-251201-01
  status: string;           // 생산지시완료 등
  client: string;           // 삼성물산(주)
  projectName: string;      // 삼성물산 레미안 강남 1차
  dueDate: string;          // 납기
  itemCount: number;        // 품목수
  splitCount: number;       // 분할건
}

// 리스트 필터
export interface WorkOrderFilter {
  search: string;
  status: WorkOrderStatus | 'all';
  processType: ProcessType | 'all';
}

// 통계
export interface WorkOrderStats {
  total: number;
  unassigned: number;
  pending: number;
  waiting: number;
  inProgress: number;
  completed: number;
}