Add locale controls and distribution previews to scan terminal

This commit is contained in:
2569718930@qq.com
2026-04-24 00:34:09 +08:00
parent 3f7d3ddf34
commit 79b58a8b98
6 changed files with 250 additions and 70 deletions
+40 -1
View File
@@ -2623,7 +2623,6 @@ class PolymarketReadOnlyLayer:
) -> Dict[str, Any]:
filters = self._normalize_scan_filters(scan_filters)
window_meta = self._build_window_meta(target_date, scan_context)
rows: List[Dict[str, Any]] = []
related_markets = self._collect_related_temperature_markets(
city_key=city_key,
target_date=target_date,
@@ -2772,6 +2771,44 @@ class PolymarketReadOnlyLayer:
"score": distribution_bias_score,
"valid_markets": len(bias_inputs),
}
distribution_preview: List[Dict[str, Any]] = []
for entry in market_entries:
label = str(entry.get("target_label") or "").strip()
if not label:
continue
preview_item = {
"label": label,
"value": _safe_float(entry.get("bucket_temp")),
"unit": (
entry.get("bucket_range")[2]
if isinstance(entry.get("bucket_range"), tuple)
and len(entry.get("bucket_range")) >= 3
else ("F" if self._is_fahrenheit_symbol(temp_symbol) else "C")
),
"model_probability": _clamp_probability(
_safe_float(entry.get("model_event_probability"))
),
"market_probability": _clamp_probability(
_safe_float(entry.get("market_event_probability"))
),
"highlighted": False,
}
distribution_preview.append(preview_item)
distribution_preview.sort(
key=lambda item: (
_safe_float(item.get("value"))
if _safe_float(item.get("value")) is not None
else float("inf"),
str(item.get("label") or ""),
)
)
if distribution_preview:
highlighted_index = max(
range(len(distribution_preview)),
key=lambda index: _safe_float(distribution_preview[index].get("model_probability")) or 0.0,
)
distribution_preview[highlighted_index]["highlighted"] = True
current_reference_raw = _safe_float(
(scan_context or {}).get("current_max_so_far")
@@ -2936,6 +2973,7 @@ class PolymarketReadOnlyLayer:
"distribution_bias_direction": distribution_bias_direction,
"distribution_bias_score": distribution_bias_score,
"distribution_bias_available": distribution_bias["available"],
"distribution_preview": distribution_preview[:6],
"current_reference": current_reference,
"gap_to_target": gap_to_target,
"touch_distance": abs(gap_to_target) if gap_to_target is not None else None,
@@ -3073,5 +3111,6 @@ class PolymarketReadOnlyLayer:
"candidate_count": len(filtered_rows),
"window_phase": window_meta.get("phase"),
"window_score": window_meta.get("score"),
"distribution_preview": distribution_preview[:6],
"resolved_market_type": "maxtemp",
}