// 节点元数据统一管理文件
// 直接在文件中定义所有节点元数据

import GenericNode from '../components/Nodes/GenericNode.vue';
import MultiOutputNode from '../components/Nodes/MultiOutputNode.vue';

// 节点类型分组定义
export const NODE_GROUPS = [
  {
    group: '输入',
    label: '输入',
    types: []
  },
  {
    group: '输出',
    label: '输出',
    types: []
  },
  {
    group: 'AI',
    label: 'AI',
    types: []
  },
  {
    group: '控制',
    label: '控制',
    types: []
  },
  {
    group: '其他',
    label: '其他',
    types: []
  }
];

// 所有节点元数据定义
const NODE_METADATA_MAP = {
  input_record: {
    type: 'input_record',
    label: '输入记录',
    icon: 'fa-file-text',
    color: '#10b981',
    description: '接收页面记录数据',
    group: '输入',
    component: GenericNode
  },
  get_record_name: {
    type: 'get_record_name',
    label: '获取记录名称',
    icon: 'fa-search',
    color: '#3b82f6',
    description: '根据条件查找并获取记录名称',
    group: '输入',
    component: GenericNode
  },
  create_record: {
    type: 'create_record',
    label: '创建记录',
    icon: 'fa-plus',
    color: '#10b981',
    description: '创建新的页面记录',
    group: '输出',
    component: GenericNode
  },
  update_record: {
    type: 'update_record',
    label: '更新记录',
    icon: 'fa-save',
    color: '#ef4444',
    description: '更新目标记录的字段值',
    group: '输出',
    component: GenericNode
  },
  ai_content_generation: {
    type: 'ai_content_generation',
    label: 'AI大模型',
    icon: 'fa-cogs',
    color: '#6366f1',
    description: '调用LLM大语言模型生成内容',
    group: 'AI',
    component: GenericNode
  },
  ai_image_generation: {
    type: 'ai_image_generation',
    label: 'AI绘画',
    icon: 'fa-image',
    color: '#10b981',
    description: '使用AI绘画工具生成图像',
    group: 'AI',
    component: GenericNode
  },
  image_upload: {
    type: 'image_upload',
    label: '图片上传',
    icon: 'fa-upload',
    color: '#8b5cf6',
    description: '将图片上传到文件库',
    group: '输出',
    component: GenericNode
  },
  condition_check: {
    type: 'condition_check',
    label: '条件判断',
    icon: 'fa-question-circle',
    color: '#f59e0b',
    description: '检查指定记录是否存在，控制流程执行',
    group: '控制',
    component: MultiOutputNode
  }
};

// 收集所有节点元数据
export function getAllNodeTypes() {
  return Object.values(NODE_METADATA_MAP);
}

// 根据类型获取节点元数据
export function getNodeMetadataByType(type) {
  return NODE_METADATA_MAP[type];
}

// 获取指定分组的节点类型
export function getNodeTypesByGroup(group) {
  return Object.values(NODE_METADATA_MAP).filter(nodeType => nodeType.group === group);
}

// 获取所有节点类型名称
export function getAllNodeTypeNames() {
  return Object.keys(NODE_METADATA_MAP);
}

// 获取所有节点组件映射（用于 Vue Flow）
export function getNodeComponents() {
  const components = {};
  Object.keys(NODE_METADATA_MAP).forEach(type => {
    if (NODE_METADATA_MAP[type].component) {
      components[type] = NODE_METADATA_MAP[type].component;
    }
  });
  return components;
} 