/**
 * 참조함 타입 정의
 * 열람 상태 기반 탭: 전체, 열람, 미열람
 */

// ===== 메인 탭 타입 =====
export type ReferenceTabType = 'all' | 'read' | 'unread';

// 열람 상태
export type ReadStatus = 'read' | 'unread';

// 결재 유형 (문서 종류): 지출결의서, 품의서, 비용견적서
export type ApprovalType = 'expense_report' | 'proposal' | 'expense_estimate';

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

// 필터 옵션
export type FilterOption = 'all' | 'expense_report' | 'proposal' | 'expense_estimate';

export const FILTER_OPTIONS: { value: FilterOption; label: string }[] = [
  { value: 'all', label: '전체' },
  { value: 'expense_report', label: '지출결의서' },
  { value: 'proposal', label: '품의서' },
  { value: 'expense_estimate', label: '비용견적서' },
];

// 정렬 옵션
export type SortOption = 'latest' | 'oldest' | 'draftDateAsc' | 'draftDateDesc';

export const SORT_OPTIONS: { value: SortOption; label: string }[] = [
  { value: 'latest', label: '최신순' },
  { value: 'oldest', label: '오래된순' },
  { value: 'draftDateAsc', label: '기안일 오름차순' },
  { value: 'draftDateDesc', label: '기안일 내림차순' },
];

// ===== 참조 문서 레코드 =====
export interface ReferenceRecord {
  id: string;
  documentNo: string;           // 문서번호
  approvalType: ApprovalType;   // 문서유형
  formCode?: string;            // 양식코드 (official_letter, resignation 등)
  formName?: string;            // 양식명 (공문서, 사직서 등)
  title: string;                // 제목
  draftDate: string;            // 기안일시
  drafter: string;              // 기안자
  drafterDepartment: string;    // 기안자 부서
  drafterPosition: string;      // 기안자 직급
  documentStatus: DocumentStatus; // 문서 상태 (진행중, 완료, 반려)
  readStatus: ReadStatus;       // 열람 상태
  readAt?: string;              // 열람일시
  createdAt: string;
  updatedAt: string;
}

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

export const REFERENCE_TAB_LABELS: Record<ReferenceTabType, string> = {
  all: '전체',
  read: '열람',
  unread: '미열람',
};

export const APPROVAL_TYPE_LABELS: Record<ApprovalType, string> = {
  expense_report: '지출결의서',
  proposal: '품의서',
  expense_estimate: '비용견적서',
};

export const DOCUMENT_STATUS_LABELS: Record<DocumentStatus, string> = {
  pending: '진행중',
  approved: '완료',
  rejected: '반려',
  cancelled: '회수',
  on_hold: '보류',
};

export const DOCUMENT_STATUS_COLORS: Record<DocumentStatus, string> = {
  pending: 'bg-yellow-100 text-yellow-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 READ_STATUS_LABELS: Record<ReadStatus, string> = {
  read: '열람',
  unread: '미열람',
};

export const READ_STATUS_COLORS: Record<ReadStatus, string> = {
  read: 'bg-gray-100 text-gray-800',
  unread: 'bg-blue-100 text-blue-800',
};