# Admin Dashboard 네비게이션 구조 리팩토링 (부분 구현)

**날짜**: 2025-12-25
**작성자**: Auto
**관련 파일**: `admin-dashboard/frontend/index.html`, `admin-dashboard/frontend/app.js`, `admin-dashboard/frontend/styles.css`

---

## 구현 내용 (프론트엔드)

### 1. 네비게이션 구조 변경
- **파일**: `index.html:65-96`
- 시스템 메뉴 하위 구조 도입 (드롭다운)
- 하위 메뉴 4개: 51123 서버, 51124 서버, 전체 컨테이너, 전체 서비스
- 기존 컨테이너/51124 모니터 메뉴 제거

### 2. 섹션 추가
- **파일**: `index.html:297-352`
- `system-51123Section`: 컨테이너 목록, 시스템 서비스, 포트 사용 현황
- `system-51124Section`: 서비스 상태, 포트 사용 현황
- `system-containersSection`: 전체 컨테이너 목록, 재시작 기능
- `system-servicesSection`: 전체 서비스 상태, Nginx 설정

### 3. JavaScript 로직 구현
- **파일**: `app.js:37-125`
- 하위 메뉴 토글 로직 (클릭 시 서브메뉴 유지)
- 섹션 전환 로직 확장 (`system-51123`, `system-51124`, `system-containers`, `system-services`)
- 데이터 로딩 함수: `loadSystem51123()`, `loadSystem51124()`, `loadContainers()`, `loadServices()`

### 4. 포트 사용 현황 기능
- **파일**: `app.js:1080-1150`
- `loadSystem51123Ports()`: 51123 서버 포트 수집 및 표시
- `loadSystem51124Ports()`: 51124 서버 포트 표시

### 5. 컨테이너 재시작 기능
- **파일**: `app.js:1040-1055`
- `restartContainer()`: 컨테이너 재시작 API 호출
- `refreshContainers()`: 컨테이너 목록 새로고침

### 6. 기존 섹션 제거
- **파일**: `index.html:354-363`, `index.html:432-441`
- `containersSection`, `monitorSection` HTML 제거

---

## 부분 구현 완료
- 커밋: `9cd44a0` (2025-12-25)
- 프론트엔드 UI만 구현, 백엔드 API 서버 구분 미구현
- 결과: 서버 구분 UI는 있으나 기능 동작하지 않음

---

## 교훈

### 서브메뉴 유지 로직
- 하위 메뉴 항목 클릭 시 서브메뉴가 닫히지 않도록 `section.startsWith('system-')` 조건 추가
- 사용자 경험 개선: 서버별 정보 탐색 시 메뉴 구조 유지

### HTML 섹션 누락 문제
- JavaScript에서 섹션을 찾지 못해 에러 발생 (`Cannot set properties of null`)
- 원인: HTML에 섹션 추가 후 배포되지 않음
- 교훈: 코드 변경 후 실제 배포 파일 확인 및 브라우저 직접 테스트 필수

### 메뉴 이름 명확화
- "통합 컨테이너" → "전체 컨테이너" (의미 명확화)
- 서버 역할 표시: "51123 서버 (인프라/게이트웨이)", "51124 서버 (로빙/스킬)"
- 사용자 혼란 방지: 메뉴 이름이 기능을 명확히 표현해야 함

---

## 미구현 항목

### 백엔드 API 서버 구분 지원
- `get_services_status()`에 서버 필터 파라미터 추가 필요
- 51123/51124 서버 서비스 목록 분리 필요
- 프론트엔드가 서버별 API 호출하도록 수정 필요

---

## 참고
- 계획 문서: `journey/plans/251225_admin_dashboard_navigation_structure_refactoring.md`

