Files
PolyWeather/tests/test_auto_retrain_probability_calibration.py
T
2026-04-19 04:08:48 +08:00

43 lines
1.1 KiB
Python

from scripts.auto_retrain_probability_calibration import judge_candidate
def _report(sample_count=80, crps=-0.1, mae=0.0, hit=0.0):
return {
"summary": {
"sample_count": sample_count,
"delta": {
"crps": crps,
"mae": mae,
"bucket_hit_rate": hit,
},
}
}
def test_candidate_gate_promotes_when_metrics_pass():
decision = judge_candidate(
_report(),
min_samples=50,
max_delta_crps=0.0,
max_delta_mae=0.05,
min_delta_bucket_hit_rate=-0.05,
)
assert decision["decision"] == "promote"
assert decision["ready_for_promotion"] is True
assert decision["blocking_reasons"] == []
def test_candidate_gate_holds_when_metrics_regress():
decision = judge_candidate(
_report(sample_count=40, crps=0.1, mae=0.2, hit=-0.2),
min_samples=50,
max_delta_crps=0.0,
max_delta_mae=0.05,
min_delta_bucket_hit_rate=-0.05,
)
assert decision["decision"] == "hold"
assert decision["ready_for_promotion"] is False
assert len(decision["blocking_reasons"]) == 4