From 97bb50128e24f87dcd6eeceada64c1228e82806a Mon Sep 17 00:00:00 2001 From: DESKTOP-TKLFCPRython Date: Sun, 31 May 2026 21:10:36 +0900 Subject: [PATCH] feat(guardia-page): update to v2.0 features + manuals + Jenkins exclude MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GuardiaDetail.jsx: - FEATURES: 8 -> 12 (RPA봇, 스크랩핑, DR, CSAP, 자연어명령 추가) - BOT_COMMANDS: 19 -> 44 (스크랩봇, CI/CD, PMS, 보안, 디자인 명령어 추가) - TECH_STACK: Vector DB(pgvector/ChromaDB/LangChain), 자동화봇 추가 Jenkinsfile: - sparse checkout: manual/ 폴더 체크아웃 제외 (배포 대상 아님) - workspace/zioinfo-web/Jenkinsfile 동일 적용 Manuals: - manual/41_zio서버_DB_연결정보.md: PostgreSQL/Gitea/Ollama/ChromaDB/SMTP/SSH - manual/42_zio서버_소프트웨어_구성도.md: 전체 SW 구성도 + 아키텍처 Co-Authored-By: Claude Sonnet 4.6 --- Jenkinsfile | 13 +++- frontend/src/pages/GuardiaDetail.jsx | 96 ++++++++++++++++++++-------- 2 files changed, 82 insertions(+), 27 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 38ed33f..9b08c9a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,7 +18,18 @@ pipeline { stage('Checkout') { steps { echo "브랜치: ${env.GIT_BRANCH ?: 'main'} | 커밋: ${env.GIT_COMMIT?.take(7) ?: '-'}" - checkout scm + checkout([ + $class: 'GitSCM', + branches: scm.branches, + userRemoteConfigs: scm.userRemoteConfigs, + extensions: [ + // manual/ 폴더 체크아웃 제외 (배포 대상 아님) + [$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [ + [path: 'frontend'], + [path: 'backend'], + ]] + ] + ]) } } diff --git a/frontend/src/pages/GuardiaDetail.jsx b/frontend/src/pages/GuardiaDetail.jsx index bef6d5a..eb369de 100644 --- a/frontend/src/pages/GuardiaDetail.jsx +++ b/frontend/src/pages/GuardiaDetail.jsx @@ -8,14 +8,22 @@ const FEATURES = [ desc:'Ollama 온프레미스 sLLM 기반. 메신저 한 줄 명령 → 자연어 파싱 → 자동 배포·운영. 외부 API 완전 차단으로 폐쇄망 환경 최적화.' }, { icon:'🔧', title:'에이전트리스 아키텍처', desc:'대상 서버에 어떤 소프트웨어도 설치하지 않습니다. 표준 SSH/SFTP 프로토콜만으로 레거시 WAS(Tomcat/JBoss/WebLogic)를 원격 관리.' }, - { icon:'💬', title:'ChatOps 메신저 통합', - desc:'카카오워크, 네이버웍스, 슬랙 등 익숙한 메신저에서 /deploy, /status, /incident 명령으로 인프라를 즉시 제어.' }, + { icon:'💬', title:'ChatOps + 자연어 명령', + desc:'카카오워크·네이버웍스·슬랙에서 자연어로 인프라 제어. "서버1 헬스체크 해줘", "SR-XXXX 배포해줘" 등 자연어를 자동으로 봇 명령어로 변환.' }, { icon:'📊', title:'통합 ITSM 대시보드', desc:'SR·인시던트·변경관리·SLA·CMDB·예측 유지보수를 단일 플랫폼에서 관리. 7일 추이 차트와 AI 인사이트 실시간 제공.' }, + { icon:'🤖', title:'RPA 봇 자동화', + desc:'소스코드 기반 Validation 학습 → 반복 업무(SR 자동 접수·승인·상태 변경) 자동화. dry_run 검증 후 실제 API 호출. APScheduler 크론 연동.' }, + { icon:'🕷️', title:'웹 스크랩핑 봇', + desc:'URL 스크랩 → DB 저장 → 상태 관리(DRAFT/PUBLISHED/DELETED). 게시 시 메신저 자동 알림. Manager UI에서 삭제·원복·게시 직접 관리.' }, { icon:'🔒', title:'엔터프라이즈 보안', desc:'AES-256-GCM 암호화, MFA/OTP, PAM 특권접근관리, SHA-256 해시체인 불변 감사로그, Zero Trust 지속 인증.' }, { icon:'🏗️', title:'PMS 프로젝트 관리', desc:'WBS·산출물·일간/주간/월간 자동 보고서(Excel·PDF·PPT). 이슈·위험 관리, Gitea 연동, Jenkins CI/CD 파이프라인.' }, + { icon:'🛡️', title:'DR 재해복구 자동화', + desc:'DR 시나리오 관리, Failover 실행, 백업 무결성 검증, 복구 테스트, RTO/RPO 실적 추적. 네트워크 장비(스위치·방화벽) SSH 설정 백업·변경 감지.' }, + { icon:'✅', title:'CSAP 보안 자동 점검', + desc:'행안부 공공기관 보안 체크리스트 100개 항목 자동 점검. 증적 수집·Excel/HTML 보고서 자동 생성. ISMS-P 준수율 대시보드 실시간 제공.' }, { icon:'🌐', title:'공공기관 필수 준수', desc:'행안부 SW 보안약점 자동 점검, KWCAG 2.1 웹접근성, 개인정보보호법 준수 스캔. 19개 공공기관 체크리스트 내장.' }, { icon:'📡', title:'Scouter APM 모니터링', @@ -52,25 +60,59 @@ const EDITIONS = [ /* ── 메신저 봇 명령어 목록 ──────────────────────────────── */ const BOT_COMMANDS = [ - { cmd: '/sr <제목>', desc: 'SR(서비스요청) 즉시 접수', cat: 'SR 관리' }, - { cmd: '/status', desc: '시스템 전체 현황 요약', cat: 'SR 관리' }, - { cmd: '/assign <담당자>', desc: 'SR 담당자 즉시 배정', cat: 'SR 관리' }, - { cmd: '/approve ', desc: 'SR 즉시 승인', cat: 'SR 관리' }, - { cmd: '/sla', desc: 'SLA 위반 현황 목록', cat: 'SR 관리' }, - { cmd: '/incident <제목> [P1~P4]', desc: '인시던트 빠른 등록', cat: '인시던트' }, - { cmd: '/oncall', desc: '현재 당직자 즉시 조회', cat: '인시던트' }, - { cmd: '/rca ', desc: 'AI 자동 RCA 근본원인 분석', cat: '인시던트' }, - { cmd: '/escalate ', desc: '당직자에게 에스컬레이션', cat: '인시던트' }, - { cmd: '!deploy <세션ID>', desc: 'WAS 배포 실행 (SSH)', cat: '배포 제어' }, - { cmd: '/rollback <세션ID>', desc: '긴급 롤백', cat: '배포 제어' }, - { cmd: '!health <서버명>', desc: '서버 헬스체크', cat: '배포 제어' }, - { cmd: '/pms <프로젝트코드>', desc: '프로젝트 진척 현황', cat: 'PMS' }, - { cmd: '/report <코드> weekly', desc: '주간 보고서 메신저 발송', cat: 'PMS' }, - { cmd: '/wbs <코드>', desc: 'WBS 지연 현황', cat: 'PMS' }, - { cmd: '/scouter <서버명>', desc: 'Scouter APM 실시간 메트릭', cat: '모니터링' }, - { cmd: '/scan', desc: '시큐어코딩·보안 자동 점검', cat: '보안' }, - { cmd: '/vuln <서버|IP>', desc: '취약점 스캔', cat: '보안' }, - { cmd: '/notify <메시지>', desc: '운영팀 전체 공지 발송', cat: '공지' }, + /* SR 관리 */ + { cmd: '/sr <제목>', desc: 'SR(서비스요청) 즉시 접수', cat: 'SR 관리' }, + { cmd: '/status', desc: '시스템 전체 현황 요약', cat: 'SR 관리' }, + { cmd: '/assign <담당자>', desc: 'SR 담당자 즉시 배정', cat: 'SR 관리' }, + { cmd: '/approve ', desc: 'SR 또는 자율운영 작업 즉시 승인', cat: 'SR 관리' }, + { cmd: '/reject [사유]', desc: 'SR 반려', cat: 'SR 관리' }, + { cmd: '/bulk ', desc: 'SR 대량 처리 (close/assign/status)', cat: 'SR 관리' }, + { cmd: '/sla', desc: 'SLA 위반 현황 목록', cat: 'SR 관리' }, + { cmd: '/escalate ', desc: '당직자에게 에스컬레이션', cat: 'SR 관리' }, + /* 인시던트 */ + { cmd: '/incident <제목> [P1~P4]', desc: '인시던트 빠른 등록', cat: '인시던트' }, + { cmd: '/oncall', desc: '현재 당직자 즉시 조회', cat: '인시던트' }, + { cmd: '/rca ', desc: 'AI 자동 RCA 근본원인 분석', cat: '인시던트' }, + /* 배포/CI-CD */ + { cmd: '!vibe ', desc: '바이브 코딩 세션 시작', cat: '배포 CI-CD' }, + { cmd: '!build <세션ID>', desc: '빌드 실행', cat: '배포 CI-CD' }, + { cmd: '!deploy <세션ID>', desc: 'WAS 배포 실행 (SSH)', cat: '배포 CI-CD' }, + { cmd: '/rollback <세션ID>', desc: '긴급 롤백', cat: '배포 CI-CD' }, + { cmd: '/cicd [project]', desc: 'Jenkins+Gitea CI/CD 전체 현황', cat: '배포 CI-CD' }, + { cmd: '/jenkins [build|log]', desc: 'Jenkins 빌드 트리거·로그', cat: '배포 CI-CD' }, + { cmd: '/git [log|pr|branch]', desc: 'Gitea 저장소 정보', cat: '배포 CI-CD' }, + { cmd: '/release [버전]', desc: '릴리즈 배포 파이프라인', cat: '배포 CI-CD' }, + /* 인프라 제어 */ + { cmd: '!health <서버명>', desc: '서버 헬스체크', cat: '인프라' }, + { cmd: '!log <서버명>', desc: '서버 로그 분석', cat: '인프라' }, + { cmd: '!sm <서버> <스크립트>', desc: 'SM 원격 스크립트 실행', cat: '인프라' }, + { cmd: '/topology <서버명>', desc: 'CI 의존관계 토폴로지 조회', cat: '인프라' }, + { cmd: '/scouter <서버명>', desc: 'Scouter APM 실시간 메트릭', cat: '인프라' }, + /* PMS 프로젝트 */ + { cmd: '/pms <프로젝트코드>', desc: '프로젝트 진척 현황', cat: 'PMS' }, + { cmd: '/report <코드> [daily|weekly|monthly]', desc: '보고서 발송', cat: 'PMS' }, + { cmd: '/wbs <코드>', desc: 'WBS 지연 현황', cat: 'PMS' }, + { cmd: '/deliverables <코드>', desc: '산출물 제출 현황', cat: 'PMS' }, + { cmd: '/issues <코드>', desc: '미결 이슈 목록', cat: 'PMS' }, + /* 보안 */ + { cmd: '/scan', desc: '시큐어코딩·보안 자동 점검', cat: '보안' }, + { cmd: '/vuln <서버|IP>', desc: '취약점 스캔', cat: '보안' }, + { cmd: '/checklist', desc: '공공기관 보안 이행 현황', cat: '보안' }, + { cmd: '/perf [url]', desc: '성능·부하 테스트', cat: '보안' }, + { cmd: '/autoq', desc: '자율 운영 승인 대기 목록', cat: '자율 운영' }, + /* 스크랩핑 봇 */ + { cmd: '!scrap ', desc: 'URL 즉시 스크랩', cat: '스크랩' }, + { cmd: '!scrap list [n]', desc: '최근 스크랩 결과 목록', cat: '스크랩' }, + { cmd: '!scrap publish ', desc: '스크랩 게시 + 메신저 알림', cat: '스크랩' }, + { cmd: '!scrap del ', desc: '스크랩 삭제', cat: '스크랩' }, + { cmd: '!scrap restore ', desc: '스크랩 원복', cat: '스크랩' }, + /* 디자인 */ + { cmd: '/design capture', desc: 'UI 현재 화면 스크린샷 (Playwright)', cat: '디자인' }, + { cmd: '/design variant <키워드>', desc: 'Variant 디자인 레퍼런스 탐색', cat: '디자인' }, + { cmd: '/design <시스템>', desc: '시스템별 UI 개편 실행', cat: '디자인' }, + /* 공지 */ + { cmd: '/notify <메시지>', desc: '운영팀 전체 공지 발송', cat: '공지' }, + { cmd: '/license', desc: '라이선스 상태 조회', cat: '공지' }, ]; const MESSENGER_PLATFORMS = [ @@ -81,12 +123,14 @@ const MESSENGER_PLATFORMS = [ ]; const TECH_STACK = [ - { category: 'Backend', items: ['Python 3.11 / FastAPI', 'SQLAlchemy Async', 'PostgreSQL / SQLite'] }, - { category: 'AI·LLM', items: ['Ollama (온프레미스)', 'llama3.1:8b / codellama', '외부 API 완전 차단'] }, + { category: 'Backend', items: ['Python 3.11 / FastAPI', 'SQLAlchemy Async', 'PostgreSQL 16 / SQLite'] }, + { category: 'AI·LLM', items: ['Ollama (온프레미스)', 'llama3:8b / codellama', '외부 API 완전 차단'] }, + { category: 'Vector DB', items: ['pgvector 0.6.0 (PostgreSQL 확장)', 'ChromaDB 1.5.9', 'LangChain 1.3.2 RAG'] }, + { category: '자동화 봇', items: ['RPA Engine (소스 기반 Validation 학습)', '스크랩핑 봇 (BeautifulSoup)', '자연어 명령 파서 (Ollama)'] }, { category: 'Infra', items: ['paramiko SSH/SFTP', '에이전트리스', 'AES-256-GCM 암호화'] }, { category: 'Frontend', items: ['React.js / PWA', 'Chart.js 대시보드', 'D3.js 토폴로지'] }, - { category: 'DevOps', items: ['Jenkins CI/CD', 'Gitea 형상관리', 'Docker / K8s'] }, - { category: '모니터링', items: ['Scouter APM', 'Prometheus/Grafana', 'ELK/Splunk SIEM'] }, + { category: 'DevOps', items: ['Jenkins CI/CD', 'Gitea 형상관리', 'APScheduler 크론 스케줄러'] }, + { category: '모니터링', items: ['Scouter APM', 'Prometheus/Grafana', 'DR 자동화·CSAP 점검'] }, ]; export default function GuardiaDetail() { @@ -169,7 +213,7 @@ export default function GuardiaDetail() {
Core Features -

GUARDiA가 제공하는
8가지 핵심 기능

+

GUARDiA가 제공하는
12가지 핵심 기능

{/* 실행 화면 스크린샷 */}