import { MasterAssetData, HardwareAsset } from './excelHandler';
import { generateDummyData } from './dummyDataGenerator';
import { realServerData } from './realServerData';

// --- State Definitions ---
export interface AppState {
  masterData: MasterAssetData;
  activeCategory: 'hw' | 'sw' | 'ops';
  activeSubTab: string;
  activeCharts: any[];
}

const dummy = generateDummyData();
// 서버 데이터만 실제 데이터로 교체
const mergedHw: HardwareAsset[] = [
  ...dummy.hw.filter(a => a.type !== '서버'),
  ...realServerData.map(s => ({
    id: s.id || Math.random().toString(36).substring(2, 9),
    type: '서버',
    법인: s.법인,
    자산코드: s.자산코드,
    명칭: s.용도 || '',
    위치: s.위치,
    관리자: s.담당자_정 || '홍길동', 
    담당자_정: s.담당자_정 || '홍길동',
    담당자_부: s.담당자_부 || '김철수',
    IP주소: s.IP주소,
    IP2: s.IP2 || '',
    MACaddress: s.MACaddress || '', 
    HW사양: s.HW사양 || '',
    OS: s.OS,
    CPU: s.CPU,
    RAM: s.RAM,
    SSD1: s.SSD1,
    SSD2: s.SSD2,
    HDD1: s.HDD1,
    storage유형: s.storage유형,
    모델명: s.모델명,
    구매일: s.구매일 || '',
    금액: s.금액 || '',
    납품업체: s.납품업체 || '',
    품의서명: s.품의서명 || '',
    용도: s.용도,
    상세: s.상세,
    원격접속: s.원격접속 || '',
    서버ID: s.서버ID || '',
    서버PW: s.서버PW || '',
    모니터링: s.모니터링 || '',
    비고: s.비고 || ''
  }))
];

// --- Initial State ---
export const state: AppState = {
  masterData: {
    ...dummy,
    hw: mergedHw, // 기본적으로 하드코딩된 데이터를 가지고 시작
    logs: [] 
  },
  activeCategory: 'hw',
  activeSubTab: '대시보드',
  activeCharts: []
};

/**
 * DB에서 데이터 로드
 */
export async function loadMasterDataFromDB() {
  try {
    const response = await fetch('http://localhost:3000/api/hw');
    if (!response.ok) throw new Error('DB 로드 실패');
    const data = await response.json();
    if (data && data.length > 0) {
      state.masterData.hw = data;
      console.log('✅ DB 데이터 로드 완료');
      return true;
    }
  } catch (err) {
    console.warn('⚠️ 백엔드 서버 연결 실패. 로컬 데이터를 유지합니다.');
  }
  return false;
}

// --- State Helpers ---
export function updateState(newState: Partial<AppState>) {
  Object.assign(state, newState);
}
