/**
 * M-AI-03: AiJobExecutionEngine 接口与注入 Token
 *
 * 薄 Worker Processor（AiInteractiveJobWorker / AiBackgroundJobWorker）
 * 依赖此接口。M-AI-03-08（#291）提供真实实现。
 *
 * 当前阶段（#288）提供 no-op 占位，使 Worker 可正常启动。
 * #291 将在 AiJobModule 中覆盖此 Provider。
 */

import type { Job } from 'bullmq';

/** 薄 Worker 传入 Engine 的 BullMQ Job 上下文（最小化） */
export interface EngineJobContext {
  /** BullMQ jobId */
  readonly jobId: string;
  /** 当前尝试次数 */
  readonly attemptMade: number;
  /** 更新进度（0–100） */
  readonly updateProgress: (progress: number) => Promise<void>;
}

export interface AiJobExecutionEngine {
  /**
   * 执行 Job 的完整管线（PREPARE → RESOLVE → EXECUTE → PROJECT → COMPLETE）。
   *
   * @param aiJobId AiJob 数据库主键
   * @param context BullMQ Job 上下文
   */
  execute(aiJobId: string, context: EngineJobContext): Promise<void>;
}

/** NestJS 注入 Token */
export const AI_JOB_EXECUTION_ENGINE = 'AI_JOB_EXECUTION_ENGINE';
