diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index f751de14..2bd6cfe2 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -247,6 +247,41 @@ function CityContractDetail({ () => (selectedCity ? rows.filter((r) => String(r.city || "").toLowerCase() === selectedCity) : []), [rows, selectedCity], ); + const [priceMap, setPriceMap] = useState | null>(null); + + useEffect(() => { + setPriceMap(null); + if (!selectedCity) return; + let cancelled = false; + const cityName = cityRows[0]?.city_display_name || selectedCity; + fetch(`/api/city/${encodeURIComponent(cityName)}/market-scan?lite=true`, { + cache: "no-store", + headers: { Accept: "application/json" }, + }) + .then(async (res) => { if (!res.ok) return null; return res.json(); }) + .then((json: any) => { + if (cancelled || !json?.market_scan?.scan_rows) return; + const map: Record = {}; + for (const r of json.market_scan.scan_rows) { + const key = r.id || r.market_slug || ""; + if (key && (r.midpoint != null || r.ask != null || r.bid != null)) { + map[key] = { midpoint: r.midpoint, ask: r.ask, bid: r.bid }; + } + } + setPriceMap(map); + }) + .catch(() => {}); + return () => { cancelled = true; }; + }, [selectedCity, cityRows]); + + const pricedRows = useMemo(() => { + if (!priceMap) return cityRows; + return cityRows.map((r) => { + const prices = priceMap[r.id || r.market_slug || ""]; + if (!prices) return r; + return { ...r, ...prices }; + }); + }, [cityRows, priceMap]); return ( @@ -259,7 +294,7 @@ function CityContractDetail({ {isEn ? "No contracts for this city" : "该城市暂无合约"} ) : ( - + )} ); diff --git a/frontend/components/dashboard/scan-terminal/scan-terminal-client.ts b/frontend/components/dashboard/scan-terminal/scan-terminal-client.ts index ef0c4398..9e0b9eb0 100644 --- a/frontend/components/dashboard/scan-terminal/scan-terminal-client.ts +++ b/frontend/components/dashboard/scan-terminal/scan-terminal-client.ts @@ -268,7 +268,7 @@ async function getTerminal({ time_range: "today", limit: "180", force_refresh: String(forceRefresh), - skip_polymarket: "false", + skip_polymarket: "true", }); if (tradingRegion && tradingRegion !== "all") { params.set("trading_region", tradingRegion);