Commit Graph

13 Commits

Author SHA1 Message Date
DESKTOP-TKLFCPR\ython
4b7904d14a feat(setup): DB 선택/pgvector/Qdrant/Gitea 통합
[DB 선택 대화형 프롬프트]
- setup/lib/db_select.sh: 설치 시 SQLite/PostgreSQL/PostgreSQL+pgvector 선택
- DB_TYPE 환경변수로 무인 설치 지원
- pgvector 자동 빌드/설치 (소스 빌드 폴백 포함)
- .env DATABASE_URL 자동 기록

[Vector DB]
- docker-compose.yml: postgres를 pgvector/pgvector:pg15 이미지로 교체
- Qdrant: docker profile=vector 로 선택적 활성화
- docs/vector_db_guide.md: pgvector/Qdrant 사용법 + 시나리오

[Gitea 온프레미스 Git 서버]
- docker-compose.yml: gitea/gitea:1.21-rootless 서비스 추가
- setup/lib/gitea_setup.sh: 공통 설치/초기화 함수
- setup/gitea_init.sh: 독립 실행형 초기화 스크립트
  - 관리자 계정 생성
  - guardia 조직 + GUARDiA 저장소 생성
  - main 브랜치 보호 (PR + 리뷰 1명 필수)
  - develop 브랜치 생성
  - 개발자 계정 (engineer1/2, pm1, admin) + feature/이름/init 브랜치 자동 생성
  - 현재 소스 자동 push

[브랜치 전략]
  main         : 보호 브랜치, PR 필수, 리뷰 1명 필수
  develop      : 통합 브랜치, force-push 금지
  feature/이름/기능: 개인 개발 브랜치

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:32:47 +09:00
DESKTOP-TKLFCPR\ython
d3e13d2fc2 fix(setup): setup_windows.ps1 PowerShell 5.1 완전 호환 재작성
- 한글 제거 -> ASCII 전용 (PS5.1은 BOM없는 UTF-8을 CP949로 읽어 파싱 오류 발생)
- ?. null-conditional 연산자 제거 -> 전통적 if/else로 교체
- 줄 연속 백틱 제거 -> 단일 라인으로 변경
- psql 단일인용부호 이슈 -> [char]39 + tmpSql 파일 방식으로 우회
- Path 환경변수 연결 -> + 연산자 방식으로 변경
- 구문 오류 0개 확인 완료 (ParseFile 검증)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:26:34 +09:00
DESKTOP-TKLFCPR\ython
d196886752 feat(setup): 폐쇄망 완전 오프라인 설치 지원
[download_packages.sh — 인터넷 서버에서 실행]
- OS별 패키지 다운로드 (ubuntu .deb / centos .rpm)
- pip wheel 전체 다운로드 (-r requirements.txt)
- Tomcat 9 tar.gz, Ollama 바이너리, Chart.js 다운로드
- Ollama 모델(llama3.1:8b, codellama:7b) 압축 패키지
- Docker 이미지 tar (docker_package.sh 연동)
- setup/offline/ 에 계층적으로 저장, README.md 자동 생성

[설치 스크립트 오프라인 지원 강화]
- setup_ubuntu.sh: OFFLINE_PKG_DIR 환경변수 지원 (.deb 로컬 설치)
- setup_centos.sh: OFFLINE_PKG_DIR 환경변수 지원 (.rpm 로컬 설치)
- 기존 TOMCAT_MIRROR=file://..., OLLAMA_INSTALL=offline 유지

[Chart.js 오프라인 폴백]
- index.html: CDN 실패 시 /static/chart.umd.min.js 로컬 폴백
- db_init.py: 오프라인 패키지에서 chart.umd.min.js 자동 복사

폐쇄망 설치 절차:
  인터넷 서버: bash setup/download_packages.sh all
  USB 복사:    tar -czf offline.tar.gz setup/offline/
  폐쇄망 설치: OFFLINE_PKG_DIR=./offline/ubuntu bash setup/setup_ubuntu.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:14:05 +09:00
DESKTOP-TKLFCPR\ython
eea643ce40 feat(docker): Docker 컨테이너 환경 구성
[파일 목록]
- Dockerfile: GUARDiA ITSM Python 3.11-slim 이미지
  - 비루트(guardia) 계정 실행
  - 헬스체크 내장
- docker-compose.yml: 개발/테스트 풀스택
  - guardia-itsm, nginx, postgres:15, redis:7, ollama/ollama, tomcat:9
  - Ollama 모델은 볼륨 마운트 (이미지 외부)
- docker-compose.prod.yml: 운영 환경 오버라이드
  - 외부 포트 차단, 호스트 경로 마운트
- docker-compose.gpu.yml: NVIDIA GPU 오버라이드
- docker-start.sh: dev|prod|gpu 모드 빠른 시작
- .dockerignore: 보안 파일(.env, *.db) 제외
- docker/nginx/guardia.conf: 리버스 프록시 설정
- docker/tomcat/tomcat-users.xml: opsagent 계정 설정

[폐쇄망 패키지]
- setup/docker_package.sh: 인터넷 서버에서 모든 이미지를 tar.gz로 패키징
- setup/docker_load.sh: 폐쇄망에서 tar.gz 로드 + 즉시 시작 옵션

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:08:52 +09:00
DESKTOP-TKLFCPR\ython
a899dc208a feat(setup): Ollama + 보안·운영 도구 추가 (전체 4개 OS)
[Ollama — 온프레미스 sLLM 서버]
- setup_ubuntu/centos/rhel/windows: Ollama 설치 단계 추가
- 환경변수 OLLAMA_INSTALL=online|offline|skip 지원 (망분리 환경)
- 환경변수 OLLAMA_MODELS 으로 초기 모델 설정 (기본: llama3.1:8b)
- 오프라인: OLLAMA_BIN_PATH로 바이너리 직접 지정
- SELinux 포트 허용 (RHEL), 방화벽 내부 전용 차단 (8080/11434)

[보안·운영 도구]
- Fail2ban: SSH 무차별 대입 방지 (5회 실패 시 1시간 차단)
- Chrony/NTP: 감사 로그 타임스탬프 정합성 확보
- JDK 8/11: 레거시 WAS(Tomcat 7/8) 지원을 위한 다중 JDK
- Logrotate: catalina.out 14일, *.log 8주 보관

[--test 검증 강화]
- Ollama 서비스 + API + 모델 존재 여부 검사
- Fail2ban/Chrony 실행 상태 검사

[단계 수 업데이트]
- Ubuntu: 10→13단계, CentOS: 10→13단계, RHEL: 11→13단계, Windows: 10단계

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:57:02 +09:00
DESKTOP-TKLFCPR\ython
e0fc925df9 feat(setup): OpenJDK 17 + Tomcat 9 설치 추가 (전체 4개 OS + 대상서버)
- setup_ubuntu.sh: OpenJDK 17 + Tomcat 9 단계 추가 (10단계로 확장)
- setup_centos.sh: OpenJDK 17 + Tomcat 9 단계 추가 (10단계)
- setup_rhel.sh: OpenJDK 17 + Tomcat 9 + SELinux 포트 허용 (11단계)
- setup_windows.ps1: openjdk choco 설치 + Tomcat 9 NSSM 서비스 (10단계)
- setup_target_server.sh: 신규 — 관리 대상 WAS 서버 표준 구성
  (OpenJDK 17 + Tomcat 9 + opsagent OS/Tomcat 계정 + SSH 보안 + GUARDiA 연결정보 출력)
- --test 검증: Java/Tomcat 항목 추가
- 공통: AJP 비활성화, shutdown 포트 -1 보안설정, opsagent Manager 계정 자동 추가
- 공통: TOMCAT_MIRROR 환경변수로 오프라인/내부망 설치 지원

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:51:36 +09:00
DESKTOP-TKLFCPR\ython
09ea775a18 fix(setup): 설치 스크립트 3가지 오류 예방 수정 + workspace 자동분석 워크플로우 추가
[설치 스크립트 수정사항]
- PYTHONIOENCODING=utf-8 systemd/NSSM 서비스 환경변수 추가 (Windows cp949 오류 예방)
- db_init.py 헬퍼 추가: 스키마 불일치 자동 감지 → 백업 → 재초기화
- 포트 8001 충돌 감지 및 기존 프로세스 자동 종료 로직 추가
- --test 검증 항목 강화: HTTP 응답 + 로그인 API + UTF-8 인코딩 포함
- setup_ubuntu/centos/rhel: PYTHONUNBUFFERED=1 추가

[workspace 자동분석 워크플로우]
- workspace/ 디렉토리 생성 (소스코드 투입 위치)
- .claude/skills/workspace-analyzer/SKILL.md 스킬 생성
  Phase 0~6: 탐색→스택탐지→심층분석→리포트→개발환경가이드→하네스생성→CLAUDE.md
- CLAUDE.md에 workspace 워크플로우 안내 등록

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:40:20 +09:00
DESKTOP-TKLFCPR\ython
77a0bfb8c8 fix(itsm): 설치 테스트 버그 3건 수정
- tasks.py: 빈 sr_ids 목록도 HTTP 400 반환 (이전: 200)
- messenger.py: /sr 봇명령 _cmd_create_sr에서 db 파라미터 제거 (BackgroundTask 호환)
- main.py: Windows cp949 인코딩 오류 제거 (em dash → ASCII 하이픈)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:34:02 +09:00
DESKTOP-TKLFCPR\ython
e228faabf5 feat(itsm): G-1~G-12 확장 기능 + 하네스/봇/설치스크립트 구현
G-1: 메신저 Webhook Relay + _send_to_room 실제 httpx 호출 구현
G-2: POST /api/tasks/bulk SR 대량작업 엔드포인트 (최대 100건)
G-3: 라이선스 만료 알림 스케줄러 (매일 09:00 KST)
G-4: 체험판 upgrade_banner 필드 + license.py 배너 로직
G-5: core/auto_rca.py + incidents/problem auto-rca 엔드포인트
G-6: core/deploy_impact.py + vibe impact-analysis 엔드포인트
G-7: core/ticket_classifier.py + SR 생성 시 AI 분류 + ai-suggestion API
G-8: VulnPatchRecord 모델 + vuln_scan 패치추적 4개 엔드포인트
G-9: core/jira_sync.py + gateway Jira/Confluence 연동 엔드포인트
G-10: core/push_notify.py + routers/push.py + PushSubscription 모델
G-11: approvals 다중승인 (위임/서명/기한초과/마감연장)
G-12: alembic.ini + migrations/ + cicd/migrate_to_postgres.sh

하네스: guardia-orchestrator 확장기능 Phase 반영
봇명령어: /sr /status /license /bulk 슬래시 명령어 추가
설치스크립트: setup/ (Ubuntu, CentOS, RHEL, Windows) --test 옵션 포함

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:18:52 +09:00
DESKTOP-TKLFCPR\ython
79061ee89c feat(itsm): Jira-like ITSM 시스템 구현
- FastAPI + SQLAlchemy(aiosqlite) 기반 SR 상태 머신
  (RECEIVED → PARSED → PENDING_APPROVAL → APPROVED → IN_PROGRESS
   → PENDING_PM_VALIDATION → COMPLETED / FAILED_ROLLBACK)
- PM 승인 워크플로우 (ApprovalFlow 테이블)
- SHA-256 해시 체인 감사 로그 (위변조 방지)
- AES-256-GCM 서버 자격증명 암호화 (IP/PW API 미노출)
- CMDB: 기관(MOF/MOIS/MSS) + 서버 정보 관리
- 더미 데이터 자동 시딩 (6개 SR, 3개 기관, 6개 서버)
- Dark-theme SPA: 대시보드 / 칸반 보드 / SR 목록 / 감사 로그 / CMDB

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 19:31:09 +09:00
DESKTOP-TKLFCPR\ython
a3b3aaf29e feat(chatbot): AI 챗봇 채널 추가
- core/chatbot.py: 세션 기반 대화 엔진 (컨텍스트 기억, Ollama sLLM 연동 + 폴백)
- #AI챗봇 전용 채널: @bot 없이 자연어 자유 대화
- 타이핑 인디케이터 (봇 응답 생성 중 애니메이션)
- 인텐트 분류: 재기동/배포/로그/DB/SSL/디스크/크론/보안
- Ollama(sLLM) 우선, 미설치 시 지식베이스 자동 폴백
- 대화 초기화 명령 지원

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 19:13:54 +09:00
DESKTOP-TKLFCPR\ython
85e4901541 feat(messenger): Slack형 실시간 채팅 메신저 구현
- FastAPI + WebSocket 백엔드 (ws_relay, webhook, messages 라우터)
- GUARDiA-Bot: @bot 명령 응답 + 선제적 맥락 분석 (DB 지연, 디스크, 장애 감지)
- 승인 워크플로우: 재기동/배포 SR → 승인/반려 인터랙티브 버튼
- 다크 테마 Slack형 프론트엔드 (5개 채널, 실시간 메시지)
- 채널: 일반/배포/운영/PM관리/알림

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 19:04:03 +09:00
DESKTOP-TKLFCPR\ython
45f96176a6 Initial commit: GUARDiA project setup
- CLAUDE.md: project context and architecture spec
- docs/: system specs, DB schema, messenger integration, deployment engine
- skills/: guardia-deploy, guardia-agent, guardia-messenger
- .claude/settings.json: project-level permissions
- .gitignore: Python/FastAPI project

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 18:50:19 +09:00