// 模拟器运行相关的工具函数

interface SimulatorRun {
  promptContent?: string | null
  prompt: {
    content: string
  }
  promptVersion?: {
    content: string
  } | null
}

/**
 * 统一获取提示词内容的方法
 * 优先级：自定义提示词内容 > 版本内容 > 原始提示词内容
 */
export function getPromptContent(run: SimulatorRun): string {
  // 1. 优先使用自定义提示词内容
  if (run.promptContent) {
    return run.promptContent
  }
  
  // 2. 其次使用选择的版本内容
  if (run.promptVersion?.content) {
    return run.promptVersion.content
  }
  
  // 3. 最后使用原始提示词内容
  return run.prompt.content
}

/**
 * 检查提示词内容是否被修改过
 */
export function isPromptContentModified(run: SimulatorRun): boolean {
  return !!run.promptContent
}

/**
 * 获取原始提示词内容（未修改的）
 */
export function getOriginalPromptContent(run: Pick<SimulatorRun, 'prompt' | 'promptVersion'>): string {
  return run.promptVersion?.content || run.prompt.content
}

/**
 * 计算实际费用基于模型的定价
 */
export function calculateCost(inputTokens: number, outputTokens: number, model: {
  inputCostPer1k?: number | null
  outputCostPer1k?: number | null
}): number {
  const inputCostPer1k = model.inputCostPer1k || 0
  const outputCostPer1k = model.outputCostPer1k || 0
  
  // 计算费用：token数除以1000再乘以每1k的费用
  const inputCost = (inputTokens / 1000) * inputCostPer1k
  const outputCost = (outputTokens / 1000) * outputCostPer1k
  
  return inputCost + outputCost
}