휴일정보를 특일정보 API를 활용해 받아오도록 수정,

This commit is contained in:
2025-07-21 17:38:45 +09:00
parent 1e0ddf6280
commit d831f62426

View File

@ -1,4 +1,7 @@
# weekly_visitor_forecast_prophet.py
# 퍼스트가든 방문객 예측 프로그램
# prophet를 활용한 예측처리
import os, sys
import re, requests
from sqlalchemy import select, and_, func
@ -13,8 +16,8 @@ from datetime import date, datetime, timedelta
# 경로 설정: 프로젝트 루트 conf 폴더 내 db 및 스키마 모듈 임포트
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from conf import db, db_schema
from weather_forecast import get_weekly_precip # 변경된 날씨 예보 함수 임포트
from lib.holiday import is_korean_holiday # holiday.py의 DB 기반 휴일 판단 함수
from lib.weather_forecast import get_weekly_precip
from lib.holiday import is_korean_holiday
from lib.common import load_config
# DB 테이블 객체 초기화
@ -263,6 +266,31 @@ def train_and_predict_rf(df, forecast_days=7):
future_df['pos_qty'] = model.predict(future_df[['weekday', 'minTa', 'maxTa', 'sumRn', 'avgRhm', 'pm25']])
return future_df
# weekly_visitor_forecast_prophet.py 하단에 추가
def get_forecast_dict(forecast_days=3) -> dict:
"""
오늘 기준 forecast_days일 만큼 방문객 예측 데이터를 계산해
{'2025-07-11': 1020, '2025-07-12': 1103, ...} 형태로 반환
"""
today = datetime.today().date()
start_date = today - timedelta(days=365)
end_date = today
with Session(db.engine) as session:
df = load_data(session, start_date, end_date)
prophet_df = prepare_prophet_df(df)
forecast = train_and_predict_prophet(prophet_df, forecast_days)
result = (
forecast[forecast['ds'].dt.date >= today]
[['ds', 'yhat']]
.copy()
)
result['ds'] = result['ds'].dt.strftime('%Y-%m-%d')
return dict(result.values)
def main():
today = datetime.today().date()
start_date = today - timedelta(days=365)