/**
 * 재고현황 타입 정의
 */

// 품목유형
export type ItemType = 'raw_material' | 'bent_part' | 'purchased_part' | 'sub_material' | 'consumable';

// 품목유형 라벨
export const ITEM_TYPE_LABELS: Record<ItemType, string> = {
  raw_material: '원자재',
  bent_part: '절곡부품',
  purchased_part: '구매부품',
  sub_material: '부자재',
  consumable: '소모품',
};

// 품목유형 스타일 (뱃지용)
export const ITEM_TYPE_STYLES: Record<ItemType, string> = {
  raw_material: 'bg-blue-100 text-blue-800',
  bent_part: 'bg-purple-100 text-purple-800',
  purchased_part: 'bg-gray-100 text-gray-800',
  sub_material: 'bg-green-100 text-green-800',
  consumable: 'bg-orange-100 text-orange-800',
};

// 재고 상태
export type StockStatusType = 'normal' | 'low' | 'out';

// 재고 상태 라벨
export const STOCK_STATUS_LABELS: Record<StockStatusType, string> = {
  normal: '정상',
  low: '부족',
  out: '없음',
};

// LOT 상태
export type LotStatusType = 'available' | 'reserved' | 'used';

export const LOT_STATUS_LABELS: Record<LotStatusType, string> = {
  available: '사용가능',
  reserved: '예약됨',
  used: '사용완료',
};

// 재고 목록 아이템
export interface StockItem {
  id: string;
  itemCode: string;           // 품목코드
  itemName: string;           // 품목명
  itemType: ItemType;         // 품목유형
  unit: string;               // 단위 (EA, M, m² 등)
  stockQty: number;           // 재고량
  safetyStock: number;        // 안전재고
  lotCount: number;           // LOT 개수
  lotDaysElapsed: number;     // 경과일 (가장 오래된 LOT 기준)
  status: StockStatusType;    // 상태
  location: string;           // 위치
}

// LOT별 상세 재고
export interface LotDetail {
  id: string;
  fifoOrder: number;          // FIFO 순서
  lotNo: string;              // LOT번호
  receiptDate: string;        // 입고일
  daysElapsed: number;        // 경과일
  supplier: string;           // 공급업체
  poNumber: string;           // 발주번호
  qty: number;                // 수량
  unit: string;               // 단위
  location: string;           // 위치
  status: LotStatusType;      // 상태
}

// 재고 상세 정보
export interface StockDetail {
  // 기본 정보
  id: string;
  itemCode: string;           // 품목코드
  itemName: string;           // 품목명
  itemType: ItemType;         // 품목유형
  category: string;           // 카테고리
  specification: string;      // 규격
  unit: string;               // 단위

  // 재고 현황
  currentStock: number;       // 현재 재고량
  safetyStock: number;        // 안전 재고
  location: string;           // 재고 위치
  lotCount: number;           // LOT 개수
  lastReceiptDate: string;    // 최근 입고일
  status: StockStatusType;    // 재고 상태

  // LOT별 상세 재고
  lots: LotDetail[];
}

// 통계 데이터
export interface StockStats {
  totalItems: number;         // 전체 품목 수
  normalCount: number;        // 정상 재고 수
  lowCount: number;           // 재고 부족 수
  outCount: number;           // 재고 없음 수
}

// 필터 탭
export interface FilterTab {
  key: 'all' | ItemType;
  label: string;
  count: number;
}