/**
 * 점검표 관리 타입 정의
 */

// ============================================================================
// 점검표 (Checklist)
// ============================================================================

export interface Checklist {
  id: string;
  checklistCode: string;       // 점검표 번호
  checklistName: string;       // 점검표명
  itemCount: number;           // 항목 수
  documentCount: number;       // 문서 수
  status: '사용' | '미사용';
  order: number;               // 정렬 순서
  items?: ChecklistItem[];     // 하위 항목 목록
  createdAt: string;
  updatedAt: string;
}

export interface ChecklistFormData {
  checklistName: string;
  status: '사용' | '미사용';
}

// ============================================================================
// 점검표 항목 (Checklist Item)
// ============================================================================

export interface ChecklistItem {
  id: string;
  checklistId: string;         // 소속 점검표 ID
  itemCode: string;            // 항목 번호
  itemName: string;            // 항목명
  description: string;         // 소개
  documentCount: number;       // 문서 수
  status: '사용' | '미사용';
  order: number;               // 정렬 순서
  documents?: ChecklistDocument[]; // 하위 문서 목록
  createdAt: string;
  updatedAt: string;
}

export interface ChecklistItemFormData {
  itemName: string;
  description: string;
  status: '사용' | '미사용';
  documents: ChecklistDocumentFormData[];
}

// ============================================================================
// 점검표 문서 (Checklist Document)
// ============================================================================

export interface ChecklistDocument {
  id: string;
  itemId: string;              // 소속 항목 ID
  documentCode: string;        // 문서 번호
  documentName: string;        // 문서명 (파일명)
  revision: string;            // 개정 (REV12 등)
  effectiveDate: string;       // 시행일
  order: number;               // 정렬 순서
}

export interface ChecklistDocumentFormData {
  id?: string;
  documentCode: string;
  documentName: string;
  revision: string;
  effectiveDate: string;
  order: number;
}