/**
 * 기안함 타입 정의
 */

// ===== 문서 상태 =====
export type DocumentStatus = 'draft' | 'pending' | 'inProgress' | 'approved' | 'rejected' | 'cancelled' | 'on_hold';

// ===== 필터 옵션 =====
export type FilterOption = 'all' | 'draft' | 'pending' | 'inProgress' | 'approved' | 'rejected' | 'cancelled' | 'on_hold';

export const FILTER_OPTIONS: { value: FilterOption; label: string }[] = [
  { value: 'all', label: '전체' },
  { value: 'draft', label: '임시저장' },
  { value: 'pending', label: '결재대기' },
  { value: 'inProgress', label: '진행중' },
  { value: 'approved', label: '완료' },
  { value: 'rejected', label: '반려' },
  { value: 'cancelled', label: '회수' },
  { value: 'on_hold', label: '보류' },
];

// ===== 정렬 옵션 =====
export type SortOption = 'latest' | 'oldest' | 'titleAsc' | 'titleDesc';

export const SORT_OPTIONS: { value: SortOption; label: string }[] = [
  { value: 'latest', label: '최신순' },
  { value: 'oldest', label: '오래된순' },
  { value: 'titleAsc', label: '제목 오름차순' },
  { value: 'titleDesc', label: '제목 내림차순' },
];

// ===== 결재자 정보 =====
export interface Approver {
  id: string;
  name: string;
  position: string;
  department: string;
  status: 'pending' | 'approved' | 'rejected' | 'skipped' | 'on_hold' | 'none';
  approvedAt?: string;
}

// ===== 기안 문서 레코드 =====
export interface DraftRecord {
  id: string;
  documentNo: string;        // 문서번호
  documentType: string;      // 문서제목 (양식명)
  documentTypeCode: string;  // 문서유형 코드 (proposal, expenseReport, expenseEstimate)
  title: string;             // 제목
  draftDate: string;         // 기안일자
  drafter: string;           // 기안자
  drafterPosition?: string;  // 기안자 직책
  drafterDepartment?: string;// 기안자 부서
  approvers: Approver[];     // 결재자 목록 (최대 3명)
  status: DocumentStatus;    // 문서상태
  content?: Record<string, unknown>;  // 문서 내용 (JSON)
  createdAt: string;
  updatedAt: string;
}

// ===== 상수 정의 =====

export const DOCUMENT_STATUS_LABELS: Record<DocumentStatus, string> = {
  draft: '임시저장',
  pending: '결재대기',
  inProgress: '진행중',
  approved: '완료',
  rejected: '반려',
  cancelled: '회수',
  on_hold: '보류',
};

export const DOCUMENT_STATUS_COLORS: Record<DocumentStatus, string> = {
  draft: 'bg-gray-100 text-gray-800',
  pending: 'bg-yellow-100 text-yellow-800',
  inProgress: 'bg-blue-100 text-blue-800',
  approved: 'bg-green-100 text-green-800',
  rejected: 'bg-red-100 text-red-800',
  cancelled: 'bg-orange-100 text-orange-800',
  on_hold: 'bg-purple-100 text-purple-800',
};

export const APPROVER_STATUS_COLORS: Record<Approver['status'], string> = {
  none: 'bg-gray-100 text-gray-600',
  pending: 'bg-yellow-100 text-yellow-800',
  approved: 'bg-green-100 text-green-800',
  rejected: 'bg-red-100 text-red-800',
  skipped: 'bg-gray-100 text-gray-500',
  on_hold: 'bg-purple-100 text-purple-800',
};

// ===== 기안함 현황 통계 =====
export interface DraftsSummary {
  total: number;
  draft: number;
  pending: number;
  approved: number;
  rejected: number;
}
