feat(harness): Messenger·Manager·ITSM 하네스 확장 + 추가 개발 제안서 3종

## 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 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPR\ython 2026-05-31 09:44:52 +09:00
parent fc756a493e
commit b217d101f0
12 changed files with 1556 additions and 0 deletions

View File

@ -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` 에 구현 명세 기록

View File

@ -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<DRDashboard | null>(null)
const [rtoRpo, setRtoRpo] = useState<RtoRpo | null>(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 (
<ScrollView>
{/* 시나리오별 PASS/FAIL 배지 */}
{/* RTO/RPO 목표 vs 실적 바 차트 */}
{/* 최근 테스트 이력 5건 */}
</ScrollView>
)
}
```
**타입 정의:**
```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 }) => (
<TouchableOpacity style={s.card}>
<View style={s.iconRow}>
<DeviceIcon type={device.device_type} />
<Text style={s.name}>{device.device_name}</Text>
{!device.last_backup_at && <Badge color="red" text="미백업" />}
</View>
<Text style={s.meta}>{device.vendor} · {device.location}</Text>
</TouchableOpacity>
)
```
### 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 }) => (
<View style={s.gauge}>
<Text style={[s.rate, { color: GradeColor[grade as keyof typeof GradeColor] }]}>
{rate}%
</Text>
<Text style={[s.grade, { color: GradeColor[grade as keyof typeof GradeColor] }]}>
{grade}등급
</Text>
</View>
)
```
### 4. 오프라인 모드 (`hooks/useOfflineCache.ts`)
```typescript
import * as SecureStore from 'expo-secure-store'
import NetInfo from '@react-native-community/netinfo' // 주의: EAS에서 자동 설치됨
export function useOfflineCache<T>(key: string, fetcher: () => Promise<T>) {
const [data, setData] = useState<T | null>(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<boolean> {
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<string, string> = {
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``<Tabs.Screen>` 항목만 추가:
```tsx
<Tabs.Screen name="dr" options={{ title: 'DR', tabBarIcon: ... }} />
<Tabs.Screen name="network" options={{ title: '네트워크', tabBarIcon: ... }} />
<Tabs.Screen name="csap" options={{ title: 'CSAP', tabBarIcon: ... }} />
<Tabs.Screen name="kanban" options={{ title: 'Kanban', tabBarIcon: ... }} />
```
## 빌드 안전성 체크리스트
신규 기능 구현 후 반드시 확인:
- [ ] `@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` 참조 (필요 시 생성).

53
app/CLAUDE.md Normal file
View File

@ -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종 |

193
docs/ITSM_NEXT_FEATURES.md Normal file
View File

@ -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.*

View File

@ -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.*

View File

@ -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.*

View File

@ -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`

View File

@ -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 변경 이력 업데이트

View File

@ -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`

View File

@ -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 구현 완료, 연결 설정 안내

View File

@ -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<DRDashboard | null>(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
itsm.get('/api/dr/dashboard')
.then(r => setData(r.data))
.finally(() => setLoading(false))
}, [])
return (
<div className="manager-page">
<div className="page-header">
<h1>DR 재해복구 관제</h1>
<button onClick={() => itsm.post('/api/dr/test', { scenario_id: 1 })}>
복구 테스트 실행
</button>
</div>
{/* NCloud 스타일 상태 카드 + 테이블 */}
</div>
)
}
```
### 사이드바 메뉴 추가 (`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 문제가 있거나 토큰 변환이 필요할 때만 사용한다.

86
manager/CLAUDE.md Normal file
View File

@ -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 관제 연동) |