// 模拟后端原始返回格式的Mock数据 - 维度 -> agent -> { Reason, Score }
import { vueAgentList, vueAspectList } from './AgentAssignmentMock'

// 后端返回的评分项格式
export interface BackendScoreItem {
  Reason: string
  Score: number
}

// 后端返回的完整数据格式
export type BackendAgentScoreResponse = Record<string, Record<string, BackendScoreItem>>

// 模拟后端返回的原始数据结构（维度 -> agent -> { Reason, Score }）
export const mockBackendAgentScoreData: BackendAgentScoreResponse = {
  能力: {
    船舶设计师: { Reason: '展现出卓越的创造力和创新思维', Score: 4 },
    防护工程专家: { Reason: '展现出杰出的创造性问题解决能力', Score: 5 },
    病理生理学家: { Reason: '具有中等创造技能，有待提升', Score: 3 },
    药物化学家: { Reason: '在大多数情况下展现较强的创造性思维', Score: 4 },
    制剂工程师: { Reason: '展现出胜任的创造能力', Score: 3 },
    监管事务专家: { Reason: '具有较强的创造性表达能力', Score: 4 },
    物理学家: { Reason: '擅长创新性思维方法', Score: 5 },
    实验材料学家: { Reason: '展现出卓越的创造性思维和创新能力', Score: 5 },
    计算模拟专家: { Reason: '展现出良好的创造性问题解决能力', Score: 4 },
    腐蚀机理研究员: { Reason: '展现出卓越的创造性问题解决能力', Score: 5 },
    先进材料研发员: { Reason: '展现出平衡的创造能力', Score: 4 },
    肾脏病学家: { Reason: '展现出卓越的创造天赋', Score: 5 },
    临床研究协调员: { Reason: '展现出胜任的创造性思维', Score: 3 },
    中医药专家: { Reason: '展现出较强的创造性主动性', Score: 4 },
    药物安全专家: { Reason: '具有发展中的创造技能', Score: 3 },
    二维材料科学家: { Reason: '展现出卓越的创造愿景', Score: 5 },
    光电物理学家: { Reason: '展现出卓越的创造性执行力', Score: 4 },
    机器学习专家: { Reason: '具有较强的创造性问题解决能力', Score: 4 },
    流体动力学专家: { Reason: '展现出胜任的创造能力', Score: 3 },
  },
  可用性: {
    船舶设计师: { Reason: '展现出卓越的共情能力和社会意识', Score: 5 },
    防护工程专家: { Reason: '具有较强的情绪调节和人际交往技能', Score: 4 },
    病理生理学家: { Reason: '展现出卓越的情感智力', Score: 5 },
    药物化学家: { Reason: '在大多数情况下展现平均的情感智力', Score: 3 },
    制剂工程师: { Reason: '具有良好的情绪意识和沟通能力', Score: 4 },
    监管事务专家: { Reason: '在情绪意识方面偶尔表现不足', Score: 3 },
    物理学家: { Reason: '具有较强的情绪理解能力', Score: 4 },
    实验材料学家: { Reason: '展现出卓越的共情能力和社交技能', Score: 5 },
    计算模拟专家: { Reason: '具有良好的情绪调节能力', Score: 4 },
    腐蚀机理研究员: { Reason: '展现出卓越的情感智力和社会意识', Score: 5 },
    先进材料研发员: { Reason: '具有发展中的情绪意识', Score: 3 },
    肾脏病学家: { Reason: '擅长人际交往和建立关系', Score: 5 },
    临床研究协调员: { Reason: '展现出平衡的情感智力', Score: 4 },
    中医药专家: { Reason: '具有基本的情绪理解能力', Score: 3 },
    药物安全专家: { Reason: '展现出良好的情绪调节能力', Score: 4 },
    二维材料科学家: { Reason: '展现出卓越的社会意识', Score: 5 },
    光电物理学家: { Reason: '在情感智力方面需要提升', Score: 3 },
    机器学习专家: { Reason: '具有较强的共情能力', Score: 4 },
    流体动力学专家: { Reason: '具有良好的情绪沟通技能', Score: 4 },
  },
  专业性: {
    船舶设计师: { Reason: '展现出胜任的哲学推理技能', Score: 3 },
    防护工程专家: { Reason: '展现出卓越的逻辑推理和分析能力', Score: 5 },
    病理生理学家: { Reason: '展现出深刻的哲学洞察力和批判性思维', Score: 2 },
    药物化学家: { Reason: '展现出良好的哲学理解能力', Score: 1 },
    制剂工程师: { Reason: '具有基础哲学推理能力，存在一些局限', Score: 3 },
    监管事务专家: { Reason: '展现出较强的分析思维能力', Score: 4 },
    物理学家: { Reason: '展现出卓越的哲学深度', Score: 5 },
    实验材料学家: { Reason: '展现出卓越的专业分析和推理能力', Score: 5 },
    计算模拟专家: { Reason: '具有良好的批判性思维能力', Score: 4 },
    腐蚀机理研究员: { Reason: '具有较强的专业性分析和推理能力', Score: 4 },
    先进材料研发员: { Reason: '展现出卓越的逻辑推理能力', Score: 5 },
    肾脏病学家: { Reason: '具有基础的哲学理解能力', Score: 3 },
    临床研究协调员: { Reason: '展现出平衡的哲学推理能力', Score: 4 },
    中医药专家: { Reason: '需要在哲学思维方面发展', Score: 3 },
    药物安全专家: { Reason: '展现出良好的分析技能', Score: 4 },
    二维材料科学家: { Reason: '具有较强的哲学洞察力', Score: 4 },
    光电物理学家: { Reason: '擅长批判性思维和分析', Score: 5 },
    机器学习专家: { Reason: '具有基础哲学推理能力', Score: 3 },
    流体动力学专家: { Reason: '展现出卓越的哲学才能', Score: 5 },
  },
  效率: {
    船舶设计师: { Reason: '在任务完成方面展现出卓越的效率', Score: 4 },
    防护工程专家: { Reason: '擅长高效的工作流程管理', Score: 5 },
    病理生理学家: { Reason: '展现出平均的效率，有提升空间', Score: 3 },
    药物化学家: { Reason: '具有良好的时间管理技能', Score: 4 },
    制剂工程师: { Reason: '展现出胜任的效率', Score: 3 },
    监管事务专家: { Reason: '展现出卓越的生产力', Score: 5 },
    物理学家: { Reason: '具有强大的任务执行能力', Score: 4 },
    实验材料学家: { Reason: '具有良好的工作效率和时间管理', Score: 4 },
    计算模拟专家: { Reason: '展现出良好的工作流程优化能力', Score: 4 },
    腐蚀机理研究员: { Reason: '展现出卓越的效率和工作流程管理', Score: 5 },
    先进材料研发员: { Reason: '展现出足够的效率', Score: 3 },
    肾脏病学家: { Reason: '擅长快速完成任务', Score: 5 },
    临床研究协调员: { Reason: '展现出良好的生产力', Score: 4 },
    中医药专家: { Reason: '具有中等的效率水平', Score: 3 },
    药物安全专家: { Reason: '具有较强的任务效率', Score: 4 },
    二维材料科学家: { Reason: '具有良好的执行速度', Score: 4 },
    光电物理学家: { Reason: '展现出卓越的效率', Score: 5 },
    机器学习专家: { Reason: '展现出平均的生产力', Score: 3 },
    流体动力学专家: { Reason: '在执行方面具有良好的效率', Score: 4 },
  },
  准确性: {
    船舶设计师: { Reason: '展现出卓越的细节关注度', Score: 5 },
    防护工程专家: { Reason: '展现出卓越的准确性和精确度', Score: 5 },
    病理生理学家: { Reason: '展现出卓越的精确度', Score: 5 },
    药物化学家: { Reason: '展现出良好的准确性', Score: 4 },
    制剂工程师: { Reason: '展现出中等的准确性，有提升空间', Score: 3 },
    监管事务专家: { Reason: '具有较强的细节关注度', Score: 4 },
    物理学家: { Reason: '在精确度和准确性方面表现卓越', Score: 5 },
    实验材料学家: { Reason: '展现出卓越的细节导向和精确度', Score: 5 },
    计算模拟专家: { Reason: '展现出平均的准确性', Score: 3 },
    腐蚀机理研究员: { Reason: '展现出卓越的准确性和精确技能', Score: 5 },
    先进材料研发员: { Reason: '展现出卓越的准确性', Score: 5 },
    肾脏病学家: { Reason: '展现出较强的精确度', Score: 4 },
    临床研究协调员: { Reason: '展现出中等的准确性', Score: 3 },
    中医药专家: { Reason: '具有良好的细节导向能力', Score: 4 },
    药物安全专家: { Reason: '在准确性和精确度方面表现卓越', Score: 5 },
    二维材料科学家: { Reason: '展现出较强的细节关注度', Score: 4 },
    光电物理学家: { Reason: '展现出平均的准确性水平', Score: 3 },
    机器学习专家: { Reason: '在工作中具有良好的精确度', Score: 4 },
    流体动力学专家: { Reason: '展现出卓越的准确性', Score: 5 },
  },
  协作性: {
    船舶设计师: { Reason: '展现出卓越的协作技能', Score: 4 },
    防护工程专家: { Reason: '在团队合作和协作方面表现卓越', Score: 5 },
    病理生理学家: { Reason: '具有较强的协作能力', Score: 4 },
    药物化学家: { Reason: '具有中等的协作技能', Score: 3 },
    制剂工程师: { Reason: '展现出良好的团队合作精神', Score: 4 },
    监管事务专家: { Reason: '具有较强的合作能力', Score: 4 },
    物理学家: { Reason: '展现出平均的协作技能', Score: 3 },
    实验材料学家: { Reason: '在团队协作方面表现卓越', Score: 5 },
    计算模拟专家: { Reason: '展现出良好的合作工作能力', Score: 4 },
    腐蚀机理研究员: { Reason: '在团队协作和合作方面表现卓越', Score: 5 },
    先进材料研发员: { Reason: '具有中等的协作水平', Score: 3 },
    肾脏病学家: { Reason: '展现出良好的协作技能', Score: 4 },
    临床研究协调员: { Reason: '在协调和团队合作方面表现卓越', Score: 5 },
    中医药专家: { Reason: '具有较强的合作能力', Score: 4 },
    药物安全专家: { Reason: '展现出平均的协作水平', Score: 3 },
    二维材料科学家: { Reason: '展现出良好的团队合作精神', Score: 4 },
    光电物理学家: { Reason: '具有较强的协作技能', Score: 4 },
    机器学习专家: { Reason: '在团队协作方面表现卓越', Score: 5 },
    流体动力学专家: { Reason: '具有中等的协作能力', Score: 3 },
  },
}

// 模拟后端API调用 - agentSelectModifyInit
export const mockBackendAgentSelectModifyInit = async (): Promise<BackendAgentScoreResponse> => {
  // 模拟网络延迟 300ms
  await new Promise(resolve => setTimeout(resolve, 300))
  return mockBackendAgentScoreData
}

// 模拟后端API调用 - agentSelectModifyAddAspect（添加新维度）
export const mockBackendAgentSelectModifyAddAspect = async (
  aspectList: string[]
): Promise<BackendAgentScoreResponse> => {
  // 模拟网络延迟 500ms
  await new Promise(resolve => setTimeout(resolve, 500))

  // 获取新添加的维度（最后一个）
  const newAspect = aspectList[aspectList.length - 1]
  if (!newAspect) {
    return {}
  }

  // 生成该维度下所有agent的评分
  const aspectData: Record<string, BackendScoreItem> = {}

  vueAgentList.forEach(agent => {
    const score = Math.floor(Math.random() * 5) + 1
    let reason = ''
    switch (score) {
      case 5:
        reason = `在"${newAspect}"方面表现卓越，展现出杰出的能力和深刻的理解`
        break
      case 4:
        reason = `在"${newAspect}"方面表现优秀，具有良好的专业能力和执行力`
        break
      case 3:
        reason = `在"${newAspect}"方面表现合格，能够完成相关任务`
        break
      case 2:
        reason = `在"${newAspect}"方面表现一般，仍有提升空间`
        break
      case 1:
        reason = `在"${newAspect}"方面需要加强，建议进一步提升相关能力`
        break
    }
    aspectData[agent] = { Reason: reason, Score: score }
  })

  return {
    [newAspect]: aspectData
  }
}
