주요 변경 사항: - 서버 자산 상세 정보 4개 그룹(Identity, Connectivity, Specs, Operation)으로 최적화 - 모달 내 조회/수정 모드 전환 및 수정 강조색(#FF3D00) 적용 - 모든 모달의 버튼 사이즈 및 폰트 스타일 가이드 준수 통일 - 수정 취소(Revert) 기능 및 누락된 대시보드 상세 모달 추가 - TypeScript 타입 오류 및 런타임 렌더링 결함 긴급 복구
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { MasterAssetData, HardwareAsset } from './excelHandler';
|
|
import { generateDummyData } from './dummyDataGenerator';
|
|
import { realServerData } from './realServerData';
|
|
|
|
// --- State Definitions ---
|
|
export interface AppState {
|
|
masterData: MasterAssetData;
|
|
activeCategory: 'hw' | 'sw';
|
|
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: [] // MasterAssetData 인터페이스에 맞게 추가
|
|
},
|
|
activeCategory: 'hw',
|
|
activeSubTab: '대시보드',
|
|
activeCharts: []
|
|
};
|
|
|
|
// --- State Helpers ---
|
|
export function updateState(newState: Partial<AppState>) {
|
|
Object.assign(state, newState);
|
|
}
|