/**
 * 테넌트 → 모듈 매핑 설정
 *
 * Phase 1: industry 기반 하드코딩 매핑
 * Phase 2: 백엔드 tenant.options.modules에서 직접 수신
 */

import type { ModuleId } from './types';

/** 업종별 기본 모듈 매핑 */
const INDUSTRY_MODULE_MAP: Record<string, ModuleId[]> = {
  shutter_mes: ['production', 'quality', 'vehicle-management'],
  construction: ['construction', 'vehicle-management'],
};

/**
 * 테넌트의 활성 모듈 목록을 결정
 *
 * 우선순위:
 * 1. 백엔드에서 명시적 모듈 목록 제공 시 (Phase 2)
 * 2. industry 기반 기본값 (Phase 1)
 * 3. 빈 배열 (공통 ERP만)
 */
export function resolveEnabledModules(options: {
  industry?: string;
  explicitModules?: ModuleId[];
}): ModuleId[] {
  const { industry, explicitModules } = options;

  // Phase 2: 백엔드가 명시적 모듈 목록 제공
  if (explicitModules && explicitModules.length > 0) {
    return explicitModules;
  }

  // Phase 1: industry 기반 기본값
  if (industry) {
    return INDUSTRY_MODULE_MAP[industry] ?? [];
  }

  return [];
}

/** 특정 모듈이 활성화됐는지 확인 */
export function isModuleEnabled(moduleId: ModuleId, enabledModules: ModuleId[]): boolean {
  if (moduleId === 'common') return true;
  return enabledModules.includes(moduleId);
}
