// 검사관리 타입 정의

// 검사유형
export type InspectionType = 'IQC' | 'PQC' | 'FQC';

// 검사 상태
export type InspectionStatus = '대기' | '진행중' | '완료';

// 판정 결과
export type JudgmentResult = '합격' | '불합격';

// 검사 항목 결과
export type ItemJudgment = '적합' | '부적합';

// 검사 항목 (가공상태 - 양호/불량)
export interface QualityCheckItem {
  id: string;
  name: string;
  type: 'quality'; // 양호/불량 선택
  spec: string;
  result?: '양호' | '불량';
  judgment?: ItemJudgment;
}

// 측정 항목 (높이, 길이 등 - 수치 입력)
export interface MeasurementItem {
  id: string;
  name: string;
  type: 'measurement'; // 수치 입력
  spec: string; // 예: "16.5 ± 1"
  unit: string; // 예: "mm"
  measuredValue?: number;
  judgment?: ItemJudgment;
}

// 검사 항목 통합 타입
export type InspectionItem = QualityCheckItem | MeasurementItem;

// 검사 데이터
export interface Inspection {
  id: string;
  inspectionNo: string; // 검사번호 (예: QC-251219-05)
  inspectionType: InspectionType;
  requestDate: string;
  inspectionDate?: string;
  itemName: string; // 품목명
  lotNo: string;
  processName: string; // 공정명
  quantity: number;
  unit: string;
  status: InspectionStatus;
  result?: JudgmentResult;
  inspector?: string; // 검사자
  items: InspectionItem[]; // 검사 항목들
  remarks?: string; // 특이사항
  opinion?: string; // 종합 의견
  attachments?: InspectionAttachment[];
}

// 첨부파일
export interface InspectionAttachment {
  id: string;
  fileName: string;
  fileUrl: string;
  fileType: string;
  uploadedAt: string;
}

// 통계 카드 데이터
export interface InspectionStats {
  waitingCount: number;
  inProgressCount: number;
  completedCount: number;
  defectRate: number; // 불량 발생률 (%)
}

// 검사 등록 폼 데이터
export interface InspectionFormData {
  lotNo: string;
  itemName: string;
  processName: string;
  quantity: number;
  inspector: string;
  remarks?: string;
  items: InspectionItem[];
}

// 검사 수정 폼 데이터
export interface InspectionEditFormData extends InspectionFormData {
  editReason: string; // 수정 사유 (필수)
}

// 필터 옵션
export interface InspectionFilter {
  search: string;
  status: InspectionStatus | '전체';
  dateRange: {
    start: string;
    end: string;
  };
}

// 테이블 컬럼 타입
export interface InspectionTableColumn {
  key: keyof Inspection | 'no' | 'checkbox' | 'actions';
  label: string;
  width?: string;
  align?: 'left' | 'center' | 'right';
}