// 작업 지시 상태
export type WorkOrderStatus = 'waiting' | 'inProgress' | 'completed';

// 공정 옵션 (API에서 동적으로 조회)
export interface ProcessOption {
  id: number;
  code: string;        // process_code (P-001, P-002, ...)
  name: string;        // process_name (슬랫, 스크린, 절곡, ...)
  type?: string;       // process_type (생산, 검수, ...)
  department?: string; // department (경영본부, 개발팀, ...)
}

// 작업 지시
export interface WorkOrder {
  id: string;
  orderNo: string;           // KD-WO-251216-01
  productCode: string;       // 제품코드 (KQTS01 등)
  productName: string;       // 스크린 서터 (표준형) - 추가
  processCode: string;       // 공정 코드 (P-001, P-002, ...)
  processName: string;       // 공정명 (슬랫, 스크린, 절곡, ...)
  client: string;            // 삼성물산(주)
  projectName: string;       // 강남 타워 신축현장
  assignees: string[];       // 담당자 배열
  quantity: number;          // EA 수량
  shutterCount: number;      // 개소수 (root_nodes_count)
  dueDate: string;           // 납기
  priority: number;          // 순위 (1~5)
  status: WorkOrderStatus;
  isUrgent: boolean;
  isDelayed: boolean;
  delayDays?: number;        // 지연 일수
  instruction?: string;      // 지시사항
  salesOrderNo?: string;     // 수주번호
  salesManager?: string;     // 수주 담당자 (orders.options.manager_name)
  managerPhone?: string;     // 담당자 연락처 (orders.client_contact)
  assigneeId?: number | null; // 주 담당자 ID (work_orders.assignee_id)
  teamId?: number | null;    // 배정 부서 ID (work_orders.team_id)
  teamName?: string;         // 배정 부서명
  processDepartment?: string; // 공정 담당부서명 (processes.department)
  scheduledDate?: string;    // 생산 예정일 (YYYY-MM-DD)
  createdAt: string;
  // 공정 설정 (작업자 화면용)
  processOptions?: {
    needsInspection?: boolean;
    needsWorkLog?: boolean;
  };
  // 개소별 아이템 그룹 (작업자 화면용)
  nodeGroups?: WorkOrderNodeGroup[];
}

// 개소별 아이템 그룹
export interface WorkOrderNodeGroup {
  nodeId: number | null;
  nodeName: string;
  items: WorkOrderNodeItem[];
  totalQuantity: number;
}

// 개소 내 개별 아이템
export interface WorkOrderNodeItem {
  id: number;
  itemCode?: string | null;
  itemName: string;
  quantity: number;
  specification?: string | null;
  options?: Record<string, unknown> | null;
  materialInputs?: {
    id: number;
    stockLotId: number;
    lotNo: string | null;
    itemId: number;
    materialName: string | null;
    qty: number;
    unit: string;
  }[];
}

// 작업자 현황
export interface WorkerStatus {
  id: string;
  name: string;
  inProgress: number;        // 작업중 건수
  completed: number;         // 완료 건수
  assigned: number;          // 배정 건수
}

// 통계 데이터
export interface DashboardStats {
  total: number;             // 전체 작업
  waiting: number;           // 작업 대기
  inProgress: number;        // 작업중
  completed: number;         // 작업 완료
  urgent: number;            // 긴급
  delayed: number;           // 지연
}

// 탭 옵션 (동적 생성용)
export interface TabOption {
  value: string;  // 'all' 또는 process_code
  label: string;  // '전체' 또는 process_name
  children?: TabOption[];  // 하위 탭 (절곡 → 재공품 세분화)
}

// 상태 라벨
export const STATUS_LABELS: Record<WorkOrderStatus, string> = {
  waiting: '대기',
  inProgress: '작업중',
  completed: '완료',
};

// 상태 배지 색상
export const STATUS_BADGE_COLORS: Record<WorkOrderStatus, string> = {
  waiting: 'bg-gray-100 text-gray-800',
  inProgress: 'bg-blue-100 text-blue-800',
  completed: 'bg-green-100 text-green-800',
};