fix(ai): restore dynamic baseline holt winters fit
This commit is contained in:
@@ -71,7 +71,7 @@ class BaselineState:
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, d: dict[str, Any]) -> "BaselineState":
|
||||
def from_dict(cls, d: dict[str, Any]) -> BaselineState:
|
||||
return cls(
|
||||
metric_name=d["metric_name"],
|
||||
mean=d["mean"],
|
||||
@@ -250,6 +250,7 @@ class DynamicBaselineService:
|
||||
) -> list[MetricDatapoint]:
|
||||
"""從 Prometheus query_range API 抓取歷史資料(1h 步進)。"""
|
||||
import httpx
|
||||
|
||||
from src.core.config import settings
|
||||
|
||||
end_ts = now_taipei().timestamp()
|
||||
@@ -314,7 +315,7 @@ class DynamicBaselineService:
|
||||
seasonal="add" if len(arr) >= seasonal_periods * 2 else None,
|
||||
seasonal_periods=seasonal_periods,
|
||||
initialization_method="estimated",
|
||||
).fit(optimized=True, disp=False)
|
||||
).fit(optimized=True)
|
||||
|
||||
fitted = model.fittedvalues
|
||||
residuals = arr - fitted
|
||||
@@ -447,6 +448,7 @@ class DynamicBaselineService:
|
||||
"""從 PostgreSQL 載入最新一筆基線記錄"""
|
||||
try:
|
||||
from sqlalchemy import select
|
||||
|
||||
from src.db.base import get_session_factory
|
||||
from src.db.models import DynamicBaselineRecord
|
||||
|
||||
|
||||
9
apps/api/tests/test_dynamic_baseline_service.py
Normal file
9
apps/api/tests/test_dynamic_baseline_service.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_holt_winters_fit_does_not_use_removed_disp_argument() -> None:
|
||||
repo_root = Path(__file__).resolve().parents[3]
|
||||
source = (repo_root / "apps/api/src/services/dynamic_baseline_service.py").read_text()
|
||||
|
||||
assert ".fit(optimized=True, disp=False)" not in source
|
||||
assert ".fit(optimized=True)" in source
|
||||
Reference in New Issue
Block a user