/**
 * 将上报模板的 fields（JSON 对象或数组）规范为前端表格/动态表单使用的「根数组」结构。
 * 兼容种子数据中的 { groups: [...] }、{ rows: [...] } 与已是数组的写法。
 * @param {*} fields 后端返回的 template.fields
 * @returns {Array}
 */
export function toTemplateFieldArray(fields) {
  if (fields == null) return []
  if (Array.isArray(fields)) return fields

  if (typeof fields === 'object') {
    if (Array.isArray(fields.groups)) {
      return fields.groups.map((g, i) => ({
        id: 10000 + i,
        type: 'group',
        label: g.name || g.label || '分组' + (i + 1),
        code: slugCode(g.name, 'group', i),
        children: (g.fields || []).map((f, j) => ({
          id: 20000 + i * 100 + j,
          type: f.type || 'text',
          label: f.label || f.name || '',
          code: f.key || f.code || 'field_' + j,
          required: !!f.required,
          placeholder: f.placeholder
        }))
      }))
    }
    if (Array.isArray(fields.rows)) {
      return fields.rows.map((label, i) => ({
        id: 30000 + i,
        type: 'text',
        label: typeof label === 'string' ? label : String(label),
        code: 'row_' + i,
        required: false
      }))
    }
  }
  return []
}

function slugCode(name, prefix, i) {
  if (name && String(name).trim()) {
    return String(name)
      .trim()
      .replace(/\s+/g, '_')
      .replace(/[^\w\u4e00-\u9fa5_]/g, '_')
  }
  return prefix + '_' + i
}
