diff --git a/tests/test_city_payloads.py b/tests/test_city_payloads.py new file mode 100644 index 00000000..772459af --- /dev/null +++ b/tests/test_city_payloads.py @@ -0,0 +1,28 @@ +from web.services.city_payloads import build_city_summary_payload + + +def test_city_summary_payload_preserves_deb_metadata(): + payload = build_city_summary_payload( + { + "name": "shanghai", + "display_name": "Shanghai", + "temp_symbol": "°C", + "current": {}, + "risk": {}, + "deb": { + "prediction": 29.7, + "raw_prediction": 27.6, + "version": "deb_v1_recent_bias_corrected", + "bias_adjustment": 1.3, + "bias_samples": 18, + }, + } + ) + + assert payload["deb"] == { + "prediction": 29.7, + "raw_prediction": 27.6, + "version": "deb_v1_recent_bias_corrected", + "bias_adjustment": 1.3, + "bias_samples": 18, + } diff --git a/web/services/city_payloads.py b/web/services/city_payloads.py index f2018590..081123ef 100644 --- a/web/services/city_payloads.py +++ b/web/services/city_payloads.py @@ -11,6 +11,7 @@ from web.core import _is_excluded_model_name TURKISH_MGM_CITIES = {"ankara", "istanbul"} def build_city_summary_payload(data: Dict[str, Any]) -> Dict[str, Any]: + deb = data.get("deb") if isinstance(data.get("deb"), dict) else {} return { "name": data.get("name"), "display_name": data.get("display_name"), @@ -26,7 +27,7 @@ def build_city_summary_payload(data: Dict[str, Any]) -> Dict[str, Any]: "settlement_source_label" ), }, - "deb": {"prediction": data.get("deb", {}).get("prediction")}, + "deb": dict(deb) if deb else {"prediction": None}, "deviation_monitor": data.get("deviation_monitor") or {}, "risk": { "level": data.get("risk", {}).get("level"),