// fill_stepTask 接口的 Mock API
// 简化版本：硬编码多个流程卡片的填充内容（支持多个分支方案）

import type { IRawStepTask } from '@/stores'

// 后端返回的数据格式
export type FillStepTaskResponse = IRawStepTask

/**
 * Mock API：模拟后端 fill_stepTask 接口调用
 *
 * 根据 stepTask 的 StepName 返回对应的填充内容
 * 支持多个分支方案的轮询选择
 *
 * @param General_Goal - 总体目标
 * @param stepTask - 待填充的任务（包含基本字段）
 * @returns Promise<IRawStepTask> - 返回填充了 AgentSelection 和 TaskProcess 的完整任务
 */
export const mockFillStepTaskAPI = async (params: {
  General_Goal: string
  stepTask: any
}): Promise<IRawStepTask> => {
  // 模拟网络延迟 300ms
  await new Promise((resolve) => setTimeout(resolve, 300))

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

  const stepName = params.stepTask.StepName

  // 🆕 使用轮询方式选择填充方案（依次循环使用所有分支方案）
  const branchIndexKey = `fill-step-task-index-${params.stepTask?.Id || stepName || 'default'}`
  let lastIndex = parseInt(sessionStorage.getItem(branchIndexKey) || '0')
  const totalBranches = 4 // 总共4个分支方案
  const selectedBranchIndex = (lastIndex + 1) % totalBranches
  sessionStorage.setItem(branchIndexKey, selectedBranchIndex.toString())

  console.log('[Mock API] fill_stepTask 选择分支方案:', selectedBranchIndex + 1, '/', totalBranches)

  // ==================== 第一个任务组 ====================
  if (stepName === '分析用户需求' || stepName === '需求快速原型' || stepName === '需求深度分析' || stepName === '迭代规划') {
    let filledTask: IRawStepTask

    if (selectedBranchIndex === 0) {
      // 第一个分支方案：分析用户需求
      filledTask = {
        Id: params.stepTask.Id || 'task-1',
        StepName: '分析用户需求',
        TaskContent: '分析用户需求，制定项目开发计划',
        InputObject_List: ['用户需求文档', '技术规范'],
        OutputObject: '项目开发计划书',
        AgentSelection: ['腐蚀机理研究员', '实验材料学家'],
        Collaboration_Brief_frontEnd: {
          template: '!腐蚀机理研究员!负责!腐蚀类型识别-0!，!实验材料学家!负责!腐蚀类型识别-1!',
          data: {
            腐蚀机理研究员: {
              text: '腐蚀机理研究员',
              style: { background: 'hsl(210, 70%, 50%)' },
            },
            实验材料学家: {
              text: '实验材料学家',
              style: { background: 'hsl(120, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-1-1',
            ActionType: 'Propose',
            AgentName: '腐蚀机理研究员',
            Description: '分析腐蚀环境和介质特征，识别潜在腐蚀类型',
            ImportantInput: ['InputObject:腐蚀类型及成因列表'],
          },
          {
            ID: 'action-1-2',
            ActionType: 'Propose',
            AgentName: '实验材料学家',
            Description: '设计腐蚀实验方案，确定测试参数',
            ImportantInput: ['ActionResult:action-1-1'],
          },
          {
            ID: 'action-1-3',
            ActionType: 'Critique',
            AgentName: '腐蚀机理研究员',
            Description: '评估实验方案的可行性',
            ImportantInput: [
              'ActionResult:action-1-2',
              'ActionResult:action-1-1',
              'InputObject:腐蚀类型及成因列表',
            ],
          },
          {
            ID: 'action-1-4',
            ActionType: 'Improve',
            AgentName: '实验材料学家',
            Description: '优化实验设计，完善测试流程',
            ImportantInput: ['ActionResult:action-1-3'],
          },
          {
            ID: 'action-1-5',
            ActionType: 'Finalize',
            AgentName: '腐蚀机理研究员',
            Description: '确认最终的腐蚀类型识别方案',
            ImportantInput: ['ActionResult:action-1-4', 'ActionResult:action-1-3'],
          },
        ],
      }
    } else if (selectedBranchIndex === 1) {
      // 第二个分支方案：需求快速原型
      filledTask = {
        Id: params.stepTask.Id || 'task-1',
        StepName: '需求快速原型',
        TaskContent: '构建快速原型验证核心功能',
        InputObject_List: ['腐蚀类型及成因列表'],
        OutputObject: '原型系统',
        AgentSelection: ['实验材料学家', '防护工程专家'],
        Collaboration_Brief_frontEnd: {
          template: '!实验材料学家!负责!需求快速原型-0!，!防护工程专家!负责!需求快速原型-1!',
          data: {
            实验材料学家: {
              text: '实验材料学家',
              style: { background: 'hsl(120, 70%, 50%)' },
            },
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-1-1-branch2',
            ActionType: 'Propose',
            AgentName: '实验材料学家',
            Description: '基于腐蚀类型列表，设计快速原型验证方案',
            ImportantInput: ['InputObject:腐蚀类型及成因列表'],
          },
          {
            ID: 'action-1-2-branch2',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '实现原型核心功能和用户界面',
            ImportantInput: ['ActionResult:action-1-1-branch2'],
          },
          {
            ID: 'action-1-3-branch2',
            ActionType: 'Critique',
            AgentName: '实验材料学家',
            Description: '评估原型功能完整性和用户体验',
            ImportantInput: ['ActionResult:action-1-2-branch2'],
          },
          {
            ID: 'action-1-4-branch2',
            ActionType: 'Improve',
            AgentName: '防护工程专家',
            Description: '根据反馈优化原型功能和界面',
            ImportantInput: ['ActionResult:action-1-3-branch2'],
          },
          {
            ID: 'action-1-5-branch2',
            ActionType: 'Finalize',
            AgentName: '实验材料学家',
            Description: '确认最终版本的原型系统',
            ImportantInput: ['ActionResult:action-1-4-branch2'],
          },
        ],
      }
    } else if (selectedBranchIndex === 2) {
      // 第三个分支方案：需求深度分析
      filledTask = {
        Id: params.stepTask.Id || 'task-1',
        StepName: '需求深度分析',
        TaskContent: '深入分析用户需求和技术可行性',
        InputObject_List: ['腐蚀类型及成因列表'],
        OutputObject: '详细需求分析报告',
        AgentSelection: ['腐蚀机理研究员', '防护工程专家'],
        Collaboration_Brief_frontEnd: {
          template: '!腐蚀机理研究员!负责!需求深度分析-0!，!防护工程专家!负责!需求深度分析-1!',
          data: {
            腐蚀机理研究员: {
              text: '腐蚀机理研究员',
              style: { background: 'hsl(210, 70%, 50%)' },
            },
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-1-1-branch3',
            ActionType: 'Propose',
            AgentName: '腐蚀机理研究员',
            Description: '全面分析腐蚀环境和技术约束条件',
            ImportantInput: ['InputObject:腐蚀类型及成因列表'],
          },
          {
            ID: 'action-1-2-branch3',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '评估技术可行性和防护方案',
            ImportantInput: ['ActionResult:action-1-1-branch3'],
          },
          {
            ID: 'action-1-3-branch3',
            ActionType: 'Critique',
            AgentName: '腐蚀机理研究员',
            Description: '评审需求分析的完整性和准确性',
            ImportantInput: ['ActionResult:action-1-2-branch3', 'ActionResult:action-1-1-branch3'],
          },
          {
            ID: 'action-1-4-branch3',
            ActionType: 'Improve',
            AgentName: '防护工程专家',
            Description: '补充技术风险评估和应对策略',
            ImportantInput: ['ActionResult:action-1-3-branch3'],
          },
          {
            ID: 'action-1-5-branch3',
            ActionType: 'Finalize',
            AgentName: '腐蚀机理研究员',
            Description: '确认详细需求分析报告',
            ImportantInput: ['ActionResult:action-1-4-branch3', 'ActionResult:action-1-3-branch3'],
          },
        ],
      }
    } else {
      // 第四个分支方案：迭代规划
      filledTask = {
        Id: params.stepTask.Id || 'task-1',
        StepName: '迭代规划',
        TaskContent: '制定敏捷开发迭代计划',
        InputObject_List: ['腐蚀类型及成因列表'],
        OutputObject: '迭代计划',
        AgentSelection: ['防护工程专家', '腐蚀机理研究员'],
        Collaboration_Brief_frontEnd: {
          template: '!防护工程专家!负责!迭代规划-0!，!腐蚀机理研究员!负责!迭代规划-1!',
          data: {
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
            腐蚀机理研究员: {
              text: '腐蚀机理研究员',
              style: { background: 'hsl(210, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-1-1-branch4',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '制定敏捷开发总体框架和迭代周期',
            ImportantInput: ['InputObject:腐蚀类型及成因列表'],
          },
          {
            ID: 'action-1-2-branch4',
            ActionType: 'Propose',
            AgentName: '腐蚀机理研究员',
            Description: '规划各迭代阶段的技术验证重点',
            ImportantInput: ['ActionResult:action-1-1-branch4'],
          },
          {
            ID: 'action-1-3-branch4',
            ActionType: 'Critique',
            AgentName: '防护工程专家',
            Description: '评审迭代计划的合理性和可执行性',
            ImportantInput: ['ActionResult:action-1-2-branch4'],
          },
          {
            ID: 'action-1-4-branch4',
            ActionType: 'Improve',
            AgentName: '腐蚀机理研究员',
            Description: '优化迭代节奏和里程碑设置',
            ImportantInput: ['ActionResult:action-1-3-branch4'],
          },
          {
            ID: 'action-1-5-branch4',
            ActionType: 'Finalize',
            AgentName: '防护工程专家',
            Description: '确认最终迭代计划',
            ImportantInput: ['ActionResult:action-1-4-branch4', 'ActionResult:action-1-3-branch4'],
          },
        ],
      }
    }

    console.log('[Mock API] fill_stepTask 返回数据:', filledTask)
    return filledTask
  }
  // ==================== 第二个任务组 ====================
  else if (stepName === '系统设计与架构' || stepName === '原型测试与优化' || stepName === '质量保障设计' || stepName === '快速开发与验证') {
    let filledTask: IRawStepTask

    if (selectedBranchIndex === 0) {
      // 第一个分支方案：系统设计与架构
      filledTask = {
        Id: params.stepTask.Id || 'task-2',
        StepName: '系统设计与架构',
        TaskContent: '设计系统架构和数据库结构',
        InputObject_List: ['项目开发计划书'],
        OutputObject: '系统设计文档',
        AgentSelection: ['腐蚀机理研究员', '防护工程专家'],
        Collaboration_Brief_frontEnd: {
          template: '!腐蚀机理研究员!负责!系统设计与架构-0!，!防护工程专家!负责!系统设计与架构-1!',
          data: {
            腐蚀机理研究员: {
              text: '腐蚀机理研究员',
              style: { background: 'hsl(210, 70%, 50%)' },
            },
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-2-1',
            ActionType: 'Propose',
            AgentName: '腐蚀机理研究员',
            Description: '分析系统功能需求，提出整体架构方案',
            ImportantInput: ['InputObject:项目开发计划书'],
          },
          {
            ID: 'action-2-2',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '设计防护系统架构和数据库模型',
            ImportantInput: ['ActionResult:action-2-1'],
          },
          {
            ID: 'action-2-3',
            ActionType: 'Critique',
            AgentName: '腐蚀机理研究员',
            Description: '评审架构设计的合理性和可扩展性',
            ImportantInput: ['ActionResult:action-2-2', 'InputObject:项目开发计划书'],
          },
          {
            ID: 'action-2-4',
            ActionType: 'Improve',
            AgentName: '防护工程专家',
            Description: '优化架构设计，补充性能和安全方案',
            ImportantInput: ['ActionResult:action-2-3', 'ActionResult:action-2-2'],
          },
          {
            ID: 'action-2-5',
            ActionType: 'Finalize',
            AgentName: '腐蚀机理研究员',
            Description: '确认最终系统架构设计文档',
            ImportantInput: ['ActionResult:action-2-4', 'ActionResult:action-2-3'],
          },
        ],
      }
    } else if (selectedBranchIndex === 1) {
      // 第二个分支方案：原型测试与优化
      filledTask = {
        Id: params.stepTask.Id || 'task-2',
        StepName: '原型测试与优化',
        TaskContent: '测试原型并根据反馈快速迭代',
        InputObject_List: ['原型系统'],
        OutputObject: '优化后的原型',
        AgentSelection: ['腐蚀机理研究员', '实验材料学家'],
        Collaboration_Brief_frontEnd: {
          template: '!腐蚀机理研究员!负责!原型测试与优化-0!，!实验材料学家!负责!原型测试与优化-1!',
          data: {
            腐蚀机理研究员: {
              text: '腐蚀机理研究员',
              style: { background: 'hsl(210, 70%, 50%)' },
            },
            实验材料学家: {
              text: '实验材料学家',
              style: { background: 'hsl(120, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-2-1-branch2',
            ActionType: 'Propose',
            AgentName: '腐蚀机理研究员',
            Description: '制定原型测试计划和验证标准',
            ImportantInput: ['InputObject:原型系统'],
          },
          {
            ID: 'action-2-2-branch2',
            ActionType: 'Propose',
            AgentName: '实验材料学家',
            Description: '执行原型测试并收集性能数据',
            ImportantInput: ['ActionResult:action-2-1-branch2'],
          },
          {
            ID: 'action-2-3-branch2',
            ActionType: 'Critique',
            AgentName: '腐蚀机理研究员',
            Description: '分析测试结果和用户反馈',
            ImportantInput: ['ActionResult:action-2-2-branch2'],
          },
          {
            ID: 'action-2-4-branch2',
            ActionType: 'Improve',
            AgentName: '实验材料学家',
            Description: '根据测试结果优化原型功能和性能',
            ImportantInput: ['ActionResult:action-2-3-branch2'],
          },
          {
            ID: 'action-2-5-branch2',
            ActionType: 'Finalize',
            AgentName: '腐蚀机理研究员',
            Description: '确认优化后的原型版本',
            ImportantInput: ['ActionResult:action-2-4-branch2', 'ActionResult:action-2-3-branch2'],
          },
        ],
      }
    } else if (selectedBranchIndex === 2) {
      // 第三个分支方案：质量保障设计
      filledTask = {
        Id: params.stepTask.Id || 'task-2',
        StepName: '质量保障设计',
        TaskContent: '设计质量保障体系和测试方案',
        InputObject_List: ['详细需求分析报告'],
        OutputObject: '质量保障方案',
        AgentSelection: ['实验材料学家', '防护工程专家'],
        Collaboration_Brief_frontEnd: {
          template: '!实验材料学家!负责!质量保障设计-0!，!防护工程专家!负责!质量保障设计-1!',
          data: {
            实验材料学家: {
              text: '实验材料学家',
              style: { background: 'hsl(120, 70%, 50%)' },
            },
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-2-1-branch3',
            ActionType: 'Propose',
            AgentName: '实验材料学家',
            Description: '制定质量标准和测试指标体系',
            ImportantInput: ['InputObject:详细需求分析报告'],
          },
          {
            ID: 'action-2-2-branch3',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '设计质量保障流程和验证方案',
            ImportantInput: ['ActionResult:action-2-1-branch3'],
          },
          {
            ID: 'action-2-3-branch3',
            ActionType: 'Critique',
            AgentName: '实验材料学家',
            Description: '评审质量保障方案的完整性',
            ImportantInput: ['ActionResult:action-2-2-branch3'],
          },
          {
            ID: 'action-2-4-branch3',
            ActionType: 'Improve',
            AgentName: '防护工程专家',
            Description: '完善质量保障方案，补充风险控制',
            ImportantInput: ['ActionResult:action-2-3-branch3'],
          },
          {
            ID: 'action-2-5-branch3',
            ActionType: 'Finalize',
            AgentName: '实验材料学家',
            Description: '确认最终质量保障方案',
            ImportantInput: ['ActionResult:action-2-4-branch3', 'ActionResult:action-2-3-branch3'],
          },
        ],
      }
    } else {
      // 第四个分支方案：快速开发与验证
      filledTask = {
        Id: params.stepTask.Id || 'task-2',
        StepName: '快速开发与验证',
        TaskContent: '快速开发并持续验证功能',
        InputObject_List: ['迭代计划'],
        OutputObject: '可运行的功能模块',
        AgentSelection: ['实验材料学家', '防护工程专家'],
        Collaboration_Brief_frontEnd: {
          template: '!实验材料学家!负责!快速开发与验证-0!，!防护工程专家!负责!快速开发与验证-1!',
          data: {
            实验材料学家: {
              text: '实验材料学家',
              style: { background: 'hsl(120, 70%, 50%)' },
            },
            防护工程专家: {
              text: '防护工程专家',
              style: { background: 'hsl(30, 70%, 50%)' },
            },
          },
        },
        TaskProcess: [
          {
            ID: 'action-2-1-branch4',
            ActionType: 'Propose',
            AgentName: '实验材料学家',
            Description: '根据迭代计划快速开发功能模块',
            ImportantInput: ['InputObject:迭代计划'],
          },
          {
            ID: 'action-2-2-branch4',
            ActionType: 'Propose',
            AgentName: '防护工程专家',
            Description: '实现功能防护机制和验证逻辑',
            ImportantInput: ['ActionResult:action-2-1-branch4'],
          },
          {
            ID: 'action-2-3-branch4',
            ActionType: 'Critique',
            AgentName: '实验材料学家',
            Description: '验证功能模块的正确性和性能',
            ImportantInput: ['ActionResult:action-2-2-branch4'],
          },
          {
            ID: 'action-2-4-branch4',
            ActionType: 'Improve',
            AgentName: '防护工程专家',
            Description: '根据验证结果优化功能实现',
            ImportantInput: ['ActionResult:action-2-3-branch4'],
          },
          {
            ID: 'action-2-5-branch4',
            ActionType: 'Finalize',
            AgentName: '实验材料学家',
            Description: '确认可运行的功能模块',
            ImportantInput: ['ActionResult:action-2-4-branch4', 'ActionResult:action-2-3-branch4'],
          },
        ],
      }
    }

    console.log('[Mock API] fill_stepTask 返回数据:', filledTask)
    return filledTask
  }
  // ==================== 第三个任务组（仅第三个分支方案） ====================
  else if (stepName === '系统开发与测试') {
    const filledTask: IRawStepTask = {
      Id: params.stepTask.Id || 'task-3',
      StepName: '系统开发与测试',
      TaskContent: '按质量标准进行系统开发和测试',
      InputObject_List: ['质量保障方案'],
      OutputObject: '经过完整测试的系统',
      AgentSelection: ['腐蚀机理研究员', '实验材料学家'],
      Collaboration_Brief_frontEnd: {
        template: '!腐蚀机理研究员!负责!系统开发与测试-0!，!实验材料学家!负责!系统开发与测试-1!',
        data: {
          腐蚀机理研究员: {
            text: '腐蚀机理研究员',
            style: { background: 'hsl(210, 70%, 50%)' },
          },
          实验材料学家: {
            text: '实验材料学家',
            style: { background: 'hsl(120, 70%, 50%)' },
          },
        },
      },
      TaskProcess: [
        {
          ID: 'action-3-1',
          ActionType: 'Propose',
          AgentName: '腐蚀机理研究员',
          Description: '根据质量标准制定系统开发计划',
          ImportantInput: ['InputObject:质量保障方案'],
        },
        {
          ID: 'action-3-2',
          ActionType: 'Propose',
          AgentName: '实验材料学家',
          Description: '按标准实施系统开发和单元测试',
          ImportantInput: ['ActionResult:action-3-1'],
        },
        {
          ID: 'action-3-3',
          ActionType: 'Critique',
          AgentName: '腐蚀机理研究员',
          Description: '评审系统开发质量和测试覆盖率',
          ImportantInput: ['ActionResult:action-3-2'],
        },
        {
          ID: 'action-3-4',
          ActionType: 'Improve',
          AgentName: '实验材料学家',
          Description: '根据评审结果完善系统功能和测试',
          ImportantInput: ['ActionResult:action-3-3'],
        },
        {
          ID: 'action-3-5',
          ActionType: 'Finalize',
          AgentName: '腐蚀机理研究员',
          Description: '确认经过完整测试的系统版本',
          ImportantInput: ['ActionResult:action-3-4', 'ActionResult:action-3-3'],
        },
      ],
    }

    console.log('[Mock API] fill_stepTask 返回数据:', filledTask)
    return filledTask
  }
  // ==================== 其他任务 ====================
  else {
    // 其他任务，返回空 TaskProcess
    console.warn('[Mock API] 未知的 StepName:', stepName)
    return {
      ...params.stepTask,
      AgentSelection: [],
      TaskProcess: [],
    }
  }
}

export default mockFillStepTaskAPI
