// ============================================
// 维度配置库 - 可变的维度插槽 (The Model Layer)
// ============================================
// 这些是"靶子"，可以根据不同的政策要求动态切换

export const DIMENSION_SETS = {
  // 传统五维度（思想、政治、作风、能力、纪律）
  'five-roots': {
    id: 'five-roots',
    name: '传统五维度',
    description: '思想、政治、作风、能力、纪律五个根本层面',
    applicableFor: ['原因剖析', '自我检视'],
    dimensions: [
      {
        id: 'thought',
        name: '思想层面',
        focus: '理想信念、宗旨意识、理论武装、世界观人生观价值观',
        keywords: ['理论武装不够深入', '理想信念有所动摇', '宗旨意识不够牢固', '总开关拧得不紧'],
        // 反向关键词：常见问题表述
        negativeKeywords: ['理论学习碎片化', '学用脱节', '浮光掠影', '走马观花', '学而不思'],
        // 正向对标：应达到的标准
        positiveBenchmark: '学思用贯通、知信行统一，筑牢信仰之基、补足精神之钙、把稳思想之舵'
      },
      {
        id: 'political',
        name: '政治层面',
        focus: '政治站位、两个维护、政治敏锐性、政治判断力、政治执行力',
        keywords: ['政治站位不够高', '政治敏锐性不强', '政治三力有待提升'],
        negativeKeywords: ['上有政策下有对策', '选择性执行', '本位主义', '表态多调门少'],
        positiveBenchmark: '始终同党中央保持高度一致，做到令行禁止、不打折扣'
      },
      {
        id: 'style',
        name: '作风层面',
        focus: '形式主义、官僚主义、实干精神、群众观念、调查研究',
        keywords: ['形式主义官僚主义', '脱离群众', '调研不深入', '作风不够扎实'],
        negativeKeywords: ['重留痕轻实绩', '以会议落实会议', '以文件落实文件', '指尖上的政绩'],
        positiveBenchmark: '真抓实干、勇于担当，深入群众、沈到一线'
      },
      {
        id: 'capability',
        name: '能力层面',
        focus: '本领恐慌、新发展理念、攻坚克难、专业能力、创新思维',
        keywords: ['本领恐慌', '能力不足', '知识更新不够', '创新意识不强'],
        negativeKeywords: ['穿新鞋走老路', '老办法不管用、新办法不会用', '经验主义', '等靠要'],
        positiveBenchmark: '勇于攻坚克难、善于研究新情况解决新问题'
      },
      {
        id: 'discipline',
        name: '纪律层面',
        focus: '底线思维、廉洁自律、规矩意识、纪法意识',
        keywords: ['规矩意识不强', '底线意识有待加强', '自我要求不够严格'],
        negativeKeywords: ['打擊边球', '红线意识不强', '侵占群众利益', '纪律观念淡薄'],
        positiveBenchmark: '廉洁自律、奉公守法，筑牢拒腐防变的思想防线'
      }
    ]
  },

  // 五个带头（2025组织生活会版）
  'five-leads': {
    id: 'five-leads',
    name: '五个带头',
    description: '基于二十届四中全会精神的五个带头维度',
    applicableFor: ['对照检查', '问题查摆'],
    dimensions: [
      {
        id: 'political-loyalty',
        name: '带头强化政治忠诚、提高政治能力',
        focus: '对党忠诚、贯彻落实党中央决策、两个确立、政治三力、战略定力',
        keywords: ['政治忠诚', '两个确立', '政治三力', '战略定力'],
        negativeKeywords: ['上有政策下有对策', '选择性执行', '本位主义', '政治站位不高', '表态多调门少'],
        positiveBenchmark: '始终同党中央保持高度一致，坚决做到“两个维护”'
      },
      {
        id: 'party-nature',
        name: '带头固本培元、增强党性',
        focus: '世界观人生观价值观“总开关”、党章党规、党性修养',
        keywords: ['总开关', '党性锤炼', '固本培元', '初心使命'],
        negativeKeywords: ['理论学习碎片化', '学用脱节', '党性锻炼不经常', '精神懈怠'],
        positiveBenchmark: '学思用贯通、知信行统一，筑牢信仰之基'
      },
      {
        id: 'reverence',
        name: '带头敬畏人民、敬畏组织、敬畏法纪',
        focus: '“四下基层”、民主集中制、特权思想、群众路线',
        keywords: ['敬畏之心', '四下基层', '民主集中制', '群众路线'],
        negativeKeywords: ['高高在上', '脱离群众', '容8气十足', '特权思想', '家长制作风'],
        positiveBenchmark: '始终心怀敬畏、严守底线，走好新时代群众路线'
      },
      {
        id: 'responsibility',
        name: '带头干事创业、担当作为',
        focus: '政绩观、新发展理念、“十五五”开局、防风险、斗争精神',
        keywords: ['担当作为', '政绩观', '斗争精神', '攻坚克难'],
        negativeKeywords: ['求稳怕错', '不敢攻坚', '等靠要', '观望心态', '拈轻怕重'],
        positiveBenchmark: '敢于较真碰硬、勇于担当作为，以斜斗精神攻坚克难'
      },
      {
        id: 'party-governance',
        name: '带头坚决抗起管党治党责任',
        focus: '一岗双责、形式主义减负、公文抄袭整治、选人用人',
        keywords: ['管党治党', '一岗双责', '从严治党', '选人用人'],
        negativeKeywords: ['好人主义', '下不为例', '影子工程', '带病提拔', '管理松懈'],
        positiveBenchmark: '层层压实责任、从严从实抵党，营造风清气正的政治生态'
      }
    ]
  },

  // 四个对照（民主生活会版）
  'four-contrasts': {
    id: 'four-contrasts',
    name: '四个对照',
    description: '对照党章党规、对照初心使命、对照先进典型、对照群众期盼',
    applicableFor: ['对照检查', '自我批评'],
    dimensions: [
      {
        id: 'party-rules',
        name: '对照党章党规',
        focus: '党员义务、组织纪律、廉洁纪律、工作纪律',
        keywords: ['党章党规', '党员义务', '纪律规矩']
      },
      {
        id: 'original-mission',
        name: '对照初心使命',
        focus: '为人民服务、群众利益、宗旨意识',
        keywords: ['初心使命', '为民情怀', '宗旨意识']
      },
      {
        id: 'role-models',
        name: '对照先进典型',
        focus: '榜样力量、先进事迹、标杆作用',
        keywords: ['先进典型', '榜样力量', '对标对表']
      },
      {
        id: 'public-expectations',
        name: '对照群众期盼',
        focus: '群众满意度、民生问题、服务质量',
        keywords: ['群众期盼', '民生福祉', '群众满意']
      }
    ]
  },

  // 六大领域（综合性述职报告版）
  'six-domains': {
    id: 'six-domains',
    name: '六大领域',
    description: '政治建设、思想建设、组织建设、作风建设、纪律建设、制度建设',
    applicableFor: ['述职报告', '工作总结'],
    dimensions: [
      {
        id: 'political-construction',
        name: '政治建设',
        focus: '政治站位、贯彻落实、意识形态',
        keywords: ['政治建设', '意识形态', '政治站位']
      },
      {
        id: 'ideological-construction',
        name: '思想建设',
        focus: '理论学习、思想教育、理想信念',
        keywords: ['思想建设', '理论武装', '理想信念']
      },
      {
        id: 'organizational-construction',
        name: '组织建设',
        focus: '组织力、战斗力、党员管理',
        keywords: ['组织建设', '战斗堡垒', '党员管理']
      },
      {
        id: 'style-construction',
        name: '作风建设',
        focus: '八项规定、形式主义官僚主义、群众路线',
        keywords: ['作风建设', '八项规定', '群众路线']
      },
      {
        id: 'discipline-construction',
        name: '纪律建设',
        focus: '纪律教育、监督执纪、警示教育',
        keywords: ['纪律建设', '监督执纪', '警示教育']
      },
      {
        id: 'system-construction',
        name: '制度建设',
        focus: '制度执行、规范化建设、长效机制',
        keywords: ['制度建设', '制度执行', '长效机制']
      }
    ]
  }
}

// 获取所有维度集列表
export const getDimensionSetList = () => {
  return Object.values(DIMENSION_SETS)
}

// 根据ID获取维度集
export const getDimensionSetById = (id) => {
  return DIMENSION_SETS[id] || null
}

// 根据适用场景筛选维度集
export const getDimensionSetsByApplicable = (scene) => {
  return Object.values(DIMENSION_SETS).filter(ds => 
    ds.applicableFor.includes(scene)
  )
}

// 合并默认维度集与自定义维度
export const mergeDimensions = (dimensionSetId, customDimensions = []) => {
  const defaultSet = DIMENSION_SETS[dimensionSetId]
  if (!defaultSet) return customDimensions
  
  // 如果没有自定义维度，返回默认维度
  if (!customDimensions || customDimensions.length === 0) {
    return defaultSet.dimensions
  }
  
  // 合并：自定义维度覆盖同ID的默认维度，新增的追加到末尾
  const result = [...defaultSet.dimensions]
  
  customDimensions.forEach(custom => {
    const existingIndex = result.findIndex(d => d.id === custom.id)
    if (existingIndex !== -1) {
      // 覆盖已有维度
      result[existingIndex] = { ...result[existingIndex], ...custom }
    } else {
      // 新增维度
      result.push(custom)
    }
  })
  
  return result
}

// 格式化维度为Prompt文本
export const formatDimensionsForPrompt = (dimensions) => {
  return dimensions.map((d, i) => {
    let text = `${i + 1}. **${d.name}**`
    if (d.focus) {
      text += `\n   - 关注重点：${d.focus}`
    }
    if (d.keywords?.length) {
      text += `\n   - 关键词库：${d.keywords.join('、')}`
    }
    return text
  }).join('\n')
}

// 从本地存储加载自定义维度集
export const loadCustomDimensionSets = () => {
  const saved = localStorage.getItem('customDimensionSets')
  return saved ? JSON.parse(saved) : {}
}

// 保存自定义维度集到本地存储
export const saveCustomDimensionSet = (id, dimensionSet) => {
  const existing = loadCustomDimensionSets()
  existing[id] = dimensionSet
  localStorage.setItem('customDimensionSets', JSON.stringify(existing))
}

// 获取所有维度集（包含自定义）
export const getAllDimensionSets = () => {
  const customSets = loadCustomDimensionSets()
  return { ...DIMENSION_SETS, ...customSets }
}
