// branch_TaskProcess 接口的 Mock 数据和 Mock API
export interface BranchAction {
  ID: string
  ActionType: string
  AgentName: string
  Description: string
  ImportantInput: string[]
}

export type BranchTaskProcessResponse = BranchAction[][]

// Mock 数据：模拟后端返回的原始任务流程数据（2D 数组）
// 格式：[[action1, action2], [action3, action4]]
const mockBranchTaskProcessDataRaw: BranchAction[][] = [
  // 第一个任务分支方案
  [
    {
      ID: 'agent3',
      ActionType: 'Critique',
      AgentName: '实验材料学家',
      Description: '详细分析用户需求文档',
      ImportantInput: ['agent2'],
    },
    {
      ID: 'agent4',
      ActionType: 'Critique',
      AgentName: '腐蚀机理研究员',
      Description: '设计系统整体架构',
      ImportantInput: ['agent3'],
    },
    {
      ID: 'agent5',
      ActionType: 'Improve',
      AgentName: '防护工程专家',
      Description: '实现系统核心功能',
      ImportantInput: ['agent4'],
    },
    {
      ID: 'agent6',
      ActionType: 'Finalize',
      AgentName: '实验材料学家',
      Description: '进行系统集成测试',
      ImportantInput: ['agent5'],
    },
  ],
  // 第二个任务分支方案
  [
    {
      ID: 'agent7',
      ActionType: 'Critique',
      AgentName: '实验材料学家',
      Description: '深入分析用户需求和技术约束',
      ImportantInput: ['agent2'],
    },
    {
      ID: 'agent8',
      ActionType: 'Critique',
      AgentName: '防护工程专家',
      Description: '设计系统技术架构和数据流',
      ImportantInput: ['agent8'],
    },
    {
      ID: 'agent9',
      ActionType: 'Improve',
      AgentName: '腐蚀机理研究员',
      Description: '评估系统安全性',
      ImportantInput: ['agent4'],
    },
    {
      ID: 'agent10',
      ActionType: 'Finalize',
      AgentName: '实验材料学家',
      Description: '完成系统安全测试',
      ImportantInput: ['agent9'],
    },
  ],

  //第三个任务分支方案
  [
    {
      ID: 'agent12',
      ActionType: 'Critique',
      AgentName: '腐蚀机理研究员',
      Description: '设计系统整体架构',
      ImportantInput: ['agent11'],
    },
    {
      ID: 'agent13',
      ActionType: 'Improve',
      AgentName: '防护工程专家',
      Description: '实现系统核心功能',
      ImportantInput: ['agent12'],
    },
    {
      ID: 'agent14',
      ActionType: 'Finalize',
      AgentName: '实验材料学家',
      Description: '进行系统集成测试',
      ImportantInput: ['agent13'],
    },
  ],
]

/**
 * Mock API：模拟后端 branch_TaskProcess 接口调用
 *
 * @param branch_Number - 分支数量
 * @param Modification_Requirement - 修改需求
 * @param Existing_Steps - 现有步骤列表（包含完整信息的对象数组）
 * @param Baseline_Completion - 基线完成度
 * @param stepTaskExisting - 现有任务
 * @param General_Goal - 总体目标
 * @returns Promise<BranchAction[][]> - 返回 2D 数组，与后端格式完全一致
 */
export const mockBranchTaskProcessAPI = async (params: {
  branch_Number: number
  Modification_Requirement: string
  Existing_Steps: BranchAction[]
  Baseline_Completion: number
  stepTaskExisting: any
  General_Goal: string
}): Promise<BranchAction[][]> => {
  // 模拟网络延迟 800ms
  await new Promise((resolve) => setTimeout(resolve, 800))

  console.log('[Mock API] branch_TaskProcess 调用参数:', params)

  // 🆕 使用轮询方式选择分支方案（依次循环使用所有分支方案）
  const totalBranches = mockBranchTaskProcessDataRaw.length
  const sessionKey = `branch-task-process-index-${params.stepTaskExisting?.Id || 'default'}`

  // 获取上一次的选择索引
  let lastIndex = parseInt(sessionStorage.getItem(sessionKey) || '0')

  // 计算本次的选择索引（轮询到下一个分支）
  const selectedBranchIndex = (lastIndex + 1) % totalBranches

  // 保存本次的选择索引
  sessionStorage.setItem(sessionKey, selectedBranchIndex.toString())

  const rawBranchData = mockBranchTaskProcessDataRaw[selectedBranchIndex] || []

  console.log(
    '[Mock API] branch_TaskProcess 选择分支方案:',
    selectedBranchIndex + 1,
    '/',
    totalBranches,
  )
  console.log('[Mock API] branch_TaskProcess 返回数据:', rawBranchData)

  // 直接返回 2D 数组，与后端格式完全一致
  return [rawBranchData]
}

export default mockBranchTaskProcessAPI
