/**
 * 异步任务系统类型定义
 * 
 * 用于长时间任务的异步处理，避免Serverless超时。
 */

/**
 * 任务状态
 */
export type JobStatus = 'pending' | 'processing' | 'completed' | 'failed'

/**
 * 任务对象
 */
export interface Job<T = any> {
  /** 任务唯一ID */
  id: string
  
  /** 任务类型（如：asl:screening, asl:extraction） */
  type: string
  
  /** 任务数据 */
  data: T
  
  /** 任务状态 */
  status: JobStatus
  
  /** 任务进度（0-100） */
  progress: number
  
  /** 任务结果（完成后） */
  result?: any
  
  /** 错误信息（失败时） */
  error?: string
  
  /** 创建时间 */
  createdAt: Date
  
  /** 更新时间 */
  updatedAt: Date
  
  /** 开始执行时间 */
  startedAt?: Date
  
  /** 完成时间 */
  completedAt?: Date
}

/**
 * 任务处理函数
 */
export type JobHandler<T = any> = (job: Job<T>) => Promise<any>

/**
 * 任务队列接口
 */
export interface JobQueue {
  /**
   * 添加任务到队列
   */
  push<T>(type: string, data: T): Promise<Job<T>>
  
  /**
   * 注册任务处理函数
   */
  process<T>(type: string, handler: JobHandler<T>): void
  
  /**
   * 获取任务信息
   */
  getJob(id: string): Promise<Job | null>
  
  /**
   * 更新任务进度
   */
  updateProgress(id: string, progress: number): Promise<void>
  
  /**
   * 标记任务为完成
   */
  completeJob(id: string, result: any): Promise<void>
  
  /**
   * 标记任务为失败
   */
  failJob(id: string, error: string): Promise<void>
}









