From b217d101f01309282167946744462e55b6a4b1fc Mon Sep 17 00:00:00 2001 From: "DESKTOP-TKLFCPR\\ython" Date: Sun, 31 May 2026 09:44:52 +0900 Subject: [PATCH] =?UTF-8?q?feat(harness):=20Messenger=C2=B7Manager=C2=B7IT?= =?UTF-8?q?SM=20=ED=95=98=EB=84=A4=EC=8A=A4=20=ED=99=95=EC=9E=A5=20+=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EA=B0=9C=EB=B0=9C=20=EC=A0=9C=EC=95=88?= =?UTF-8?q?=EC=84=9C=203=EC=A2=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Messenger 하네스 확장 - agents/feature-developer.md — 신규 기능 화면 개발 전문 에이전트 (DR·네트워크·CSAP·생체인증·오프라인·Kanban·다크모드·멀티기관·인시던트·실시간) - skills/new-features/SKILL.md — 10가지 신규 기능 React Native 구현 가이드 - messenger-orchestrator description 확장 (신규 기능 트리거 추가) ## Manager 하네스 확장 - agents/roadmap-planner.md — Manager 추가 개발 기획 전문 에이전트 - skills/manager-roadmap/SKILL.md — MG-01~MG-09 페이지 구현 가이드 - manager-orchestrator description 확장 (로드맵/MG 트리거 추가) ## ITSM 하네스 확장 - agents/roadmap-planner.md — ITSM 추가 개발 기획 에이전트 - skills/itsm-roadmap/SKILL.md — I-01~I-10 기능 제안 카탈로그 ## 추가 개발 제안서 3종 (docs/) - MESSENGER_NEXT_FEATURES.md — 모바일 신규 기능 10종 (M-01~M-10) - ITSM_NEXT_FEATURES.md — ITSM 신규 기능 10종 (I-01~I-10) - MANAGER_NEXT_FEATURES.md — Manager 신규 페이지 9종 (MG-01~MG-09) Co-Authored-By: Claude Sonnet 4.6 --- app/.claude/agents/feature-developer.md | 76 ++++++ app/.claude/skills/new-features/SKILL.md | 240 ++++++++++++++++++ app/CLAUDE.md | 53 ++++ docs/ITSM_NEXT_FEATURES.md | 193 ++++++++++++++ docs/MANAGER_NEXT_FEATURES.md | 200 +++++++++++++++ docs/MESSENGER_NEXT_FEATURES.md | 163 ++++++++++++ itsm/.claude/agents/roadmap-planner.md | 59 +++++ itsm/.claude/skills/itsm-roadmap/SKILL.md | 128 ++++++++++ manager/.claude/agents/roadmap-planner.md | 56 ++++ .../skills/manager-orchestrator/SKILL.md | 140 ++++++++++ .../.claude/skills/manager-roadmap/SKILL.md | 162 ++++++++++++ manager/CLAUDE.md | 86 +++++++ 12 files changed, 1556 insertions(+) create mode 100644 app/.claude/agents/feature-developer.md create mode 100644 app/.claude/skills/new-features/SKILL.md create mode 100644 app/CLAUDE.md create mode 100644 docs/ITSM_NEXT_FEATURES.md create mode 100644 docs/MANAGER_NEXT_FEATURES.md create mode 100644 docs/MESSENGER_NEXT_FEATURES.md create mode 100644 itsm/.claude/agents/roadmap-planner.md create mode 100644 itsm/.claude/skills/itsm-roadmap/SKILL.md create mode 100644 manager/.claude/agents/roadmap-planner.md create mode 100644 manager/.claude/skills/manager-orchestrator/SKILL.md create mode 100644 manager/.claude/skills/manager-roadmap/SKILL.md create mode 100644 manager/CLAUDE.md diff --git a/app/.claude/agents/feature-developer.md b/app/.claude/agents/feature-developer.md new file mode 100644 index 00000000..eefc3dcd --- /dev/null +++ b/app/.claude/agents/feature-developer.md @@ -0,0 +1,76 @@ +--- +name: feature-developer +model: opus +--- + +# Feature Developer — 신규 기능 화면 개발 전문가 + +## 핵심 역할 +GUARDiA Messenger에 신규 기능 화면을 추가 개발한다. +DR 모니터링, 네트워크 장비 현황, CSAP 준수율, 오프라인 모드, 생체인증, +WebSocket 실시간 알림, Kanban SR 보드, 다크모드, 멀티기관 관리 등을 담당한다. + +## 기술 스택 (변경 금지) +- React Native 0.74.5 + Expo SDK 51 + TypeScript strict +- expo-router 3.5.x (파일 기반 라우팅) +- expo-secure-store (인증 토큰 저장) +- expo-local-authentication (생체인증) +- axios + WebSocket (API 통신) +- StyleSheet.create, COLORS 상수 (외부 UI 라이브러리 최소화) + +## 작업 원칙 +1. `new-features` 스킬을 읽고 구현한다 +2. 기존 화면(login, dashboard, sr, chat, notifications, settings) 변경 최소화 +3. 신규 탭은 `app/(tabs)/` 아래, 신규 모달은 `app/(modals)/` 아래 배치 +4. 공유 컴포넌트는 `components/` 에 분리 +5. API 호출은 반드시 `services/api.ts` 함수로 캡슐화 +6. TypeScript any 금지 — 명시적 인터페이스 정의 +7. 오프라인 상태는 expo-secure-store 캐시로 처리 + +## 빌드 금기사항 (절대 위반 금지) +- `android/`, `ios/` 폴더 로컬 생성 금지 +- `expo-notifications` → app.json 플러그인 등록 금지 +- `babel.config.js` → expo-router/babel 추가 금지 +- `plugins/withGradleProps.js` → enablePngCrunchInReleaseBuilds=false 유지 + +## 담당 기능 목록 + +| 기능 | 화면 경로 | API | +|------|----------|-----| +| DR 모니터링 | `app/(tabs)/dr.tsx` | `/api/dr/dashboard`, `/api/dr/rto-rpo` | +| 네트워크 장비 현황 | `app/(tabs)/network.tsx` | `/api/network/devices`, `/api/network/topology` | +| CSAP 준수율 | `app/(tabs)/csap.tsx` | `/api/compliance/csap/dashboard` | +| 오프라인 모드 | 공통 훅 `hooks/useOfflineCache.ts` | 캐시 레이어 | +| 생체인증 | `app/(auth)/biometric.tsx` | expo-local-authentication | +| Kanban SR 보드 | `app/(tabs)/kanban.tsx` | `/api/tasks`, `/api/tasks/{id}` | +| 다크모드 | 공통 훅 `hooks/useTheme.ts` | 시스템 테마 연동 | +| 멀티기관 계정 | `app/(auth)/select-site.tsx` | `/api/auth/me`, `/api/institutions` | +| 인시던트 빠른 대응 | `app/(tabs)/incidents.tsx` | `/api/incidents` | +| 실시간 서버 상태 | 컴포넌트 `components/ServerStatusBar.tsx` | `/api/dr/dashboard` WebSocket | + +## 입력 프로토콜 +```json +{ + "feature": "dr-monitoring | network-status | csap-dashboard | offline | biometric | kanban | darkmode | multi-site | incidents | realtime", + "priority": "HIGH | MEDIUM | LOW", + "api_endpoints": ["/api/dr/dashboard"], + "requirements": "상세 요구사항" +} +``` + +## 출력 프로토콜 +```json +{ + "files_created": ["app/(tabs)/dr.tsx", "services/drApi.ts"], + "files_modified": ["services/api.ts", "app/(tabs)/_layout.tsx"], + "notes": "탭 메뉴에 추가 필요", + "eas_build_required": false +} +``` + +## 팀 통신 프로토콜 +- **수신**: orchestrator → 기능 구현 요청 +- **수신**: rn-developer → 공통 컴포넌트 재사용 요청 +- **발신**: eas-engineer → "네이티브 모듈(expo-local-authentication) 설정 확인 요청" +- **발신**: doc-writer → 구현된 화면 목록 및 스크린샷 전달 +- **파일 공유**: `_workspace/features-{name}.md` 에 구현 명세 기록 diff --git a/app/.claude/skills/new-features/SKILL.md b/app/.claude/skills/new-features/SKILL.md new file mode 100644 index 00000000..039247a0 --- /dev/null +++ b/app/.claude/skills/new-features/SKILL.md @@ -0,0 +1,240 @@ +--- +name: new-features +description: "GUARDiA Messenger 신규 기능 화면 구현 스킬. DR 모니터링, 네트워크 장비 현황, CSAP 준수율, 오프라인 모드, 생체인증(expo-local-authentication), Kanban SR 보드, 다크모드, 멀티기관 계정, 인시던트 빠른 대응, 실시간 알림 등 10가지 신규 기능을 React Native + Expo SDK 51 패턴으로 구현한다. 다음 상황에서 반드시 사용: (1) 'DR 화면', '네트워크 화면', 'CSAP 화면' 구현 요청; (2) '오프라인 모드', '생체인증', '지문 로그인' 구현; (3) 'Kanban 보드', '다크모드', '멀티기관' 기능 추가; (4) 신규 탭 추가, 새 화면 개발; (5) 다시 실행, 업데이트, 수정, 보완 요청. expo-router 파일 기반 라우팅과 빌드 금기사항을 반드시 준수한다." +--- + +# GUARDiA Messenger 신규 기능 구현 스킬 + +## 구현 패턴 — API 서비스 추가 + +신규 기능마다 `services/api.ts`에 함수를 추가한다. + +```typescript +// services/api.ts 추가 패턴 +import { axiosInstance } from './api' // 기존 인스턴스 재사용 + +// DR API +export const getDRDashboard = () => axiosInstance.get('/api/dr/dashboard') +export const getDRScenarios = () => axiosInstance.get('/api/dr/scenarios') +export const getDRRtoRpo = () => axiosInstance.get('/api/dr/rto-rpo') + +// 네트워크 장비 API +export const getNetworkDevices = (instId?: number) => + axiosInstance.get('/api/network/devices', { params: { inst_id: instId } }) +export const getNetworkTopology = (instId?: number) => + axiosInstance.get('/api/network/topology', { params: { inst_id: instId } }) + +// CSAP API +export const getCSAPDashboard = () => + axiosInstance.get('/api/compliance/csap/dashboard') +export const getCSAPItems = () => + axiosInstance.get('/api/compliance/csap/items') +``` + +## 기능별 구현 가이드 + +### 1. DR 모니터링 화면 (`app/(tabs)/dr.tsx`) + +```tsx +// 핵심 구조 +export default function DRScreen() { + const [dashboard, setDashboard] = useState(null) + const [rtoRpo, setRtoRpo] = useState(null) + + // 폴링: 30초마다 갱신 (WS 없이도 준실시간) + useEffect(() => { + const load = async () => { + const [d, r] = await Promise.all([getDRDashboard(), getDRRtoRpo()]) + setDashboard(d.data) + setRtoRpo(r.data) + } + load() + const timer = setInterval(load, 30_000) + return () => clearInterval(timer) + }, []) + + return ( + + {/* 시나리오별 PASS/FAIL 배지 */} + {/* RTO/RPO 목표 vs 실적 바 차트 */} + {/* 최근 테스트 이력 5건 */} + + ) +} +``` + +**타입 정의:** +```typescript +interface DRDashboard { + total_scenarios: number + pass_count: number + fail_count: number + untested_count: number + recent_tests: DRTestSummary[] +} +interface RtoScenario { + scenario_name: string + rto_target: number + rto_actual_avg: number | null + rto_met: boolean | null + last_test_result: string +} +``` + +### 2. 네트워크 장비 현황 (`app/(tabs)/network.tsx`) + +```tsx +// 장비 타입별 그룹핑 + 최근 백업 상태 표시 +// 설정 변경 감지 시 황색 뱃지 +const DeviceCard = ({ device }: { device: NetworkDeviceOut }) => ( + + + + {device.device_name} + {!device.last_backup_at && } + + {device.vendor} · {device.location} + +) +``` + +### 3. CSAP 준수율 대시보드 (`app/(tabs)/csap.tsx`) + +```tsx +// 준수율 원형 게이지 + 등급 배지 + FAIL 항목 목록 +const GradeColor = { A: '#28a745', B: '#17a2b8', C: '#ffc107', D: '#dc3545' } + +const ComplianceGauge = ({ rate, grade }: { rate: number; grade: string }) => ( + + + {rate}% + + + {grade}등급 + + +) +``` + +### 4. 오프라인 모드 (`hooks/useOfflineCache.ts`) + +```typescript +import * as SecureStore from 'expo-secure-store' +import NetInfo from '@react-native-community/netinfo' // 주의: EAS에서 자동 설치됨 + +export function useOfflineCache(key: string, fetcher: () => Promise) { + const [data, setData] = useState(null) + const [isOffline, setOffline] = useState(false) + + useEffect(() => { + const unsubscribe = NetInfo.addEventListener(state => { + setOffline(!state.isConnected) + }) + return () => unsubscribe() + }, []) + + const load = async () => { + if (isOffline) { + const cached = await SecureStore.getItemAsync(key) + if (cached) setData(JSON.parse(cached)) + return + } + try { + const result = await fetcher() + setData(result) + await SecureStore.setItemAsync(key, JSON.stringify(result)) + } catch { + const cached = await SecureStore.getItemAsync(key) + if (cached) setData(JSON.parse(cached)) + } + } + return { data, isOffline, load } +} +``` + +### 5. 생체인증 (`hooks/useBiometric.ts`) + +```typescript +import * as LocalAuth from 'expo-local-authentication' + +export async function authenticateWithBiometric(): Promise { + const hasHardware = await LocalAuth.hasHardwareAsync() + const isEnrolled = await LocalAuth.isEnrolledAsync() + if (!hasHardware || !isEnrolled) return false + + const result = await LocalAuth.authenticateAsync({ + promptMessage: 'GUARDiA 로그인', + cancelLabel: '취소', + fallbackLabel: '비밀번호 사용', + }) + return result.success +} +``` + +**`app.json` 설정 추가 (플러그인 아님, permissions만):** +```json +{ + "expo": { + "android": { + "permissions": ["USE_BIOMETRIC", "USE_FINGERPRINT"] + }, + "ios": { + "infoPlist": { + "NSFaceIDUsageDescription": "GUARDiA 빠른 로그인을 위해 Face ID를 사용합니다." + } + } + } +} +``` + +### 6. Kanban SR 보드 (`app/(tabs)/kanban.tsx`) + +```tsx +// 상태별 컬럼 (가로 스크롤) + 카드 탭으로 상태 변경 +const STATUS_COLS = ['RECEIVED', 'IN_PROGRESS', 'PENDING_PM_VALIDATION', 'COMPLETED'] +const STATUS_LABEL: Record = { + RECEIVED: '접수', IN_PROGRESS: '진행중', + PENDING_PM_VALIDATION: 'PM검토', COMPLETED: '완료' +} + +// 카드 롱프레스 → ActionSheet로 상태 이동 (드래그&드롭 대신) +// react-native-draggable-flatlist는 EAS 빌드 이슈 가능 → 탭/ActionSheet 방식 권장 +``` + +### 7. 다크모드 (`hooks/useTheme.ts`) + +```typescript +import { useColorScheme } from 'react-native' + +export function useTheme() { + const scheme = useColorScheme() // 'light' | 'dark' | null + const isDark = scheme === 'dark' + return { + isDark, + bg: isDark ? '#1a1a2e' : '#f5f7fa', + card: isDark ? '#16213e' : '#ffffff', + text: isDark ? '#e0e0e0' : '#333333', + border: isDark ? '#2d2d44' : '#e2e8f0', + } +} +``` + +### 8. 탭 메뉴 추가 (`app/(tabs)/_layout.tsx`) + +신규 탭 추가 시 기존 `_layout.tsx`에 `` 항목만 추가: +```tsx + + + + +``` + +## 빌드 안전성 체크리스트 + +신규 기능 구현 후 반드시 확인: +- [ ] `@react-native-community/netinfo` → `package.json` dependencies에 추가 필요 (EAS 빌드 시 자동 설치) +- [ ] `expo-local-authentication` → Expo SDK 51 기본 포함, 별도 설치 불필요 +- [ ] `app.json` 플러그인 배열에 추가한 항목 없는지 확인 (expo-notifications 제외 원칙) +- [ ] 신규 `import` 패키지가 `package.json`에 있는지 확인 + +> 상세 화면 목업과 UI 패턴은 `references/screen-mockups.md` 참조 (필요 시 생성). diff --git a/app/CLAUDE.md b/app/CLAUDE.md new file mode 100644 index 00000000..accabb46 --- /dev/null +++ b/app/CLAUDE.md @@ -0,0 +1,53 @@ +# GUARDiA Messenger — React Native 모바일 앱 + +> **Claude Code용 프로젝트 마스터 컨텍스트** + +--- + +## 프로젝트 현황 + +| 항목 | 상태 | +|------|------| +| 기술 스택 | React Native 0.74.5 + Expo SDK 51 + TypeScript | +| 패키지명 | kr.co.zioinfo.guardia | +| EAS 계정 | zioinfo | +| 프로젝트 ID | ca2f72d6-7dda-4491-9590-7ace34b10a88 | +| 최신 성공 빌드 | 51096ada (Android APK) | +| 서버 | https://101.79.17.164:8443 (GUARDiA ITSM) | + +--- + +## 구현된 화면 (6개) + +| 화면 | 경로 | 기능 | +|------|------|------| +| 로그인 | `app/(auth)/login.tsx` | JWT 인증 | +| 대시보드 | `app/(tabs)/index.tsx` | SR 통계, 서비스 상태 | +| SR 관리 | `app/(tabs)/sr.tsx` | SR 목록·등록 | +| AI 챗봇 | `app/(tabs)/chat.tsx` | Ollama 연동 | +| 알림 | `app/(tabs)/notifications.tsx` | 푸시 알림 목록 | +| 설정 | `app/(tabs)/settings.tsx` | 프로필·로그아웃 | + +--- + +## 빌드 핵심 원칙 (위반 시 빌드 실패) + +1. `android/`, `ios/` 폴더 — 로컬 생성 금지 (`.easignore`로 EAS 제외) +2. `expo-notifications` — `app.json` 플러그인 등록 금지 +3. `babel.config.js` — `expo-router/babel` 추가 금지 +4. `plugins/withGradleProps.js` — `enablePngCrunchInReleaseBuilds=false` 필수 + +--- + +## 하네스: GUARDiA Messenger + +**목표:** 화면 개발·EAS 빌드·스토어 등록·문서화 전 과정 자동화 + +**트리거:** 화면 구현, 기능 추가, EAS 빌드, Play Store 등록, 가이드 작성 요청 시 +`messenger-orchestrator` 스킬을 사용하라. 다시 실행, 수정, 업데이트도 포함. + +**변경 이력:** +| 날짜 | 변경 내용 | 대상 | 사유 | +|------|----------|------|------| +| 2026-05-31 | 초기 하네스 구성 | 전체 | GUARDiA Messenger 앱 개발·배포 자동화 | +| 2026-05-31 | feature-developer 에이전트 + new-features 스킬 추가 | agents/, skills/ | DR·네트워크·CSAP·생체인증·오프라인 등 신규 기능 10종 | diff --git a/docs/ITSM_NEXT_FEATURES.md b/docs/ITSM_NEXT_FEATURES.md new file mode 100644 index 00000000..7682c8ae --- /dev/null +++ b/docs/ITSM_NEXT_FEATURES.md @@ -0,0 +1,193 @@ +# GUARDiA ITSM — 추가 개발 제안서 + +> **버전:** 1.0 | **작성일:** 2026-05-31 | **현재 라우터:** 617개 (v2.1.0) + +--- + +## 요약 + +| 항목 | 내용 | +|------|------| +| 제안 기능 수 | 10개 | +| 즉시 착수 추천 | 자동화 플레이북, 서버 성능 실시간 대시보드, KB AI 자동 생성 | +| 총 예상 공수 | 약 38인주 | +| 최근 추가 기능 | DR 자동화, 네트워크 장비 관리, CSAP 자동 점검 (2026-05-31) | + +--- + +## 1순위 — Quick Win (즉시 착수) + +### I-01. 자동화 플레이북 (`routers/playbook.py`) + +**배경:** 반복 운영 작업(재시작, 로그 수집, 백업 검증)을 매번 수동 실행 +**기능:** +- 플레이북 템플릿 등록 (SSH 명령 시퀀스 + 조건 분기) +- 원클릭 실행 + 진행 상황 실시간 SSE 스트리밍 +- 실행 이력 감사 기록 +- 기존 `ssh.py` + `batch.py` 패턴 그대로 재사용 + +| 항목 | 값 | +|------|-----| +| 난이도 | L | +| 임팩트 | H (SM 엔지니어 반복 작업 80% 절감) | +| 공수 | 2인주 | +| 기존 재사용 | `core/ssh_exec.py`, `routers/batch.py` | + +``` +엔드포인트: +GET /api/playbook/ 플레이북 목록 +POST /api/playbook/ 플레이북 등록 +POST /api/playbook/{id}/run 실행 (SSE 스트림) +GET /api/playbook/{id}/runs 실행 이력 +``` + +--- + +### I-02. 서버 성능 실시간 대시보드 (`routers/realtime_metrics.py`) + +**배경:** 서버 성능(CPU/메모리/디스크) 조회 = SSH 수동 실행 +**기능:** +- SSH → `top -bn1`, `df -h`, `free -m` 30초마다 수집 +- SSE 실시간 스트리밍 → 프론트 Chart.js 그래프 +- 임계값 초과 시 인시던트 자동 생성 + +| 항목 | 값 | +|------|-----| +| 난이도 | L | +| 임팩트 | H (이상탐지 조기 발견) | +| 공수 | 2인주 | +| 기존 재사용 | `core/ssh_exec.py`, `routers/anomaly.py`, SSE 패턴 | + +--- + +### I-03. KB 아티클 AI 자동 생성 (`routers/kb_auto_gen.py`) + +**배경:** SR/인시던트 해결 후 KB 등록은 수동 → 누락률 높음 +**기능:** +- SR/인시던트 COMPLETED 시 Ollama가 해결 과정 요약 → KB 초안 자동 생성 +- 담당자 검토 → 1클릭 KB 등록 +- 기존 `kb_agent.py` + `kb.py` 확장 + +| 항목 | 값 | +|------|-----| +| 난이도 | L | +| 임팩트 | M (지식베이스 품질 향상) | +| 공수 | 1인주 | +| 기존 재사용 | `core/kb_agent.py`, Ollama 패턴 | + +--- + +## 2순위 — 중기 개발 (3~5인주) + +### I-04. 멀티사이트 통합 관제 (`routers/multisite.py`) + +**배경:** 여러 관공서를 개별 대시보드로 따로 확인 → 비효율 +**기능:** +- 기관별 서버 헬스체크 배치 실행 +- 전체 기관 상태 지도 뷰 (지역별 분류) +- 기관별 SLA 위반 현황 통합 조회 + +| 임팩트 | H (대형 관제 수주 필수 기능) | 공수 | 4인주 | + +--- + +### I-05. SLA 위반 예측 분석 (`routers/sla_predict.py`) + +**배경:** SLA 위반을 사후 확인 → 예방 불가 +**기능:** +- 과거 SR 데이터 기반 회귀 분석 (사이킷런 경량 모델) +- 위반 위험 SR 사전 경고 + 자동 에스컬레이션 +- `predictive.py` 확장 + +| 임팩트 | H (SLA 위반 방지 = 계약 유지) | 공수 | 4인주 | + +--- + +### I-06. 공공기관 온보딩 자동화 (`routers/onboarding_wizard.py`) + +**배경:** 신규 기관 등록 = CMDB 입력 + 담당자 초대 + 라이선스 발급 수동 3단계 +**기능:** +- 마법사 형식 단계별 가이드 (기관정보 → 서버등록 → 계정생성 → 라이선스) +- 기존 `institutions.py` + `license.py` + `auth.py` 연계 + +| 임팩트 | M (도입 시간 80% 단축) | 공수 | 3인주 | + +--- + +### I-07. 웹 터미널 (`routers/web_terminal.py`) + +**배경:** 현장 엔지니어가 SSH 클라이언트 없이 브라우저에서 서버 접속 필요 +**기능:** +- PAM 세션 연계 브라우저 SSH 터미널 (xterm.js + WebSocket) +- 모든 입력/출력 세션 로깅 + 녹화 +- `pam.py` + `ssh.py` 확장 + +| 임팩트 | H (현장 대응 속도) | 공수 | 5인주 | + +--- + +## 3순위 — 장기 개발 (6인주+) + +### I-08. AI 이상탐지 튜닝 UI (`routers/anomaly_tuner.py`) + +**기능:** 임계값·민감도·기관별 기준선 Web UI로 조정 +**공수:** 6인주 | **기존 재사용:** `core/anomaly.py` + +--- + +### I-09. QR코드 자산 관리 (`routers/qr_asset.py`) + +**기능:** CMDB 서버별 QR 스티커 생성 + 모바일 스캔 → 서버 상세 즉시 조회 +**공수:** 6인주 | **패키지:** qrcode, PIL + +--- + +### I-10. 감사 대시보드 강화 (`routers/audit_visual.py`) + +**기능:** SHA-256 해시체인 시각화 (SVG 트리), 이상 감지 자동 알림 +**공수:** 7인주 | **기존 재사용:** `routers/audit.py` + +--- + +## 로드맵 타임라인 + +``` +2026년 6월 (1~2주) + I-01 자동화 플레이북 + I-02 서버 성능 실시간 대시보드 + +2026년 6월 (3~4주) + I-03 KB AI 자동 생성 + +2026년 7월 + I-04 멀티사이트 통합 관제 + I-05 SLA 위반 예측 + +2026년 8월 + I-06 온보딩 자동화 + I-07 웹 터미널 + +2026년 9월+ + I-08 AI 이상탐지 튜닝 UI + I-09 QR 자산 관리 + I-10 감사 대시보드 강화 +``` + +--- + +## 우선순위 매트릭스 + +``` +임팩트 +H │ I-01 I-02 I-04 I-05 I-07 + │ I-03 +M │ I-06 I-08 I-09 I-10 +L │ + └────────────────────────────────────────── + L(쉬움) M(보통) H(어려움) 난이도 +``` + +**즉시 착수 권장:** I-01, I-02, I-03 (난이도 L, 임팩트 M~H) + +--- +*Copyright © 2026 GUARDiA All Rights Reserved.* diff --git a/docs/MANAGER_NEXT_FEATURES.md b/docs/MANAGER_NEXT_FEATURES.md new file mode 100644 index 00000000..0cc7ee66 --- /dev/null +++ b/docs/MANAGER_NEXT_FEATURES.md @@ -0,0 +1,200 @@ +# GUARDiA Manager — 추가 개발 제안서 + +> **버전:** 1.0 | **작성일:** 2026-05-31 | **기준:** M-01~M-08 구현 완료 (페이지 16개) + +--- + +## 요약 + +| 항목 | 내용 | +|------|------| +| 현재 페이지 수 | 16개 | +| 제안 기능 수 | 9개 | +| 즉시 착수 추천 | DR 관제, 네트워크 관제, CSAP 대시보드 (신규 ITSM API 연동) | +| 총 예상 공수 | 약 29인주 | + +--- + +## 1순위 — Quick Win (즉시 착수, ITSM 신규 API 연동) + +> 2026-05-31 추가된 DR·네트워크·CSAP API를 Manager에 연동하는 작업이다. +> 서버 로직 없이 프론트엔드 페이지만 추가하면 되어 공수가 매우 적다. + +--- + +### MG-01. DR 재해복구 관제 (`DrConsole.tsx`) + +**배경:** DR 자동화(/api/dr/*) 구현됐으나 Manager에서 관제 불가 +**기능:** +- 시나리오 목록 + PASS/FAIL 상태 배지 +- RTO 목표 대비 실적 프로그레스 바 +- 최근 복구 테스트 이력 테이블 +- 복구 테스트 실행 버튼 (ADMIN, 모달 확인) +- 백업 무결성 검증 트리거 + +| 항목 | 값 | +|------|-----| +| 파일 | `frontend/src/pages/DrConsole.tsx` | +| 난이도 | L (기존 API 호출 패턴) | +| 임팩트 | H (공공기관 BCP 감사 대응) | +| 공수 | 1인주 | +| API | `/api/dr/dashboard`, `/api/dr/rto-rpo`, `/api/dr/scenarios`, `/api/dr/test` | + +**UI 구성 (NCloud 스타일):** +``` +┌─ DR 재해복구 관제 ─────────────────────────────────────┐ +│ [전체 N개] [PASS N개 ✅] [FAIL N개 ❌] [미테스트 N개] │ +├────────────────────────────────────────────────────────┤ +│ 시나리오명 RTO목표 실적 상태 마지막테스트 │ +│ WAS-01 장애 │ 120분 │ 18분 │ PASS │ 2026-05-31 │ +│ DB 페일오버 │ 240분 │ - │ 미테스트│ - │ +├────────────────────────────────────────────────────────┤ +│ [복구 테스트 실행] │ +└────────────────────────────────────────────────────────┘ +``` + +--- + +### MG-02. 네트워크 장비 관제 (`NetworkConsole.tsx`) + +**배경:** 네트워크 장비 관리(/api/network/*) 구현됐으나 Manager에서 조회 불가 +**기능:** +- 기관별 장비 목록 (타입 아이콘: 🔀SWITCH / 🛡FIREWALL / 🔗ROUTER) +- 최근 백업 일시 + 미백업 경고 배지 +- 설정 변경 감지 시 황색 Diff 배지 +- 장비 클릭 → 설정 diff 모달 +- SSH 빠른 명령 실행 (show interfaces 등) + +| 항목 | 값 | +|------|-----| +| 파일 | `frontend/src/pages/NetworkConsole.tsx` | +| 난이도 | L | +| 임팩트 | M (현장 엔지니어 가시성) | +| 공수 | 1인주 | +| API | `/api/network/devices`, `/api/network/topology`, `/api/network/devices/{id}/diff` | + +--- + +### MG-03. CSAP 보안 준수율 대시보드 (`CsapConsole.tsx`) + +**배경:** CSAP 자동 점검 구현됐으나 Manager에서 결과 확인·보고서 다운로드 불가 +**기능:** +- 기관별 준수율 + 등급(A~D) 컬러 테이블 +- 클릭 → 해당 기관 FAIL 항목 상세 +- 점검 실행 버튼 (ADMIN) +- Excel/HTML 보고서 다운로드 + +| 항목 | 값 | +|------|-----| +| 파일 | `frontend/src/pages/CsapConsole.tsx` | +| 난이도 | L | +| 임팩트 | H (보안감사 대응 직결) | +| 공수 | 1인주 | +| API | `/api/compliance/csap/dashboard`, `/api/compliance/csap/scan`, `/api/compliance/csap/report/excel` | + +--- + +## 2순위 — 중기 개발 (3~5인주) + +### MG-04. 실시간 서버 성능 그래프 (`PerformanceMonitor.tsx`) + +**기능:** +- SSE 연결 → CPU/메모리/디스크 실시간 시계열 그래프 (Chart.js) +- 멀티 서버 동시 비교 뷰 +- 임계값 초과 시 Manager UI 경고 배너 + SSE 이벤트 + +| 파일 | `frontend/src/pages/PerformanceMonitor.tsx` | +|------|-----| +| 난이도 | M | 임팩트 | H | 공수 | 3인주 | +| 선행 조건 | ITSM에 `/api/realtime-metrics` 신규 구현 필요 (ITSM I-02 항목) | + +--- + +### MG-05. 자동화 플레이북 UI (`PlaybookManager.tsx`) + +**기능:** +- 플레이북 등록/수정/실행 관리 페이지 +- 실행 로그 실시간 SSE 스트리밍 (터미널 스타일) +- 성공/실패 이력 + 실행 시간 통계 + +| 파일 | `frontend/src/pages/PlaybookManager.tsx` | +|------|-----| +| 난이도 | M | 임팩트 | H | 공수 | 3인주 | +| 선행 조건 | ITSM에 `/api/playbook` 신규 구현 필요 (ITSM I-01 항목) | + +--- + +### MG-06. 멀티기관 통합 관제 (`MultiSiteConsole.tsx`) + +**기능:** +- 기관별 헬스체크 배치 결과를 격자/지도 뷰로 표시 +- SLA 위반 기관 상위 정렬 +- 기관 클릭 → 해당 기관 서버/SR 드릴다운 + +| 파일 | `frontend/src/pages/MultiSiteConsole.tsx` | +|------|-----| +| 난이도 | M | 임팩트 | H | 공수 | 4인주 | + +--- + +## 3순위 — 장기 개발 (6인주+) + +### MG-07. SLA 예측 분석 대시보드 (`SLAPrediction.tsx`) + +위반 위험 SR 목록 + 예측 정확도 지표 +**선행 조건:** ITSM I-05 SLA 예측 분석 구현 완료 후 +**공수:** 3인주 (ITSM 포함 총 7인주) + +--- + +### MG-08. 화이트라벨 테마 (`ThemeCustomizer.tsx`) + +기관별 로고·색상 커스터마이징 → CSS 변수 동적 적용 +**공수:** 6인주 | 임팩트: M + +--- + +### MG-09. 모바일 반응형 개선 + +태블릿/스마트폰 브레이크포인트 최적화, 터치 친화적 UI +**공수:** 4인주 | 임팩트: M + +--- + +## 로드맵 타임라인 + +``` +2026년 6월 1~2주 + MG-01 DR 관제 통합 + MG-02 네트워크 장비 관제 + MG-03 CSAP 준수율 대시보드 + +2026년 7월 + MG-04 실시간 성능 그래프 (ITSM I-02 병행) + MG-05 자동화 플레이북 UI (ITSM I-01 병행) + +2026년 8월 + MG-06 멀티기관 통합 관제 + +2026년 9월+ + MG-07 SLA 예측, MG-08 화이트라벨, MG-09 모바일 +``` + +--- + +## 우선순위 매트릭스 + +``` +임팩트 +H │ MG-01 MG-03 MG-04 MG-05 MG-06 MG-07 + │ MG-02 +M │ MG-08 MG-09 +L │ + └──────────────────────────────────────────── + L(쉬움) M(보통) H(어려움) 난이도 +``` + +**즉시 착수:** MG-01, MG-02, MG-03 — 난이도 L, 임팩트 H, 공수 각 1인주 + +--- +*Copyright © 2026 GUARDiA All Rights Reserved.* diff --git a/docs/MESSENGER_NEXT_FEATURES.md b/docs/MESSENGER_NEXT_FEATURES.md new file mode 100644 index 00000000..abdf6db9 --- /dev/null +++ b/docs/MESSENGER_NEXT_FEATURES.md @@ -0,0 +1,163 @@ +# GUARDiA Messenger — 추가 개발 제안서 + +> **버전:** 1.0 | **작성일:** 2026-05-31 | **기준 빌드:** 51096ada (Expo SDK 51) + +--- + +## 요약 + +| 항목 | 내용 | +|------|------| +| 제안 기능 수 | 10개 | +| 즉시 착수 추천 | DR 모니터링 화면, 오프라인 모드, 생체인증 | +| 총 예상 공수 | 약 14인주 | +| 기존 화면 수 | 6개 (login, dashboard, SR, chat, notifications, settings) | + +--- + +## 1순위 — 즉시 착수 (Quick Win) + +### M-01. DR 모니터링 화면 (`app/(tabs)/dr.tsx`) +**배경:** GUARDiA ITSM에 DR 자동화(/api/dr/*)가 추가되었으나 모바일에서 조회 불가 +**기능:** +- 시나리오별 PASS/FAIL 상태 배지 +- RTO 목표 대비 실적 바 차트 +- 최근 복구 테스트 이력 5건 +- 탭에서 복구 테스트 실행 버튼 (ENGINEER 권한) + +| 항목 | 값 | +|------|-----| +| 난이도 | L (기존 API 호출 패턴 재사용) | +| 임팩트 | H (공공기관 BCP 현장 대응) | +| 공수 | 1주 | +| API | `/api/dr/dashboard`, `/api/dr/rto-rpo`, `/api/dr/scenarios` | + +--- + +### M-02. 네트워크 장비 현황 화면 (`app/(tabs)/network.tsx`) +**배경:** 네트워크 장비 관리(/api/network/*)가 추가되었으나 현장에서 모바일 조회 불가 +**기능:** +- 기관별 장비 목록 (타입별 아이콘) +- 마지막 백업 일시 + 미백업 장비 경고 +- 설정 변경 감지 알림 배지 +- 장비 선택 → 설정 diff 조회 + +| 항목 | 값 | +|------|-----| +| 난이도 | L | +| 임팩트 | M (현장 SM 엔지니어 활용) | +| 공수 | 1주 | +| API | `/api/network/devices`, `/api/network/topology`, `/api/network/devices/{id}/diff` | + +--- + +### M-03. 생체인증 로그인 (`hooks/useBiometric.ts`) +**배경:** 관리자 현장 방문 시 PIN 입력 번거로움 +**기능:** +- 최초 로그인 후 지문/Face ID 등록 +- 이후 생체인증으로 빠른 진입 +- 실패 시 기존 ID/PW로 폴백 + +| 항목 | 값 | +|------|-----| +| 난이도 | L (expo-local-authentication 기본 포함) | +| 임팩트 | M (UX 개선, 현장 접근성) | +| 공수 | 0.5주 | +| 패키지 | expo-local-authentication (추가 설치 불필요) | + +--- + +### M-04. 오프라인 모드 (`hooks/useOfflineCache.ts`) +**배경:** 지방 관공서 현장에서 네트워크 불안정 시 앱 조회 불가 +**기능:** +- 마지막 조회 데이터 expo-secure-store 캐시 +- 오프라인 상태 배너 표시 +- SR 목록, 서버 상태, 알림 목록 오프라인 조회 + +| 항목 | 값 | +|------|-----| +| 난이도 | L | +| 임팩트 | H (지방 관공서 현장 필수) | +| 공수 | 1주 | +| 패키지 | @react-native-community/netinfo (package.json 추가 필요) | + +--- + +## 2순위 — 중기 개발 (3~5주) + +### M-05. CSAP 준수율 대시보드 (`app/(tabs)/csap.tsx`) +**기능:** 기관별 준수율 원형 게이지, 등급 배지(A~D), FAIL 항목 빠른 조회 +**공수:** 1주 | **API:** `/api/compliance/csap/dashboard`, `/api/compliance/csap/results` + +--- + +### M-06. Kanban SR 보드 (`app/(tabs)/kanban.tsx`) +**배경:** 엔지니어가 SR 상태를 직관적으로 관리 +**기능:** +- 상태별 컬럼 가로 스크롤 (접수 → 진행중 → PM검토 → 완료) +- 카드 탭 → ActionSheet로 상태 이동 +- 드래그 대신 탭 방식 (EAS 빌드 안정성 우선) + +**공수:** 2주 | **API:** `/api/tasks`, `PATCH /api/tasks/{id}` + +--- + +### M-07. 인시던트 빠른 대응 (`app/(tabs)/incidents.tsx`) +**기능:** +- 인시던트 목록 + 심각도별 색상 구분 +- Swipe Right → 수락, Swipe Left → 에스컬레이션 +- 온콜 담당자 즉시 연락 (tel: 링크) + +**공수:** 1.5주 | **API:** `/api/incidents`, `/api/oncall` + +--- + +### M-08. 다크모드 지원 (`hooks/useTheme.ts`) +**기능:** 시스템 테마 자동 감지, 모든 화면 다크/라이트 전환 +**공수:** 1주 | **방법:** useColorScheme() + COLORS 상수 분기 + +--- + +## 3순위 — 장기 개발 (6주+) + +### M-09. 멀티기관 계정 관리 (`app/(auth)/select-site.tsx`) +**배경:** 여러 관공서 SM 담당자가 하나의 앱에서 기관 전환 +**기능:** 기관 선택 화면, 기관별 토큰 캐시, 빠른 전환 +**공수:** 3주 | **선행 조건:** 서버에 멀티기관 세션 API 추가 필요 + +--- + +### M-10. WebSocket 실시간 알림 강화 +**배경:** 현재 SSE 기반 → 앱 백그라운드에서 끊김 +**기능:** WebSocket 영속 연결, 백그라운드 알림 수신 (expo-task-manager 활용) +**공수:** 3주 | **주의:** expo-notifications 플러그인 추가 불필요 (서버 SSE 방식 유지) + +--- + +## 로드맵 타임라인 + +``` +2026년 6월 (1~2주차) + → M-03 생체인증, M-04 오프라인 모드 + +2026년 6월 (3~4주차) + → M-01 DR 모니터링, M-02 네트워크 장비 현황 + +2026년 7월 + → M-05 CSAP 대시보드, M-06 Kanban SR, M-08 다크모드 + +2026년 8월 + → M-07 인시던트 빠른 대응, M-09 멀티기관, M-10 실시간 알림 +``` + +--- + +## 구현 참고 + +- 모든 신규 화면: `new-features` 스킬 참조 +- 빌드 금기사항: `app/CLAUDE.md` 참조 +- EAS 빌드: `eas-build-deploy` 스킬 참조 +- 서버 API 명세: `manual/39_DR_네트워크장비_CSAP_운영가이드.md` + +--- +*Copyright © 2026 GUARDiA All Rights Reserved.* diff --git a/itsm/.claude/agents/roadmap-planner.md b/itsm/.claude/agents/roadmap-planner.md new file mode 100644 index 00000000..ecc86a0a --- /dev/null +++ b/itsm/.claude/agents/roadmap-planner.md @@ -0,0 +1,59 @@ +--- +name: roadmap-planner +model: opus +--- + +# Roadmap Planner — ITSM 추가 개발 기획 전문가 + +## 핵심 역할 +GUARDiA ITSM의 추가 개발 우선순위를 분석하고, 구현 계획을 수립하며, +제안 MD 문서와 기술 명세를 작성한다. +공공기관 요건·경쟁력·기술 실현 가능성을 종합 평가한다. + +## 작업 원칙 +1. `itsm-roadmap` 스킬을 읽고 분석한다 +2. 기존 구현 현황(70+ 라우터)과 중복 없는 신규 기능만 제안 +3. 공공기관 도입 장벽(보안인증, 예산, 조달) 을 현실적으로 고려 +4. 각 제안 항목에 구현 난이도(L/M/H), 비즈니스 임팩트(L/M/H), 예상 공수(인주)를 명시 +5. 제안 → 명세 → 구현 순서를 명확히 구분 + +## 담당 작업 +- ITSM 추가 개발 제안 MD 작성 (`docs/ITSM_NEXT_FEATURES.md`) +- 개발 우선순위 매트릭스 생성 +- 기술 스택 검토 (기존 FastAPI + SQLAlchemy + paramiko 패턴 준수) +- 구현 가능성 검증 (기존 라우터·모델 재활용 방안) +- 로드맵 타임라인 작성 (단기/중기/장기) + +## 제안 도메인 +| 도메인 | 항목 예시 | +|--------|----------| +| 운영 자동화 | 자동화 플레이북, 서버 성능 실시간 대시보드 | +| AI 고도화 | 이상탐지 튜닝 UI, SLA 예측 분석, KB AI 자동 생성 | +| 관제 확장 | 멀티사이트 통합 관제, QR 자산 관리 | +| 보안 강화 | 원격 터미널(PAM 연계), 감사 대시보드 강화 | +| 운영 효율 | 공공기관 온보딩 자동화, 기술문서 자동 생성 | + +## 입력 프로토콜 +```json +{ + "focus": "all | operation | ai | security | monitoring", + "horizon": "short(1M) | mid(3M) | long(6M)", + "constraint": "공수 제한, 우선 도메인 등" +} +``` + +## 출력 프로토콜 +```json +{ + "proposal_doc": "docs/ITSM_NEXT_FEATURES.md", + "top_3_quick_wins": ["항목A", "항목B", "항목C"], + "timeline": {"short": [], "mid": [], "long": []}, + "total_man_weeks": 24 +} +``` + +## 팀 통신 프로토콜 +- **수신**: orchestrator → 로드맵 분석 요청 +- **발신**: orchestrator → 제안 문서 완료 + 우선순위 결과 +- **발신**: sr-manager → 고임팩트 항목을 SR로 등록 요청 (선택) +- **파일 공유**: `docs/ITSM_NEXT_FEATURES.md`, `_workspace/roadmap-analysis.md` diff --git a/itsm/.claude/skills/itsm-roadmap/SKILL.md b/itsm/.claude/skills/itsm-roadmap/SKILL.md new file mode 100644 index 00000000..b3afe75f --- /dev/null +++ b/itsm/.claude/skills/itsm-roadmap/SKILL.md @@ -0,0 +1,128 @@ +--- +name: itsm-roadmap +description: "GUARDiA ITSM 추가 개발 제안 및 로드맵 관리 스킬. 기존 구현 현황 분석, 신규 기능 우선순위 결정, 공수 추정, 로드맵 문서 작성을 수행한다. 다음 상황에서 반드시 사용: (1) '추가 개발 제안', '다음에 뭘 만들까', '로드맵 작성' 요청; (2) 'ITSM 고도화', '신규 기능 기획', '우선순위 결정' 요청; (3) 제안서·기획서 MD 파일 생성; (4) 기존 70+ 라우터와 중복 없는 신규 기능 발굴; (5) 다시 실행, 업데이트, 수정, 보완 요청. FastAPI + SQLAlchemy + paramiko 기존 패턴을 반드시 준수한다." +--- + +# GUARDiA ITSM 로드맵 관리 스킬 + +## 기존 구현 현황 (중복 제안 방지용) + +이미 구현된 주요 기능 (제안에서 제외): +- SR 생명주기, 승인 워크플로우, 대시보드 +- CMDB, 변경관리(CAB), 문제관리, 용량관리 +- AI 이상탐지, 챗봇, 코드리뷰, KB 에이전트 +- 취약점 스캔, PAM, LDAP, 2FA, 감사 로그 +- DR 자동화, 네트워크 장비, CSAP 점검 ← 최근 추가 +- FinOps, 멀티테넌트, SLA 대시보드, Grafana 연동 + +## 제안 평가 매트릭스 + +각 항목을 다음 3축으로 평가한다: + +| 축 | L | M | H | +|----|---|---|---| +| 구현 난이도 | 기존 패턴 재사용 | 신규 모듈 필요 | 외부 시스템 연동 | +| 비즈니스 임팩트 | 편의 개선 | 운영 효율 30%↑ | 수주 경쟁력 직결 | +| 공수 (인주) | 1~2 | 3~5 | 6+ | + +## 추가 개발 제안 카탈로그 + +### 1순위 — Quick Win (구현 쉽고 임팩트 高) + +``` +QW-01. 자동화 플레이북 (playbook.py) + - 반복 운영 작업 시나리오 템플릿 저장·실행 + - 기존 ssh.py + batch.py 패턴 재사용 + - 난이도: L | 임팩트: H | 공수: 2주 + +QW-02. 서버 성능 실시간 대시보드 (realtime_metrics.py) + - SSH → top/vmstat/df 주기적 수집 → SSE 스트리밍 + - 기존 anomaly.py + ssh.py 패턴 재사용 + - 난이도: L | 임팩트: H | 공수: 2주 + +QW-03. 기술문서 AI 자동 생성 (kb_auto_gen.py) + - 인시던트/SR 해결 시 KB 아티클 자동 초안 생성 + - 기존 kb_agent.py + Ollama 패턴 재사용 + - 난이도: L | 임팩트: M | 공수: 1주 +``` + +### 2순위 — 중기 (공수 3~5주) + +``` +MID-01. 멀티사이트 통합 관제 (multisite_console.py) + - 여러 기관 서버 상태를 단일 대시보드에서 조회 + - 기관별 헬스체크 배치 + 집계 API + - 난이도: M | 임팩트: H | 공수: 4주 + +MID-02. SLA 예측 분석 (sla_predict.py) + - ML 기반 SLA 위반 사전 예측 (predictive.py 확장) + - 과거 SR 데이터 → 회귀 모델 학습 + - 난이도: M | 임팩트: H | 공수: 4주 + +MID-03. 공공기관 온보딩 자동화 (onboarding_wizard.py) + - 신규 기관 등록 → CMDB 초기화 → 담당자 초대 → 라이선스 발급 일괄 처리 + - 기존 institutions.py + license.py 연계 + - 난이도: M | 임팩트: M | 공수: 3주 + +MID-04. 웹 터미널 (web_terminal.py) + - PAM 연계 브라우저 내 SSH 터미널 (xterm.js) + - 기존 pam.py + ssh.py 확장, 세션 로깅 + - 난이도: M | 임팩트: H | 공수: 5주 +``` + +### 3순위 — 장기 (공수 6주+) + +``` +LONG-01. AI 이상탐지 자가학습 UI (anomaly_tuner.py) + - 임계값/민감도 조정 Web UI + - 기관별 기준선 커스터마이징 + - 난이도: H | 임팩트: M | 공수: 6주 + +LONG-02. QR코드 자산 관리 (qr_asset.py) + - CMDB 서버별 QR 스티커 생성·스캔 앱 연동 + - qrcode 라이브러리 + CMDB API + - 난이도: H | 임팩트: M | 공수: 6주 + +LONG-03. 감사 대시보드 강화 (audit_visual.py) + - SHA-256 해시체인 시각화 (D3.js SVG) + - 감사 이벤트 타임라인 + 이상 감지 + - 난이도: H | 임팩트: M | 공수: 7주 +``` + +## 문서 생성 패턴 + +`docs/ITSM_NEXT_FEATURES.md` 생성 시 다음 구조를 따른다: + +```markdown +# GUARDiA ITSM 추가 개발 제안서 + +> 버전: X.X | 작성일: YYYY-MM-DD + +## 요약 +- 제안 항목 수: N개 +- 총 예상 공수: N인주 +- 즉시 착수 추천: 항목명 + +## 1순위 (Quick Win) +... + +## 2순위 (중기) +... + +## 3순위 (장기) +... + +## 로드맵 타임라인 +| 월 | 항목 | 담당 에이전트 | +... +``` + +## 구현 시작 가이드 (제안 → 구현 전환) + +특정 항목 구현 결정 시: +1. `roadmap-planner`가 기술 명세 작성 +2. 해당 에이전트에게 구현 위임: + - 서버 기능 → `deploy-engineer` 또는 직접 구현 + - AI 기능 → `incident-responder` (Ollama 연동) + - 보안 기능 → 신규 에이전트 추가 검토 +3. CLAUDE.md 변경 이력 업데이트 diff --git a/manager/.claude/agents/roadmap-planner.md b/manager/.claude/agents/roadmap-planner.md new file mode 100644 index 00000000..12a91675 --- /dev/null +++ b/manager/.claude/agents/roadmap-planner.md @@ -0,0 +1,56 @@ +--- +name: roadmap-planner +model: opus +--- + +# Roadmap Planner — Manager 추가 개발 기획 전문가 + +## 핵심 역할 +GUARDiA Manager의 추가 개발 우선순위를 분석하고, +신규 페이지·컴포넌트·API 연동 계획을 수립하며 제안 문서를 작성한다. +기존 M-01~M-08 구현과 중복 없이 확장 방향을 도출한다. + +## 기존 구현 현황 (중복 제안 방지) +이미 구현된 페이지 (16개): +Dashboard, CMDB, Servers, Institutions, Deployments, Repos, +Users, Licenses, LLMManager, ConfigEnv, ConfigNginx, +ExportImport, ApiKeys, AuditLog, Notifications, Login + +## 작업 원칙 +1. `manager-roadmap` 스킬을 읽고 분석한다 +2. 기존 ITSM API 신규 추가분(DR, 네트워크, CSAP)과 Manager 연동 우선 제안 +3. 네이버 클라우드 콘솔(NCloud) UX 패턴 유지 +4. React 18 + Vite + TypeScript + 기존 axios 인스턴스 패턴 재사용 +5. 각 제안에 구현 난이도·임팩트·공수 명시 + +## 담당 작업 +- Manager 추가 개발 제안 MD 작성 (`docs/MANAGER_NEXT_FEATURES.md`) +- 신규 페이지 컴포넌트 설계 +- API 연동 방안 (ITSM 신규 API 활용) +- 로드맵 타임라인 작성 + +## 입력 프로토콜 +```json +{ + "focus": "all | dr | network | csap | ui | ops", + "horizon": "short | mid | long", + "constraint": "공수 제한, 우선 도메인" +} +``` + +## 출력 프로토콜 +```json +{ + "proposal_doc": "docs/MANAGER_NEXT_FEATURES.md", + "top_3_quick_wins": ["DR 관제 통합", "네트워크 장비 관제", "실시간 성능 그래프"], + "new_pages": ["DrConsole.tsx", "NetworkConsole.tsx", "CsapConsole.tsx"], + "api_additions": ["/api/dr/*", "/api/network/*", "/api/compliance/csap/*"] +} +``` + +## 팀 통신 프로토콜 +- **수신**: orchestrator → 로드맵 분석·문서화 요청 +- **발신**: ux-architect → UI 설계 요청 (구현 결정된 기능) +- **발신**: backend-engineer → API 프록시 추가 요청 +- **발신**: integration-specialist → ITSM 신규 API 연동 검토 요청 +- **파일 공유**: `docs/MANAGER_NEXT_FEATURES.md`, `_workspace/manager-roadmap.md` diff --git a/manager/.claude/skills/manager-orchestrator/SKILL.md b/manager/.claude/skills/manager-orchestrator/SKILL.md new file mode 100644 index 00000000..aed8bb29 --- /dev/null +++ b/manager/.claude/skills/manager-orchestrator/SKILL.md @@ -0,0 +1,140 @@ +--- +name: manager-orchestrator +description: > + GUARDiA 관리자 시스템(C:\GUARDiA\manager) 구현을 조율하는 오케스트레이터. + M-01~M-08 기능 구현, UI 설계, API 연동, 보안, 배포 전 단계를 팀으로 실행한다. + 트리거: '관리자 시스템 만들어줘', 'M-01 대시보드', 'M-03 CMDB 페이지', '배포 관리 기능', + '다시 실행', '재실행', '업데이트', '수정', '보완', '네이버 클라우드 참조해서 구현', + 'DR 관제 추가', '네트워크 관제 추가', 'CSAP 대시보드', '실시간 그래프', '플레이북 UI', + '멀티기관 통합', '로드맵', '추가 개발 제안', 'MG-0X' 관련 모든 요청. + 에이전트 팀 모드(ux-architect + backend-engineer + integration-specialist + security-engineer + devops-engineer + roadmap-planner)로 실행. +--- + +# GUARDiA Manager 오케스트레이터 + +**실행 모드:** 에이전트 팀 (5명) — 하이브리드 (Phase별 팀 조합 변경) + +## Phase 0: 컨텍스트 확인 + +`_workspace/` 폴더 존재 여부로 실행 모드를 결정한다: +- **초기 실행**: `_workspace/` 없음 → Phase 1부터 전체 실행 +- **부분 재실행**: `_workspace/` 존재 + 특정 기능(M-0X) 수정 요청 → 해당 에이전트만 재호출 +- **새 기능 추가**: 기존 `_workspace/` 유지 + 신규 기능 추가 → Phase 2부터 해당 기능만 + +``` +_workspace/ +├── api-contract.md ← integration-specialist 산출물 +├── api-spec.md ← backend-engineer 산출물 +├── security-review.md ← security-engineer 산출물 +├── deploy-guide.md ← devops-engineer 산출물 +└── ui-{feature}.md ← ux-architect 산출물 (기능별) +``` + +이전 산출물이 있으면 해당 에이전트에게 "이전 파일을 읽고 개선/확장하라"고 지시한다. + +--- + +## Phase 1: 요구사항 분석 (오케스트레이터 직접 실행) + +1. CLAUDE.md의 기능 목록(M-01~M-08) 확인 +2. 사용자 요청에서 구현할 기능 코드 추출 +3. 네이버 클라우드 콘솔 참조 사항 정리: `references/ncloud-patterns.md` 읽기 +4. 기능별 의존 관계 파악 (M-01은 M-03 데이터 필요 등) +5. 구현 순서 결정: 필수 선행 → 의존 기능 순 + +**기본 구현 순서:** +``` +M-02(인증) → M-03(CMDB/자산) → M-01(대시보드) → M-04(배포) → M-05(보안) → M-06(LLM) → M-07(설정) → M-08(알림) +``` + +--- + +## Phase 2: 연동 설계 (팀: integration-specialist 주도) + +**실행 모드:** 서브 에이전트 (결과만 필요) + +`integration-specialist`를 호출하여: +- GUARDiA ITSM API 스캔 및 활용 가능한 엔드포인트 목록 정리 +- Manager Backend 필요 엔드포인트 결정 +- `_workspace/api-contract.md` 생성 + +integration-specialist 완료 후 결과를 받아 Phase 3으로 진행. + +--- + +## Phase 3: 병렬 개발 (팀: ux-architect + backend-engineer) + +**실행 모드:** 에이전트 팀 + +``` +TeamCreate( + name: "manager-dev-team", + members: [ux-architect, backend-engineer, security-engineer] +) +``` + +**작업 할당:** +``` +TaskCreate("M-{X} Frontend 구현", assignee=ux-architect, blockedBy=[api-contract]) +TaskCreate("M-{X} Backend API 구현", assignee=backend-engineer, blockedBy=[api-contract]) +TaskCreate("인증/보안 설정", assignee=security-engineer, blockedBy=[]) +``` + +**데이터 흐름:** +- `_workspace/api-contract.md` → ux-architect, backend-engineer가 공유 읽기 +- ux-architect → `_workspace/api-spec.md` 업데이트 요청 시 backend-engineer에게 SendMessage +- security-engineer → 구현 완료 후 `_workspace/security-review.md` 작성 + +**네이버 클라우드 디자인 패턴 적용 (ux-architect에게 전달):** +- references/ncloud-patterns.md 참조 +- 좌측 사이드바 서비스 트리 + 상단 GNB 레이아웃 필수 +- 리소스 상태 배지: 초록(실행중) / 회색(중지) / 빨강(오류) +- 테이블: 체크박스 + 벌크 액션 + 컬럼 정렬 +- 모달 대신 슬라이드 패널(drawer) 선호 + +--- + +## Phase 4: 배포 설정 (팀: devops-engineer) + +**실행 모드:** 서브 에이전트 + +`devops-engineer`를 호출하여: +- Manager Backend systemd 서비스 등록 +- Nginx 설정 파일 생성 +- Gitea 저장소 생성 및 Webhook 연결 +- `Jenkinsfile` 작성 +- `_workspace/deploy-guide.md` 생성 + +--- + +## Phase 5: 통합 검증 + +모든 산출물 확인: +1. `frontend/src/` 파일 존재 확인 +2. `backend/main.py` 실행 가능 여부 (`python -m py_compile`) +3. `_workspace/security-review.md` 확인 +4. Nginx 설정 문법 검증 (`nginx -t` 원격 실행) +5. 서비스 접속 테스트 + +--- + +## 에러 핸들링 + +| 상황 | 대응 | +|------|------| +| GUARDiA ITSM 연결 불가 | Mock 데이터로 UI 구현 후 연결 안내 | +| 에이전트 timeout | 해당 기능 없이 진행, `_workspace/`에 미완료 기록 | +| 포트 충돌 | devops-engineer에게 대체 포트 재할당 요청 | + +--- + +## 테스트 시나리오 + +**정상 흐름:** +1. "M-01 대시보드 페이지 만들어줘" → Phase 0~5 전체 실행 → `frontend/src/pages/Dashboard.tsx` 생성 + +**부분 재실행:** +1. "배포 관리 버튼 디자인 수정해줘" → Phase 0에서 _workspace 감지 → ux-architect만 재호출 + +**에러 흐름:** +1. GUARDiA ITSM 연결 실패 → Mock API 응답으로 UI 구현 완료, 연결 설정 안내 diff --git a/manager/.claude/skills/manager-roadmap/SKILL.md b/manager/.claude/skills/manager-roadmap/SKILL.md new file mode 100644 index 00000000..f391f58a --- /dev/null +++ b/manager/.claude/skills/manager-roadmap/SKILL.md @@ -0,0 +1,162 @@ +--- +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 문제가 있거나 토큰 변환이 필요할 때만 사용한다. diff --git a/manager/CLAUDE.md b/manager/CLAUDE.md new file mode 100644 index 00000000..2b2e0d60 --- /dev/null +++ b/manager/CLAUDE.md @@ -0,0 +1,86 @@ +# GUARDiA 관리자 시스템 (Manager) + +> **Claude Code용 프로젝트 마스터 컨텍스트** + +--- + +## 프로젝트 비전 + +GUARDiA ITSM·홈페이지·서버 인프라·CI/CD를 단일 화면에서 통합 관제하는 +**경량 관리자 포털**. GUARDiA ITSM API를 허브로 삼아 별도 DB 없이 운영한다. + +--- + +## 기술 스택 + +| 레이어 | 기술 | 비고 | +|--------|------|------| +| Frontend | React 18 + TypeScript + Vite | 독립 SPA | +| Backend | Python FastAPI (경량) | 시스템 수준 작업 전용 | +| 인증 | GUARDiA ITSM JWT 공유 | 별도 DB 없음 | +| 연동 | GUARDiA ITSM REST API | http://101.79.17.164:8001 | +| 배포 | Gitea + Deploy Webhook | 포트 9999 | + +--- + +## 제안 기능 목록 (M-01 ~ M-08) + +| 코드 | 기능 | 우선순위 | 연동 대상 | +|------|------|---------|---------| +| **M-01** | 통합 운영 대시보드 (**메인화면 — 차트 중심**) | ⭐ 필수 | ITSM API, 서버 SSH | +| **M-02** | 테넌트/사용자 관리 | ⭐ 필수 | ITSM /api/auth, /api/tenant | +| **M-03** | CMDB/서버 자산 관리 | ⭐ 필수 | ITSM /api/cmdb, /api/ssh | +| **M-04** | 배포/CI-CD 관리 | ⭐ 필수 | Gitea API, Deploy Webhook | +| **M-05** | 보안/API Key 관리 | ⭐ 필수 | ITSM /api/external/keys, /api/audit | +| **M-06** | LLM/AI 엔진 관리 | 🔵 권장 | Ollama API (localhost:11434) | +| **M-07** | 시스템 설정 관리 | 🔵 권장 | .env 편집, Nginx 리로드 | +| **M-08** | 알림/리포트 | 🟡 선택 | ITSM /api/report, 이메일 | + +--- + +## 디렉터리 구조 + +``` +C:\GUARDiA\manager\ +├── CLAUDE.md ← 이 파일 +├── frontend/ ← React SPA +│ ├── src/ +│ │ ├── pages/ ← 각 기능 페이지 +│ │ ├── components/ ← 공통 컴포넌트 +│ │ ├── hooks/ ← 커스텀 훅 +│ │ └── api/ ← API 클라이언트 +│ └── package.json +├── backend/ ← FastAPI (시스템 작업 전용) +│ ├── main.py +│ ├── routers/ +│ │ ├── system.py ← 서버 상태, 서비스 제어 +│ │ ├── deploy.py ← 배포 트리거, 이력 +│ │ └── config.py ← 설정 관리 +│ └── requirements.txt +└── .claude/ + ├── agents/ ← 에이전트 정의 + └── skills/ ← 스킬 파일 +``` + +--- + +## 하네스: GUARDiA Manager + +**목표:** 관리자 시스템 전체 구현 — UI 설계 → API 연동 → 보안 → 배포까지 자동화 + +**UI 참조:** 네이버 클라우드 콘솔(console.ncloud.com) 디자인 패턴 적용 필수. +좌측 사이드바 서비스 트리 + 상단 GNB 레이아웃, 리소스 상태 배지, NCloud 스타일 테이블. + +**메인화면:** 대시보드 차트 중심 구성 — SR 추이(꺾은선), 서버 상태(도넛), 리소스(게이지), 배포 이력(타임라인). +→ `references/dashboard-charts.md` 참조. + +**트리거:** 관리자 시스템 관련 작업 요청 시 `manager-orchestrator` 스킬을 사용하라. +`M-01 대시보드 만들어줘`, `M-03 CMDB 페이지 구현`, `배포 관리 기능 추가` 등. +다시 실행, 재실행, 업데이트, 수정, 보완 요청 시에도 이 스킬을 사용하라. + +**변경 이력:** +| 날짜 | 변경 내용 | 대상 | 사유 | +|------|----------|------|------| +| 2026-05-30 | 초기 하네스 구성 | 전체 | GUARDiA Manager 신규 구축 | +| 2026-05-30 | M-01~M-08 전체 구현 + 서버 배포 | frontend/, backend/, deploy_server.py | 단계별 전체 구현 완료 | +| 2026-05-31 | roadmap-planner 에이전트 + manager-roadmap 스킬 추가 | agents/, skills/ | MG-01~MG-09 추가 개발 제안 (DR·네트워크·CSAP 관제 연동) |