feat: 각 모듈 개별 테스트 실행 가능하도록 수정 및 docker compose 최신 버전 형식 적용
This commit is contained in:
229
TEST_MODULES.md
Normal file
229
TEST_MODULES.md
Normal file
@ -0,0 +1,229 @@
|
||||
# 모듈 테스트 실행 빠른 가이드
|
||||
|
||||
프로젝트의 모든 모듈을 개별적으로 테스트 실행할 수 있습니다.
|
||||
|
||||
## 빠른 시작
|
||||
|
||||
### 1. 환경 설정
|
||||
```powershell
|
||||
cd c:\DEV\python\fgtools
|
||||
$env:PYTHONPATH='c:\DEV\python\fgtools'
|
||||
.\venv\Scripts\Activate.ps1
|
||||
```
|
||||
|
||||
### 2. 모든 모듈 테스트 실행 스크립트
|
||||
|
||||
```powershell
|
||||
# 스크립트 저장: test_all_modules.ps1
|
||||
$modules = @(
|
||||
"services/weather/asos.py",
|
||||
"services/weather/forecast.py",
|
||||
"services/weather/precipitation.py",
|
||||
"services/analytics/air_quality.py",
|
||||
"services/analytics/ga4.py",
|
||||
"services/analytics/visitor_forecast.py",
|
||||
"services/notification/mattermost.py",
|
||||
"services/notification/notion.py",
|
||||
"apps/dashboard/app.py",
|
||||
"apps/weather_api/app.py",
|
||||
"apps/webhook/app.py"
|
||||
)
|
||||
|
||||
$env:PYTHONPATH='c:\DEV\python\fgtools'
|
||||
$failed = @()
|
||||
|
||||
foreach ($module in $modules) {
|
||||
Write-Host "`n========================================" -ForegroundColor Cyan
|
||||
Write-Host "테스트: $module" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
|
||||
$output = & python $module 2>&1
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "✓ 성공" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "✗ 실패" -ForegroundColor Red
|
||||
$failed += $module
|
||||
}
|
||||
Write-Host $output
|
||||
}
|
||||
|
||||
Write-Host "`n========================================" -ForegroundColor Cyan
|
||||
Write-Host "테스트 완료 요약" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
|
||||
if ($failed.Count -eq 0) {
|
||||
Write-Host "모든 모듈 테스트 성공! ✓" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "실패한 모듈:" -ForegroundColor Red
|
||||
$failed | ForEach-Object { Write-Host " - $_" -ForegroundColor Red }
|
||||
}
|
||||
```
|
||||
|
||||
## 개별 모듈 테스트
|
||||
|
||||
### Weather (기상청) 서비스
|
||||
|
||||
#### ASOS 모듈
|
||||
```powershell
|
||||
python services/weather/asos.py
|
||||
# 기능: 종관기상 데이터 조회, DB 저장
|
||||
```
|
||||
|
||||
#### Forecast 모듈
|
||||
```powershell
|
||||
python services/weather/forecast.py
|
||||
# 기능: 초단기/단기/중기 예보 조회
|
||||
```
|
||||
|
||||
#### Precipitation 모듈
|
||||
```powershell
|
||||
python services/weather/precipitation.py
|
||||
# 기능: 강수량 데이터 조회, HTML 생성
|
||||
```
|
||||
|
||||
### Analytics (분석) 서비스
|
||||
|
||||
#### Air Quality 모듈
|
||||
```powershell
|
||||
python services/analytics/air_quality.py
|
||||
# 기능: 대기질 데이터 수집 (PM2.5, PM10 등)
|
||||
```
|
||||
|
||||
#### GA4 모듈
|
||||
```powershell
|
||||
python services/analytics/ga4.py
|
||||
# 기능: GA4 분석 데이터 수집
|
||||
```
|
||||
|
||||
#### Visitor Forecast 모듈
|
||||
```powershell
|
||||
python services/analytics/visitor_forecast.py
|
||||
# 기능: 방문객 수 예측
|
||||
```
|
||||
|
||||
### Notification (알림) 서비스
|
||||
|
||||
#### Mattermost 모듈
|
||||
```powershell
|
||||
python services/notification/mattermost.py
|
||||
# 기능: Mattermost 메시지 발송
|
||||
```
|
||||
|
||||
#### Notion 모듈
|
||||
```powershell
|
||||
python services/notification/notion.py
|
||||
# 기능: Notion 웹훅 처리
|
||||
```
|
||||
|
||||
### Flask 애플리케이션
|
||||
|
||||
#### Dashboard
|
||||
```powershell
|
||||
python apps/dashboard/app.py
|
||||
# 포트: 5000
|
||||
# URL: http://localhost:5000/api/dashboard
|
||||
```
|
||||
|
||||
#### Weather API
|
||||
```powershell
|
||||
python apps/weather_api/app.py
|
||||
# 포트: 5001
|
||||
# URL: http://localhost:5001/api/weather
|
||||
```
|
||||
|
||||
#### Webhook
|
||||
```powershell
|
||||
python apps/webhook/app.py
|
||||
# 포트: 5002
|
||||
# URL: http://localhost:5002/webhook
|
||||
```
|
||||
|
||||
## 통합 애플리케이션 실행
|
||||
|
||||
### Docker Compose
|
||||
```powershell
|
||||
docker compose up -d
|
||||
# 모든 애플리케이션 실행
|
||||
```
|
||||
|
||||
### 개별 터미널 실행
|
||||
```powershell
|
||||
# 터미널 1
|
||||
python apps/dashboard/app.py
|
||||
|
||||
# 터미널 2
|
||||
python apps/weather_api/app.py
|
||||
|
||||
# 터미널 3
|
||||
python apps/webhook/app.py
|
||||
```
|
||||
|
||||
## 구조도
|
||||
|
||||
```
|
||||
fgtools/
|
||||
├── services/
|
||||
│ ├── weather/
|
||||
│ │ ├── asos.py ✓
|
||||
│ │ ├── forecast.py ✓
|
||||
│ │ └── precipitation.py ✓
|
||||
│ ├── analytics/
|
||||
│ │ ├── air_quality.py ✓
|
||||
│ │ ├── ga4.py ✓
|
||||
│ │ └── visitor_forecast.py ✓
|
||||
│ └── notification/
|
||||
│ ├── mattermost.py ✓
|
||||
│ └── notion.py ✓
|
||||
├── apps/
|
||||
│ ├── dashboard/
|
||||
│ │ └── app.py ✓
|
||||
│ ├── weather_api/
|
||||
│ │ └── app.py ✓
|
||||
│ └── webhook/
|
||||
│ └── app.py ✓
|
||||
└── core/
|
||||
├── config.py
|
||||
├── database.py
|
||||
├── logging_utils.py
|
||||
└── ...
|
||||
|
||||
✓ = 개별 실행 가능
|
||||
```
|
||||
|
||||
## 로깅 및 디버깅
|
||||
|
||||
### 디버그 레벨 로깅
|
||||
```powershell
|
||||
$env:LOG_LEVEL='DEBUG'
|
||||
python services/weather/asos.py
|
||||
```
|
||||
|
||||
### 로그 파일 확인
|
||||
```powershell
|
||||
Get-Content logs/app.log -Tail 50
|
||||
```
|
||||
|
||||
## 트러블슈팅
|
||||
|
||||
### Python 경로 오류
|
||||
```powershell
|
||||
$env:PYTHONPATH='c:\DEV\python\fgtools'
|
||||
```
|
||||
|
||||
### 모듈 import 오류
|
||||
```powershell
|
||||
python -c "import sys; print(sys.path)"
|
||||
```
|
||||
|
||||
### 데이터베이스 연결 오류
|
||||
```powershell
|
||||
# .env 파일 확인
|
||||
ls .env
|
||||
# 설정 확인
|
||||
python -c "from core.config import get_config; c = get_config(); print(c.database)"
|
||||
```
|
||||
|
||||
## 참고 문서
|
||||
- [상세 모듈 가이드](MODULES.md)
|
||||
- [프로젝트 README](README.md)
|
||||
- [설정 관리](core/config.py)
|
||||
Reference in New Issue
Block a user