/**
 * Mock API - 法案数据模拟接口
 * 所有数据集中管理，方便后续替换为真实 API
 */

// ===== 筛选项配置数据 =====

const DOMAIN_OPTIONS = [
  { id: 'all', label: '全部领域' },
  { id: 'ai', label: '人工智能' },
  { id: 'ic', label: '集成电路' },
  { id: 'quantum', label: '量子科技' },
  { id: 'network', label: '新一代通信网络' },
  { id: 'biotech', label: '生物技术' },
  { id: 'ocean', label: '海洋' },
  { id: 'deep-sea', label: '深海' },
  { id: 'polar', label: '极地' },
  { id: 'nuclear', label: '核' },
  { id: 'other', label: '其他' },
]

const TIME_OPTIONS = [
  { id: 'all', label: '全部时间' },
  { id: '2025', label: '2025年' },
  { id: '2024', label: '2024年' },
  { id: '2023', label: '2023年' },
  { id: '2022', label: '2022年' },
  { id: '2021', label: '2021年' },
  { id: 'earlier', label: '更早' },
]

// ===== 进度阶段配置 =====

const PROGRESS_STAGES = ['提出', '众议院通过', '参议院通过', '分歧协调', '提交总统', '法案通过']

// ===== 法案模拟数据 =====

const MOCK_BILLS = [
  {
    id: 1,
    billNumber: 'H.R.1',
    billSerial: '第1234',
    title: '国家人工智能安全法案',
    titleEn: 'One Big Beautiful Bill Act',
    importance: '特别重大',
    proposer: { name: '乔迪', avatar: null },
    committee: '众议院科技委员会',
    relatedDomains: ['人工智能', '集成电路'],
    latestMotion: '2025.07.04',
    latestMotionResult: '成',
    currentStage: 5,
    congressSession: '119th',
  },
  {
    id: 2,
    billNumber: 'H.R.2648',
    billSerial: '第2648',
    title: '半导体供应链安全法',
    titleEn: 'CHIPS and Science Act Extension',
    importance: '重大',
    proposer: { name: '佩洛西', avatar: null },
    committee: '参议院商务委员会',
    relatedDomains: ['集成电路'],
    latestMotion: '2025.06.18',
    latestMotionResult: '通过',
    currentStage: 3,
    congressSession: '119th',
  },
  {
    id: 3,
    billNumber: 'S.1052',
    billSerial: '第1052',
    title: '量子计算出口管制法',
    titleEn: 'Quantum Computing Export Control Act',
    importance: '关注',
    proposer: { name: '沃纳', avatar: null },
    committee: '参议院情报委员会',
    relatedDomains: ['量子科技', '人工智能'],
    latestMotion: '2025.05.22',
    latestMotionResult: '通过',
    currentStage: 1,
    congressSession: '119th',
  },
  {
    id: 4,
    billNumber: 'H.R.4217',
    billSerial: '第4217',
    title: '清洁能源核技术推进法案',
    titleEn: 'Clean Nuclear Energy Advancement Act',
    importance: '一般',
    proposer: { name: '格兰姆', avatar: null },
    committee: '众议院能源委员会',
    relatedDomains: ['核', '生物技术'],
    latestMotion: '2025.04.11',
    latestMotionResult: '提出',
    currentStage: 0,
    congressSession: '119th',
  },
  {
    id: 5,
    billNumber: 'S.3301',
    billSerial: '第3301',
    title: '深海战略资源保护法',
    titleEn: 'Deep Sea Strategic Resources Protection Act',
    importance: '特别重大',
    proposer: { name: '卢比奥', avatar: null },
    committee: '参议院外交委员会',
    relatedDomains: ['深海', '海洋'],
    latestMotion: '2025.07.01',
    latestMotionResult: '通过',
    currentStage: 4,
    congressSession: '119th',
  },
]

// ===== 潜在新闻模拟数据 =====

const MOCK_POTENTIAL_NEWS = [
  { id: 1, title: '我国新一代人工智能大模型正式开放公众体验。', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 2, title: '2026 年全国春运客流总量再创新高', tags: [{ label: '春运', color: 'blue' }] },
  { id: 3, title: '我国新一代人工智能大模型正式开放公众体验。', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 4, title: '2026 年全国春运客流总量再创新高', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 5, title: '我国新一代人工智能大模型正式开放公众体验。', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 6, title: '2026 年全国春运客流总量再创新高', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 7, title: '我国新一代人工智能大模型正式开放公众体验。', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 8, title: '2026 年全国春运客流总量再创新高', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 9, title: '我国新一代人工智能大模型正式开放公众体验。', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
  { id: 10, title: '2026 年全国春运客流总量再创新高', tags: [{ label: '人工智能', color: 'blue' }, { label: '科技突破', color: 'green' }] },
]

const MOCK_KEYWORDS = [
  { label: '财政责任', color: 'red', value: 48 },
  { label: '地球化改造', color: 'red', value: 36 },
  { label: '双边合作', color: 'cyan', value: 32 },
  { label: 'Neuralink+Grok', color: 'blue', value: 44 },
  { label: '能源政策', color: 'blue', value: 40 },
  { label: '保守派财政立场', color: 'red', value: 28 },
  { label: '农场法案倡导者', color: 'gold', value: 30 },
  { label: '环境议题', color: 'cyan', value: 34 },
  { label: '外交政策立场', color: 'gold', value: 26 },
  { label: '农业委员会成员', color: 'red', value: 22 },
  { label: '教育政策', color: 'cyan', value: 24 },
  { label: '工作可选项', color: 'gold', value: 20 },
  { label: '保守派价值观', color: 'blue', value: 38 },
  { label: '可持续能源', color: 'volcano', value: 42 },
  { label: '农业经济引擎', color: 'red', value: 18 },
  { label: '第一性原理', color: 'gold', value: 26 },
  { label: '多智能体协作', color: 'cyan', value: 28 },
  { label: '可持续富足', color: 'gold', value: 22 },
  { label: '为后代负责', color: 'gold', value: 32 },
]

// ===== 模拟网络延迟 =====

function delay(ms = 300) {
  return new Promise((resolve) => setTimeout(resolve, ms))
}

// ===== API 接口函数 =====

/**
 * 获取筛选项配置
 */
export async function fetchFilterOptions() {
  await delay(100)
  return {
    code: 200,
    data: {
      domains: DOMAIN_OPTIONS,
      timeRanges: TIME_OPTIONS,
    },
  }
}

/**
 * 获取进度阶段配置
 */
export async function fetchProgressStages() {
  await delay(50)
  return {
    code: 200,
    data: PROGRESS_STAGES,
  }
}

/**
 * 获取法案列表
 * @param {Object} params - 查询参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string[]} params.domains - 选中的领域
 * @param {string[]} params.timeRanges - 选中的时间范围
 * @param {boolean} params.chinaRelatedOnly - 只看涉华法案
 * @param {string} params.sortBy - 排序方式
 */
export async function fetchBills(params = {}) {
  await delay(400)

  let result = [...MOCK_BILLS]

  // 模拟关键词过滤
  if (params.keyword) {
    const kw = params.keyword.toLowerCase()
    result = result.filter(
      (b) =>
        b.title.toLowerCase().includes(kw) ||
        b.titleEn.toLowerCase().includes(kw) ||
        b.billNumber.toLowerCase().includes(kw)
    )
  }

  // 模拟领域过滤
  if (params.domains && params.domains.length > 0 && !params.domains.includes('all')) {
    result = result.filter((b) =>
      b.relatedDomains.some((d) => params.domains.includes(d))
    )
  }

  // 模拟总量 1149
  const simulatedTotal = 1149
  const page = params.page || 1
  const pageSize = params.pageSize || 10
  // 循环填充 mock 数据以模拟分页
  const pagedList = []
  for (let i = 0; i < pageSize; i++) {
    const src = result[i % result.length]
    pagedList.push({
      ...src,
      id: (page - 1) * pageSize + i + 1,
    })
  }

  return {
    code: 200,
    data: {
      list: pagedList,
      total: simulatedTotal,
    },
  }
}

/**
 * 获取潜在新闻列表
 */
export async function fetchPotentialNews(params = {}) {
  await delay(300)
  const page = params.page || 1
  const pageSize = params.pageSize || 10
  // simulate 96 total items
  const totalItems = 96
  const list = MOCK_POTENTIAL_NEWS.map((item, i) => ({
    ...item,
    id: (page - 1) * pageSize + i + 1,
  }))
  return {
    code: 200,
    data: {
      list,
      total: totalItems,
    },
  }
}

/**
 * 获取潜在新闻分析关键词
 */
export async function fetchPotentialNewsKeywords() {
  await delay(200)
  return {
    code: 200,
    data: MOCK_KEYWORDS,
  }
}

/**
 * 获取排序选项
 */
export async function fetchSortOptions() {
  await delay(50)
  return {
    code: 200,
    data: [
      { value: 'publishTimeDesc', label: '发布时间倒序' },
      { value: 'publishTimeAsc', label: '发布时间正序' },
    ],
  }
}
