// 공통 스키마 정의
// 모든 기준관리 Config에서 사용하는 공통 요소

// 공통 탭 구조 (6개 탭)
export const DEFAULT_TABS = [
  { id: 'hierarchy', label: '계층구조', icon: 'GitBranch' },
  { id: 'section', label: '섹션', icon: 'Layers' },
  { id: 'field', label: '항목', icon: 'ClipboardList' },
  { id: 'attribute', label: '속성', icon: 'Settings' },
  // category와 template은 도메인별로 다름
];

// 공통 입력 타입
export const INPUT_TYPES = {
  TEXT: 'text',
  NUMBER: 'number',
  SELECT: 'select',
  DATE: 'date',
  TEXTAREA: 'textarea',
  CHECKBOX: 'checkbox',
};

// 공통 섹션 타입
export const SECTION_TYPES = {
  GENERAL: 'general',
  DETAIL: 'detail',
  SPEC: 'spec',
};

// 필드 생성 헬퍼
export const createField = (id, fieldKey, fieldName, inputType, options = {}) => ({
  id,
  fieldKey,
  fieldName,
  inputType,
  isRequired: options.isRequired || false,
  validations: options.validations || {},
  options: options.options || undefined,
  description: options.description || '',
});

// 섹션 생성 헬퍼
export const createSection = (id, sectionKey, sectionName, applicableTypes, fields, options = {}) => ({
  id,
  sectionKey,
  sectionName,
  sectionType: options.sectionType || SECTION_TYPES.GENERAL,
  applicableTypes,
  description: options.description || '',
  fields,
});

// 카테고리 생성 헬퍼 (계층 구조)
export const createCategory = (id, code, name, parentId, level, sortOrder) => ({
  id,
  code,
  name,
  parentId,
  level,
  path: parentId ? `/${parentId}/${id}` : `/${id}`,
  sortOrder,
});

// Config 유효성 검증
export const validateConfig = (config) => {
  const required = ['id', 'title', 'tabs', 'entityTypes', 'masterFields'];
  const missing = required.filter(key => !config[key]);

  if (missing.length > 0) {
    console.warn(`Config "${config.id}" missing: ${missing.join(', ')}`);
    return false;
  }
  return true;
};

export default {
  DEFAULT_TABS,
  INPUT_TYPES,
  SECTION_TYPES,
  createField,
  createSection,
  createCategory,
  validateConfig,
};
