/**
 * 工作状态枚举
 * 对应数据库 sys_dict 表中的 work_status 字典类型
 *
 * @remarks
 * 根据 Allin 系统数据库定义，包含4个固定工作状态
 */
export enum WorkStatus {
  /** 未就业 - 尚未开始工作 */
  NOT_WORKING = 'not_working',

  /** 待就业 - 已安排工作但尚未入职 */
  PRE_WORKING = 'pre_working',

  /** 已就业 - 正在工作中 */
  WORKING = 'working',

  /** 已离职 - 工作已结束 */
  RESIGNED = 'resigned'
}

/**
 * 工作状态显示名称映射
 */
export const WorkStatusLabels: Record<WorkStatus, string> = {
  [WorkStatus.NOT_WORKING]: '未就业',
  [WorkStatus.PRE_WORKING]: '待就业',
  [WorkStatus.WORKING]: '已就业',
  [WorkStatus.RESIGNED]: '已离职'
};

/**
 * 工作状态业务含义描述
 */
export const WorkStatusDescriptions: Record<WorkStatus, string> = {
  [WorkStatus.NOT_WORKING]: '尚未开始工作，正在寻找就业机会',
  [WorkStatus.PRE_WORKING]: '已安排工作但尚未入职，等待入职手续',
  [WorkStatus.WORKING]: '正在工作中，处于在职状态',
  [WorkStatus.RESIGNED]: '工作已结束，已离职'
};

/**
 * 获取工作状态显示名称
 * @param status 工作状态枚举值
 * @returns 对应的中文显示名称
 */
export function getWorkStatusLabel(status: WorkStatus): string {
  return WorkStatusLabels[status];
}

/**
 * 获取工作状态业务描述
 * @param status 工作状态枚举值
 * @returns 对应的业务含义描述
 */
export function getWorkStatusDescription(status: WorkStatus): string {
  return WorkStatusDescriptions[status];
}

/**
 * 所有有效的工作状态值数组
 */
export const WORK_STATUSES = Object.values(WorkStatus) as WorkStatus[];