- Flask Blueprint 아키텍처로 전환 (dashboard, upload, backup, status) - app.py 681줄 95줄로 축소 (86% 감소) - HTML 템플릿 모듈화 (base.html + 기능별 templates) - CSS/JS 파일 분리 (common + 기능별 파일) - 대시보드 기능 추가 (통계, 주간 예보, 방문객 추이) - 파일 업로드 웹 인터페이스 구현 - 백업/복구 관리 UI 구현 - Docker 배포 환경 개선 - .gitignore 업데이트 (uploads, backups, cache 등)
3.0 KiB
3.0 KiB
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.11flask== 3.0.0sqlalchemy== 2.0.23pymysql== 1.1.0pyyaml== 6.0.1pandas== 2.1.3prophet== 1.1.5scikit-learn== 1.3.2- 기타 상세 버전은
requirements.txt참조
Docker Image
- Base:
python:3.11-slim-bullseye - Size: ~300MB (예상)
마이그레이션 가이드
v1 → v2 (현재 버전)
-
환경 변수 설정
cp .env.example .env # .env 파일 수정 -
기존 코드 업데이트
# 기존 from lib.common import get_logger logger = get_logger('my_module') # 변경 from lib.common import setup_logging logger = setup_logging('my_module', 'INFO') -
데이터베이스 세션 관리
# 기존 session = db.get_session() try: # ... finally: session.close() # 변경 (권장) from conf.db import DBSession with DBSession() as session: # ... -
Docker 실행
docker-compose up -d
알려진 문제
- Prophet 모델 학습 시간 개선 필요
- GA4 API 데이터 일관성 검증 필요
- 대용량 데이터 처리 최적화 필요
기여
버그 리포트 및 기능 요청은 Gitea Issues를 사용해주세요.
마지막 업데이트: 2025-12-26