Expose DEB quality guidance
This commit is contained in:
@@ -1198,6 +1198,7 @@ def _analyze(
|
||||
deb_bias_adjustment, deb_bias_samples = 0.0, 0
|
||||
deb_intraday_adjustment = 0.0
|
||||
deb_hourly_consensus = None
|
||||
deb_quality = {}
|
||||
if current_forecasts:
|
||||
deb_result = calculate_deb_prediction(city, current_forecasts)
|
||||
if deb_result.get("prediction") is not None:
|
||||
@@ -1207,6 +1208,14 @@ def _analyze(
|
||||
deb_bias_adjustment = deb_result.get("bias_adjustment") or 0.0
|
||||
deb_bias_samples = deb_result.get("bias_samples") or 0
|
||||
deb_weights = deb_result.get("weights_info") or ""
|
||||
deb_quality = {
|
||||
"quality_tier": deb_result.get("quality_tier"),
|
||||
"recommendation": deb_result.get("recommendation"),
|
||||
"recent_hit_rate": deb_result.get("recent_hit_rate"),
|
||||
"recent_samples": deb_result.get("recent_samples"),
|
||||
"recent_hits": deb_result.get("recent_hits"),
|
||||
"recent_mae": deb_result.get("recent_mae"),
|
||||
}
|
||||
deb_hourly_consensus = build_deb_hourly_consensus_path(
|
||||
city=city,
|
||||
hourly_times=mm.get("hourly_times") or [],
|
||||
@@ -1366,6 +1375,7 @@ def _analyze(
|
||||
deb_bias_adjustment = sd.get("deb_bias_adjustment") or 0.0
|
||||
deb_bias_samples = sd.get("deb_bias_samples") or 0
|
||||
deb_weights = sd.get("deb_weights", "")
|
||||
deb_quality = sd.get("deb_quality") or deb_quality
|
||||
if deb_hourly_consensus is None and sd.get("deb_hourly_consensus"):
|
||||
deb_hourly_consensus = sd.get("deb_hourly_consensus")
|
||||
|
||||
@@ -1675,6 +1685,7 @@ def _analyze(
|
||||
d_val, d_winfo = None, ""
|
||||
d_raw_val, d_version = None, None
|
||||
d_bias_adjustment, d_bias_samples = 0.0, 0
|
||||
d_quality = {}
|
||||
d_probs = []
|
||||
d_probs_all = []
|
||||
if day_m:
|
||||
@@ -1688,6 +1699,14 @@ def _analyze(
|
||||
d_bias_adjustment = deb_result.get("bias_adjustment") or 0.0
|
||||
d_bias_samples = deb_result.get("bias_samples") or 0
|
||||
d_winfo = deb_result.get("weights_info") or ""
|
||||
d_quality = {
|
||||
"quality_tier": deb_result.get("quality_tier"),
|
||||
"recommendation": deb_result.get("recommendation"),
|
||||
"recent_hit_rate": deb_result.get("recent_hit_rate"),
|
||||
"recent_samples": deb_result.get("recent_samples"),
|
||||
"recent_hits": deb_result.get("recent_hits"),
|
||||
"recent_mae": deb_result.get("recent_mae"),
|
||||
}
|
||||
|
||||
# Calculate future probability based on model divergence
|
||||
m_vals = [v for v in day_m.values() if v is not None]
|
||||
@@ -1714,6 +1733,7 @@ def _analyze(
|
||||
"weights_info": d_winfo,
|
||||
"bias_adjustment": d_bias_adjustment,
|
||||
"bias_samples": d_bias_samples,
|
||||
**d_quality,
|
||||
},
|
||||
"probabilities": d_probs if i > 0 else probabilities, # Use today's real prob for today
|
||||
"probabilities_all": d_probs_all if i > 0 else probabilities_all,
|
||||
@@ -1880,6 +1900,7 @@ def _analyze(
|
||||
"hourly_consensus": deb_hourly_consensus,
|
||||
"hourly_path": deb_hourly_path,
|
||||
"hourly_correction": (deb_hourly_path or {}).get("correction") if isinstance(deb_hourly_path, dict) else None,
|
||||
**deb_quality,
|
||||
},
|
||||
"deviation_monitor": deviation_monitor,
|
||||
"ensemble": ens_data,
|
||||
@@ -2201,6 +2222,7 @@ def _analyze_summary(city: str, force_refresh: bool = False) -> Dict[str, Any]:
|
||||
deb_version = None
|
||||
deb_bias_adjustment = 0.0
|
||||
deb_bias_samples = 0
|
||||
deb_quality = {}
|
||||
if current_forecasts:
|
||||
deb_result = calculate_deb_prediction(city, current_forecasts)
|
||||
if deb_result.get("prediction") is not None:
|
||||
@@ -2209,6 +2231,14 @@ def _analyze_summary(city: str, force_refresh: bool = False) -> Dict[str, Any]:
|
||||
deb_version = deb_result.get("version")
|
||||
deb_bias_adjustment = deb_result.get("bias_adjustment") or 0.0
|
||||
deb_bias_samples = deb_result.get("bias_samples") or 0
|
||||
deb_quality = {
|
||||
"quality_tier": deb_result.get("quality_tier"),
|
||||
"recommendation": deb_result.get("recommendation"),
|
||||
"recent_hit_rate": deb_result.get("recent_hit_rate"),
|
||||
"recent_samples": deb_result.get("recent_samples"),
|
||||
"recent_hits": deb_result.get("recent_hits"),
|
||||
"recent_mae": deb_result.get("recent_mae"),
|
||||
}
|
||||
if deb_val is None:
|
||||
deb_val = om_today
|
||||
|
||||
@@ -2285,6 +2315,7 @@ def _analyze_summary(city: str, force_refresh: bool = False) -> Dict[str, Any]:
|
||||
"version": deb_version,
|
||||
"bias_adjustment": deb_bias_adjustment,
|
||||
"bias_samples": deb_bias_samples,
|
||||
**deb_quality,
|
||||
},
|
||||
"deviation_monitor": deviation_monitor or {},
|
||||
"updated_at": datetime.now(timezone.utc).isoformat(),
|
||||
|
||||
Reference in New Issue
Block a user