import type { CompareField, CompareItem, CompareSettings } from '@/api/compareReports'

/** 新版本按冻结结构排序，旧版本沿用原字段名称和分类次序。 */
export function compareFields(settings: Pick<CompareSettings, 'batteryTemplateFields' | 'specialFields' | 'fieldStructure'>): CompareField[] {
  const names = [...settings.batteryTemplateFields, ...settings.specialFields]
  const ordered = [...new Set([...(settings.fieldStructure || []).map(field => field.name).filter(name => names.includes(name)), ...names])]
  return ordered.map(name => {
    const category = settings.batteryTemplateFields.includes(name) ? 'battery' : 'special'
    const saved = settings.fieldStructure?.find(field => field.name === name && field.category === category)
    return saved || { name, displayName: name, unit: '', category }
  })
}

export function compareFieldLabel(field: CompareField) {
  return `${field.displayName || field.name}${field.unit ? ` (${field.unit})` : ''}`
}

/** 有共享编号时只按编号匹配，定义改名或同名字段均不能把值归入错误字段。 */
export function compareBusinessFieldValue(field: CompareField, item?: CompareItem) {
  if (field.category !== 'battery') return ''
  return item?.businessFields.find(value => field.fieldDefinitionId != null
    ? value.fieldDefinitionId === field.fieldDefinitionId : value.fieldName === field.name)?.fieldValue ?? ''
}
