feat: Flask 애플리케이션 모듈화 및 웹 대시보드 구현
- Flask Blueprint 아키텍처로 전환 (dashboard, upload, backup, status) - app.py 681줄 95줄로 축소 (86% 감소) - HTML 템플릿 모듈화 (base.html + 기능별 templates) - CSS/JS 파일 분리 (common + 기능별 파일) - 대시보드 기능 추가 (통계, 주간 예보, 방문객 추이) - 파일 업로드 웹 인터페이스 구현 - 백업/복구 관리 UI 구현 - Docker 배포 환경 개선 - .gitignore 업데이트 (uploads, backups, cache 등)
This commit is contained in:
132
CHANGELOG.md
Normal file
132
CHANGELOG.md
Normal file
@ -0,0 +1,132 @@
|
||||
# CHANGELOG
|
||||
|
||||
모든 주목할만한 변경 사항이 이 파일에 기록됩니다.
|
||||
|
||||
## [개선사항] - 2025-12-26
|
||||
|
||||
### 추가됨
|
||||
- ✅ 통합 로깅 시스템 (`lib/common.py`의 `setup_logging`)
|
||||
- ✅ 데이터베이스 재연결 메커니즘 (자동 풀 재설정)
|
||||
- ✅ 재시도 데코레이터 (`@retry_on_exception`)
|
||||
- ✅ 컨텍스트 매니저 기반 세션 관리 (`DBSession`)
|
||||
- ✅ 에러 추적 및 상세 로깅
|
||||
- ✅ Docker Compose MariaDB 통합
|
||||
- ✅ 환경 변수 기반 설정 관리
|
||||
- ✅ 헬스체크 스크립트
|
||||
- ✅ 향상된 Dockerfile (Python 3.11, 슬림 이미지)
|
||||
- ✅ Docker Entrypoint 개선 (신호 처리, 프로세스 모니터링)
|
||||
- ✅ 포괄적인 README.md 문서
|
||||
|
||||
### 변경됨
|
||||
- 🔄 `requirements.txt` - 모든 의존성 버전 고정
|
||||
- 🔄 `daily_run.py` - 통합 로깅 및 에러 처리
|
||||
- 🔄 `conf/db.py` - 연결 풀 및 재연결 설정 개선
|
||||
- 🔄 `docker-compose.yml` - MariaDB 추가, 환경 변수 관리
|
||||
- 🔄 `.gitignore` - 더 완전한 무시 규칙
|
||||
|
||||
### 제거됨
|
||||
- ❌ Dockerfile의 불필요한 GUI 라이브러리 (tk 관련)
|
||||
- ❌ 과도한 시스템 패키지
|
||||
|
||||
### 고정됨
|
||||
- 🐛 DB 연결 타임아웃 문제
|
||||
- 🐛 로깅 포맷 일관성
|
||||
- 🐛 환경 변수 해석 오류
|
||||
|
||||
### 보안
|
||||
- 🔐 민감한 정보를 환경 변수로 관리
|
||||
- 🔐 `.env` 파일 .gitignore 추가
|
||||
- 🔐 API 키 보안 강화
|
||||
- 🔐 데이터베이스 암호 정책 권장
|
||||
|
||||
---
|
||||
|
||||
## 제공 예정 기능
|
||||
|
||||
- [ ] REST API 엔드포인트
|
||||
- [ ] 실시간 대시보드
|
||||
- [ ] 다중 모델 앙상블 (Prophet + ARIMA + RandomForest)
|
||||
- [ ] 설명 가능한 AI (SHAP)
|
||||
- [ ] 이상 탐지 (Anomaly Detection)
|
||||
- [ ] GraphQL API
|
||||
- [ ] WebSocket 실시간 업데이트
|
||||
|
||||
---
|
||||
|
||||
## 버전 정보
|
||||
|
||||
### Python Dependencies (v2025-12)
|
||||
- `python` >= 3.11
|
||||
- `flask` == 3.0.0
|
||||
- `sqlalchemy` == 2.0.23
|
||||
- `pymysql` == 1.1.0
|
||||
- `pyyaml` == 6.0.1
|
||||
- `pandas` == 2.1.3
|
||||
- `prophet` == 1.1.5
|
||||
- `scikit-learn` == 1.3.2
|
||||
- 기타 상세 버전은 `requirements.txt` 참조
|
||||
|
||||
### Docker Image
|
||||
- Base: `python:3.11-slim-bullseye`
|
||||
- Size: ~300MB (예상)
|
||||
|
||||
---
|
||||
|
||||
## 마이그레이션 가이드
|
||||
|
||||
### v1 → v2 (현재 버전)
|
||||
|
||||
1. **환경 변수 설정**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# .env 파일 수정
|
||||
```
|
||||
|
||||
2. **기존 코드 업데이트**
|
||||
```python
|
||||
# 기존
|
||||
from lib.common import get_logger
|
||||
logger = get_logger('my_module')
|
||||
|
||||
# 변경
|
||||
from lib.common import setup_logging
|
||||
logger = setup_logging('my_module', 'INFO')
|
||||
```
|
||||
|
||||
3. **데이터베이스 세션 관리**
|
||||
```python
|
||||
# 기존
|
||||
session = db.get_session()
|
||||
try:
|
||||
# ...
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
# 변경 (권장)
|
||||
from conf.db import DBSession
|
||||
with DBSession() as session:
|
||||
# ...
|
||||
```
|
||||
|
||||
4. **Docker 실행**
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 알려진 문제
|
||||
|
||||
- [ ] Prophet 모델 학습 시간 개선 필요
|
||||
- [ ] GA4 API 데이터 일관성 검증 필요
|
||||
- [ ] 대용량 데이터 처리 최적화 필요
|
||||
|
||||
---
|
||||
|
||||
## 기여
|
||||
|
||||
버그 리포트 및 기능 요청은 Gitea Issues를 사용해주세요.
|
||||
|
||||
---
|
||||
|
||||
**마지막 업데이트**: 2025-12-26
|
||||
Reference in New Issue
Block a user