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:
parent
fc756a493e
commit
b217d101f0
76
app/.claude/agents/feature-developer.md
Normal file
76
app/.claude/agents/feature-developer.md
Normal 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` 에 구현 명세 기록
|
||||
240
app/.claude/skills/new-features/SKILL.md
Normal file
240
app/.claude/skills/new-features/SKILL.md
Normal 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
53
app/CLAUDE.md
Normal 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
193
docs/ITSM_NEXT_FEATURES.md
Normal 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.*
|
||||
200
docs/MANAGER_NEXT_FEATURES.md
Normal file
200
docs/MANAGER_NEXT_FEATURES.md
Normal 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.*
|
||||
163
docs/MESSENGER_NEXT_FEATURES.md
Normal file
163
docs/MESSENGER_NEXT_FEATURES.md
Normal 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.*
|
||||
59
itsm/.claude/agents/roadmap-planner.md
Normal file
59
itsm/.claude/agents/roadmap-planner.md
Normal 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`
|
||||
128
itsm/.claude/skills/itsm-roadmap/SKILL.md
Normal file
128
itsm/.claude/skills/itsm-roadmap/SKILL.md
Normal 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 변경 이력 업데이트
|
||||
56
manager/.claude/agents/roadmap-planner.md
Normal file
56
manager/.claude/agents/roadmap-planner.md
Normal 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`
|
||||
140
manager/.claude/skills/manager-orchestrator/SKILL.md
Normal file
140
manager/.claude/skills/manager-orchestrator/SKILL.md
Normal 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 구현 완료, 연결 설정 안내
|
||||
162
manager/.claude/skills/manager-roadmap/SKILL.md
Normal file
162
manager/.claude/skills/manager-roadmap/SKILL.md
Normal 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
86
manager/CLAUDE.md
Normal 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 관제 연동) |
|
||||
Loading…
Reference in New Issue
Block a user