/**
 * 결재함 타입 정의
 * 4개 메인 탭: 전체결재, 미결재, 결재완료, 결재반려
 */

// ===== 메인 탭 타입 =====
export type ApprovalTabType = 'all' | 'requested' | 'scheduled' | 'completed' | 'rejected';

// 결재 상태
export type ApprovalStatus = 'requested' | 'scheduled' | 'completed' | 'rejected';

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

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

export const FILTER_OPTIONS: { value: FilterOption; label: string }[] = [
  { value: 'all', label: '전체' },
  { value: 'expense_report', label: '지출결의서' },
  { value: 'proposal', label: '품의서' },
  { value: 'expense_estimate', label: '비용견적서' },
  { value: 'document', 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 ApprovalRecord {
  id: string;
  documentNo: string;          // 문서번호
  approvalType: ApprovalType;  // 결재유형 (휴가, 경비 등)
  formCode?: string;           // 양식코드
  formName?: string;           // 양식명
  documentStatus: string;      // 문서상태
  title: string;               // 제목
  draftDate: string;           // 기안일
  drafter: string;             // 기안자
  drafterDepartment: string;   // 기안자 부서
  drafterPosition: string;     // 기안자 직급
  approvalDate?: string;       // 결재일
  approver?: string;           // 결재자
  status: ApprovalStatus;      // 결재 상태
  priority?: 'high' | 'normal' | 'low'; // 우선순위
  createdAt: string;
  updatedAt: string;
}

// ===== 폼 데이터 =====
export interface ApprovalFormData {
  documentId: string;
  action: 'approve' | 'reject';
  comment?: string;
}

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

export const APPROVAL_TAB_LABELS: Record<ApprovalTabType, string> = {
  all: '전체결재',
  requested: '결재 요청',
  scheduled: '예정',
  completed: '처리 완료',
  rejected: '반려',
};

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

export const APPROVAL_TYPE_COLORS: Record<ApprovalType, string> = {
  expense_report: 'blue',
  proposal: 'green',
  expense_estimate: 'purple',
  document: 'orange',
};

export const APPROVAL_STATUS_LABELS: Record<ApprovalStatus, string> = {
  requested: '결재 요청',
  scheduled: '예정',
  completed: '처리 완료',
  rejected: '반려',
};

export const APPROVAL_STATUS_COLORS: Record<ApprovalStatus, string> = {
  requested: 'bg-yellow-100 text-yellow-800',
  scheduled: 'bg-blue-100 text-blue-800',
  completed: 'bg-green-100 text-green-800',
  rejected: 'bg-red-100 text-red-800',
};