/**
 * 异步任务系统统一导出
 * 
 * 提供平台级的异步任务处理能力，避免Serverless超时。
 * 
 * @module jobs
 * 
 * @example
 * ```typescript
 * // 方式1：使用全局队列（推荐）
 * import { jobQueue } from '@/common/jobs'
 * 
 * // 创建任务
 * const job = await jobQueue.push('asl:screening', {
 *   projectId: 123,
 *   literatureIds: [1, 2, 3]
 * })
 * 
 * // 返回任务ID给前端
 * res.send({ jobId: job.id })
 * 
 * // 前端轮询任务状态
 * const status = await jobQueue.getJob(job.id)
 * 
 * // 注册处理函数（在应用启动时）
 * jobQueue.process('asl:screening', async (job) => {
 *   // 处理任务
 *   for (const id of job.data.literatureIds) {
 *     await processLiterature(id)
 *     await jobQueue.updateProgress(job.id, ...)
 *   }
 *   // 返回结果
 *   return { success: true, processed: 3 }
 * })
 * ```
 */

export type { Job, JobStatus, JobHandler, JobQueue } from './types.js'
export { MemoryQueue } from './MemoryQueue.js'
export { JobFactory } from './JobFactory.js'

// Import for usage below
import { JobFactory } from './JobFactory.js'

/**
 * 全局任务队列实例（推荐使用）
 * 
 * 自动根据环境变量选择队列实现：
 * - QUEUE_TYPE=memory: 内存队列（本地开发）
 * - QUEUE_TYPE=database: 数据库队列（生产环境，待实现）
 */
export const jobQueue = JobFactory.getInstance()

