--- name: manager-roadmap description: "GUARDiA Manager 추가 개발 제안 및 신규 페이지 기획 스킬. 기존 M-01~M-08 이후 추가 기능(DR 관제, 네트워크 장비 관제, CSAP 준수율, 멀티기관 통합 관제, 실시간 성능 그래프 등)을 React 18 + Vite + TypeScript 패턴으로 설계·구현 가이드를 제공한다. 다음 상황에서 반드시 사용: (1) 'Manager 추가 기능', '신규 페이지 추가', '로드맵 작성' 요청; (2) 'DR 관제', '네트워크 관제', 'CSAP 대시보드' Manager 연동; (3) '실시간 그래프', '멀티기관', '화이트라벨' 기능 추가; (4) 다시 실행, 업데이트, 수정, 보완 요청. 네이버 클라우드 콘솔 UX 패턴을 반드시 준수한다." --- # GUARDiA Manager 로드맵 스킬 ## 기존 구현 현황 (16개 페이지) ``` frontend/src/pages/ ├── admin/ Dashboard, CMDB, Servers, Institutions ├── Deployments.tsx CI/CD 배포 이력 ├── Repos.tsx Gitea 저장소 ├── Users.tsx 사용자 관리 ├── Licenses.tsx 라이선스 관리 ├── LLMManager.tsx Ollama 모델 관리 ├── ConfigEnv.tsx 환경변수 관리 ├── ConfigNginx.tsx Nginx 설정 ├── ExportImport.tsx 폐쇄망 데이터 연동 ├── ApiKeys.tsx API Key 관리 ├── AuditLog.tsx 감사 로그 ├── Notifications.tsx 알림 관리 ``` ## 신규 페이지 구현 패턴 ### 신규 페이지 기본 구조 (NCloud 스타일) ```tsx // pages/DrConsole.tsx import { useEffect, useState } from 'react' import { itsm } from '../api/itsm' // 기존 ITSM axios 인스턴스 interface DRDashboard { total_scenarios: number pass_count: number fail_count: number recent_tests: DRTestSummary[] } export default function DrConsole() { const [data, setData] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { itsm.get('/api/dr/dashboard') .then(r => setData(r.data)) .finally(() => setLoading(false)) }, []) return (

DR 재해복구 관제

{/* NCloud 스타일 상태 카드 + 테이블 */}
) } ``` ### 사이드바 메뉴 추가 (`src/components/Sidebar.tsx`) 신규 페이지 추가 시 기존 Sidebar에 항목만 추가: ```tsx // 기존 메뉴 구조에 추가 { path: '/dr', label: 'DR 관제', icon: ShieldCheckIcon }, { path: '/network', label: '네트워크', icon: ServerIcon }, { path: '/csap', label: 'CSAP 점검', icon: ClipboardCheckIcon }, ``` ## 추가 개발 제안 카탈로그 ### Quick Win (1~2주) ``` MG-01. DR 관제 통합 (DrConsole.tsx) - /api/dr/dashboard + /api/dr/rto-rpo 연동 - 시나리오 PASS/FAIL 상태 배지 + RTO 게이지 - 복구 테스트 실행 버튼 (ADMIN) - 난이도: L | 임팩트: H | 공수: 1주 MG-02. 네트워크 장비 관제 (NetworkConsole.tsx) - /api/network/devices + /api/network/topology 연동 - 장비 타입별 상태 카드 + 미백업 경고 - SSH 명령 실행 모달 - 난이도: L | 임팩트: M | 공수: 1주 MG-03. CSAP 준수율 대시보드 (CsapConsole.tsx) - /api/compliance/csap/dashboard 연동 - 기관별 등급(A~D) 컬러 테이블 - 점검 실행 + Excel/HTML 보고서 다운로드 - 난이도: L | 임팩트: H | 공수: 1주 ``` ### 중기 (3~5주) ``` MG-04. 실시간 서버 성능 그래프 (PerformanceMonitor.tsx) - SSE 연결 → Chart.js 실시간 시계열 그래프 - CPU/메모리/디스크 멀티 서버 비교 - 임계값 초과 시 Manager UI 경고 배너 - 난이도: M | 임팩트: H | 공수: 3주 MG-05. 자동화 플레이북 UI (PlaybookManager.tsx) - 플레이북 등록/수정/실행 관리 - 실행 로그 실시간 SSE 스트리밍 - 성공/실패 이력 테이블 - 난이도: M | 임팩트: H | 공수: 3주 MG-06. 멀티기관 통합 관제 (MultiSiteConsole.tsx) - 기관별 헬스체크 배치 결과 지도/그리드 - SLA 위반 기관 상위 표시 - 기관별 드릴다운 상세 조회 - 난이도: M | 임팩트: H | 공수: 4주 ``` ### 장기 (6주+) ``` MG-07. 화이트라벨 테마 (ThemeCustomizer.tsx) - 기관별 로고·색상 커스터마이징 - CSS 변수 기반 동적 테마 적용 - 난이도: H | 임팩트: M | 공수: 6주 MG-08. SLA 예측 분석 대시보드 (SLAPrediction.tsx) - /api/sla_predict 연동 (ITSM 신규 구현 후) - 위반 위험 SR 상위 표시 - 예측 정확도 지표 - 난이도: H | 임팩트: H | 공수: 5주 (ITSM 선행 필요) MG-09. 모바일 반응형 개선 - 태블릿/스마트폰 브레이크포인트 최적화 - 터치 친화적 테이블/차트 컴포넌트 - 난이도: M | 임팩트: M | 공수: 4주 ``` ## API 프록시 추가 패턴 (backend/routers/) ITSM API를 Manager backend가 프록시할 경우: ```python # backend/routers/dr_proxy.py (선택 — 직접 연동도 가능) import httpx from fastapi import APIRouter, Depends ITSM_URL = "http://localhost:8001" router = APIRouter(prefix="/api/proxy/dr", tags=["dr-proxy"]) @router.get("/dashboard") async def dr_dashboard(token: str = Depends(get_token)): async with httpx.AsyncClient() as c: r = await c.get(f"{ITSM_URL}/api/dr/dashboard", headers={"Authorization": f"Bearer {token}"}) return r.json() ``` > 대부분의 경우 frontend에서 ITSM API 직접 호출이 더 단순하다. > 프록시는 CORS 문제가 있거나 토큰 변환이 필요할 때만 사용한다.