# LogHunter 테스트 가이드

## 1. 사전 요구사항

| 항목 | 버전 | 확인 명령어 |
|------|------|-------------|
| Java | 17 이상 | `java -version` |
| Node.js | 18 이상 | `node -v` |
| npm | 9 이상 | `npm -v` |

---

## 2. 프로젝트 실행

### 2-1. Frontend 빌드

```bash
cd /Users/coziny/devs/osolit-research/workspace/log-hunter/frontend

# 의존성 설치 (최초 1회)
npm install

# 빌드 (결과물이 ../src/main/resources/static 으로 복사됨)
npm run build
```

### 2-2. Backend 실행

```bash
cd /Users/coziny/devs/osolit-research/workspace/log-hunter

# Gradle Wrapper로 실행
./gradlew bootRun
```

### 2-3. 접속

- 실행 시 브라우저가 자동으로 열림
- 수동 접속: http://localhost:8080

---

## 3. 테스트 시나리오

### 3-1. 패턴 등록 (먼저!)

1. **패턴 관리** 메뉴 클릭
2. **+ 패턴 추가** 클릭
3. 샘플 패턴 입력:

| 패턴명 | 정규식 | 심각도 | 컨텍스트 |
|--------|--------|--------|----------|
| Exception | `Exception\|Error` | ERROR | 5 |
| NullPointer | `NullPointerException` | CRITICAL | 5 |
| WARN 로그 | `\[WARN\]` | WARN | 3 |
| Tomcat 에러 | `SEVERE\|FATAL` | CRITICAL | 5 |

4. **테스트** 버튼으로 정규식 검증 가능

### 3-2. 서버 등록

1. **서버 관리** 메뉴 클릭
2. **+ 서버 추가** 클릭
3. 서버 정보 입력:

**비밀번호 인증 예시:**
```
서버명: 운영서버1
호스트: 192.168.1.100
포트: 22
사용자명: username
인증방식: 비밀번호
비밀번호: ********
```

**키파일 인증 예시:**
```
서버명: 개발서버
호스트: 10.0.0.50
포트: 22
사용자명: deploy
인증방식: 키 파일
키 파일 경로: C:\Users\사용자\.ssh\id_rsa
Passphrase: (없으면 비워둠)
```

4. **테스트** 버튼으로 연결 확인

### 3-3. 로그 경로 등록

1. 서버 목록에서 **경로** 버튼 클릭
2. 로그 경로 추가:

| 경로 | 파일 패턴 | 설명 |
|------|-----------|------|
| `/var/log/tomcat/` | `catalina.*.log` | Tomcat 로그 |
| `/var/log/` | `*.log` | 시스템 로그 |
| `/app/logs/` | `application-*.log` | 애플리케이션 로그 |

### 3-4. 분석 실행

1. **대시보드** 메뉴 클릭
2. 개별 서버 **분석 실행** 또는 **전체 분석 실행**
3. 진행상황 확인 (프로그레스 바)
4. 완료 후 **에러 이력**에서 결과 확인

### 3-5. 결과 확인 및 내보내기

1. **에러 이력** 메뉴 클릭
2. 필터로 검색 (서버, 심각도, 기간 등)
3. **상세** 버튼으로 컨텍스트 확인
4. **HTML 내보내기** 또는 **TXT 내보내기**

---

## 4. 단일 JAR 빌드

### 4-1. 전체 빌드 (Frontend + Backend)

```bash
cd /Users/coziny/devs/osolit-research/workspace/log-hunter

# Frontend 빌드
cd frontend && npm run build && cd ..

# JAR 빌드
./gradlew clean bootJar
```

### 4-2. 빌드 결과

```
build/libs/log-hunter-0.0.1-SNAPSHOT.jar
```

### 4-3. JAR 실행

```bash
java -jar build/libs/log-hunter-0.0.1-SNAPSHOT.jar
```

---

## 5. Windows 실행 스크립트

### run.bat 생성

```batch
@echo off
title LogHunter
echo LogHunter 시작 중...
java -jar log-hunter.jar
pause
```

### 배포 폴더 구조

```
LogHunter/
├── log-hunter.jar
├── run.bat
└── data/           <- 자동 생성됨 (SQLite DB)
```

---

## 6. 트러블슈팅

### 포트 충돌 (8080 사용 중)

```bash
# application.yml에서 포트 변경
server:
  port: 9090
```

또는 실행 시 지정:
```bash
java -jar log-hunter.jar --server.port=9090
```

### SFTP 연결 실패

- 호스트/포트 확인
- 방화벽 확인 (22번 포트)
- 사용자명/비밀번호 확인
- 키파일 경로 확인 (Windows: `C:\Users\...`, 절대경로)

### 한글 깨짐

- 로그 파일 인코딩이 UTF-8인지 확인
- 필요시 서버에서 `file -i 파일명`으로 인코딩 확인

### DB 초기화 (데이터 삭제)

```bash
# data 폴더의 DB 파일 삭제
rm -rf data/loghunter.db
```

---

## 7. 개발 모드 (Hot Reload)

### Frontend 개발 서버

```bash
cd frontend
npm run dev
```
- http://localhost:5173 에서 실행
- API 프록시 설정으로 백엔드(8080)와 연동됨

### Backend만 재시작

```bash
./gradlew bootRun
```

---

## 8. API 테스트 (curl 예시)

```bash
# 서버 목록 조회
curl http://localhost:8080/api/servers

# 패턴 목록 조회
curl http://localhost:8080/api/patterns

# 연결 테스트
curl -X POST http://localhost:8080/api/servers/1/test-connection

# 스캔 실행 (동기)
curl -X POST http://localhost:8080/api/scan/execute/1

# 에러 로그 검색
curl "http://localhost:8080/api/error-logs?page=0&size=10"
```

---

## 체크리스트

- [x] Java 17+ 설치 확인
- [x] Node.js 18+ 설치 확인
- [x] Frontend 빌드 완료 (2025-01-06 19:23 확인)
- [x] Backend 실행 성공 (2025-01-06 19:23 확인)
- [x] 브라우저 접속 확인 (localhost:8080)
- [ ] 패턴 등록
- [ ] 서버 등록
- [ ] 연결 테스트 성공
- [ ] 로그 경로 등록
- [ ] 분석 실행
- [ ] 에러 검출 확인
- [ ] 내보내기 테스트
