/**
 * 订单状态枚举
 * 对应数据库 sys_dict 表中的 order_status 字典类型
 *
 * @remarks
 * 根据 Allin 系统数据库定义，包含5个固定订单状态
 */
export enum OrderStatus {
  /** 草稿 - 订单已创建但未提交 */
  DRAFT = 'draft',

  /** 已确认 - 订单已提交并确认 */
  CONFIRMED = 'confirmed',

  /** 进行中 - 订单正在执行中 */
  IN_PROGRESS = 'in_progress',

  /** 已完成 - 订单已成功完成 */
  COMPLETED = 'completed',

  /** 已取消 - 订单已被取消 */
  CANCELLED = 'cancelled'
}

/**
 * 订单状态显示名称映射
 */
export const OrderStatusLabels: Record<OrderStatus, string> = {
  [OrderStatus.DRAFT]: '草稿',
  [OrderStatus.CONFIRMED]: '已确认',
  [OrderStatus.IN_PROGRESS]: '进行中',
  [OrderStatus.COMPLETED]: '已完成',
  [OrderStatus.CANCELLED]: '已取消'
};

/**
 * 订单状态业务含义描述
 */
export const OrderStatusDescriptions: Record<OrderStatus, string> = {
  [OrderStatus.DRAFT]: '订单已创建但未提交，可继续编辑',
  [OrderStatus.CONFIRMED]: '订单已提交并确认，等待执行',
  [OrderStatus.IN_PROGRESS]: '订单正在执行中，相关人员正在处理',
  [OrderStatus.COMPLETED]: '订单已成功完成，所有工作已结束',
  [OrderStatus.CANCELLED]: '订单已被取消，不再执行'
};

/**
 * 获取订单状态显示名称
 * @param status 订单状态枚举值
 * @returns 对应的中文显示名称
 */
export function getOrderStatusLabel(status: OrderStatus): string {
  return OrderStatusLabels[status];
}

/**
 * 获取订单状态业务描述
 * @param status 订单状态枚举值
 * @returns 对应的业务含义描述
 */
export function getOrderStatusDescription(status: OrderStatus): string {
  return OrderStatusDescriptions[status];
}

/**
 * 所有有效的订单状态值数组
 */
export const ORDER_STATUSES = Object.values(OrderStatus) as OrderStatus[];