/**
 * 四层战略地图泳道配置常量
 * 管理会计OS — BSC四层因果链
 *
 * 颜色规范：
 *   财务层  #F56C6C (红) — 滞后指标(结果)
 *   客户层  #409EFF (蓝) — 领先指标(驱动)
 *   流程层  #67C23A (绿) — 领先指标(驱动)
 *   学习层  #E6A23C (橙) — 领先指标(根本驱动)
 */

export const LAYER_KEYS = ['finance', 'customer', 'process', 'learning']

/** 每层默认的颜色/图标/预设节点 */
export const LAYER_CONFIG = {
  finance: {
    key: 'finance',
    label: '财务层',
    enLabel: 'Financial',
    icon: '💰',
    iconComponent: 'Money',
    color: '#F56C6C',
    bgColor: '#FEF0F0',
    lightColor: '#FDE2E2',
    order: 1,
    description: '股东价值目标 — 滞后指标(结果)',
    defaultNodes: [
      { name: '营收目标', targetValue: null, unit: '万元', isLeading: false },
      { name: '净利润率', targetValue: null, unit: '%', isLeading: false },
      { name: '现金流', targetValue: null, unit: '万元', isLeading: false },
    ],
  },
  customer: {
    key: 'customer',
    label: '客户层',
    enLabel: 'Customer',
    icon: '👥',
    iconComponent: 'User',
    color: '#409EFF',
    bgColor: '#ECF5FF',
    lightColor: '#D9ECFF',
    order: 2,
    description: '客户价值主张 — 领先指标(驱动)',
    defaultNodes: [
      { name: '客户满意度', targetValue: null, unit: '%', isLeading: true },
      { name: '市场份额', targetValue: null, unit: '%', isLeading: true },
      { name: '客户保留率', targetValue: null, unit: '%', isLeading: true },
    ],
  },
  process: {
    key: 'process',
    label: '内部流程层',
    enLabel: 'Internal Process',
    icon: '⚙️',
    iconComponent: 'Setting',
    color: '#67C23A',
    bgColor: '#F0F9EB',
    lightColor: '#E1F3D8',
    order: 3,
    description: '流程卓越 — 领先指标(驱动)',
    defaultNodes: [
      { name: '运营效率', targetValue: null, unit: '%', isLeading: true },
      { name: '质量合格率', targetValue: null, unit: '%', isLeading: true },
    ],
  },
  learning: {
    key: 'learning',
    label: '学习成长层',
    enLabel: 'Learning & Growth',
    icon: '📚',
    iconComponent: 'Reading',
    color: '#E6A23C',
    bgColor: '#FDF6EC',
    lightColor: '#FAECD8',
    order: 4,
    description: '无形资产 — 领先指标(根本驱动)',
    defaultNodes: [
      { name: '关键岗位胜任度', targetValue: null, unit: '%', isLeading: true },
      { name: '培训完成率', targetValue: null, unit: '%', isLeading: true },
    ],
  },
}

/** 根据层KEY获取颜色 */
export function getLayerColor(layerKey) {
  return LAYER_CONFIG[layerKey]?.color || '#909399'
}

/** 根据层KEY获取中文标签 */
export function getLayerLabel(layerKey) {
  return LAYER_CONFIG[layerKey]?.label || layerKey
}

/** 根据层KEY获取英文标签 */
export function getLayerEnLabel(layerKey) {
  return LAYER_CONFIG[layerKey]?.enLabel || layerKey
}

/** 获取所有层的配置数组（按order排序） */
export function getLayerList() {
  return LAYER_KEYS.map((k) => LAYER_CONFIG[k]).sort(
    (a, b) => a.order - b.order
  )
}

/**
 * 计算节点状态
 * @param {number|null} currentValue
 * @param {number|null} targetValue
 * @param {boolean} isLeading - 领先指标
 * @returns {'success'|'warning'|'danger'|'info'}
 */
export function computeNodeStatus(currentValue, targetValue) {
  if (currentValue == null || targetValue == null) return 'info'
  const ratio = targetValue === 0 ? 0 : currentValue / targetValue
  if (ratio >= 1.0) return 'success'
  if (ratio >= 0.8) return 'warning'
  return 'danger'
}
