From 52ca7d3efa61ff0a8f4adb10cf2bc98c0eefce8f Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Mon, 25 May 2026 04:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=A9=E6=B0=94=E5=B8=82?= =?UTF-8?q?=E5=9C=BA=E6=96=B0=E9=97=BB=E9=9D=A2=E6=9D=BF=EF=BC=8C=E5=B8=82?= =?UTF-8?q?=E5=9C=BA=E5=88=97=E6=94=AF=E6=8C=81=E7=82=B9=E5=87=BB=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=20Polymarket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除 WeatherNewsPanel 组件。GroupedMarketTable 市场价格列支持 ExternalLink 跳转到 Polymarket。城市数据去重,每城只保留排名最高的合约。 --- .../dashboard/ScanTerminalDashboard.tsx | 13 +++++++++++-- .../scan-terminal/GroupedMarketTable.tsx | 18 ++++++++++++++++-- .../dashboard/scan-terminal/Panel.tsx | 3 --- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index fcf3326b..eabc4195 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -886,8 +886,17 @@ function PolyWeatherTerminal({ }, [isEn]); const filteredRegionRows = useMemo(() => { - if (selectedRegionKey === "all") return rows; - return rows.filter((row) => String(row.trading_region).toLowerCase() === selectedRegionKey); + const byRegion = selectedRegionKey === "all" + ? rows + : rows.filter((row) => String(row.trading_region).toLowerCase() === selectedRegionKey); + // Deduplicate: one row per city, keep the first (highest score from sorting) + const seen = new Set(); + return byRegion.filter((row) => { + const key = (row.city || "").toLowerCase(); + if (seen.has(key)) return false; + seen.add(key); + return true; + }); }, [rows, selectedRegionKey]); const watchRows = useMemo(() => { diff --git a/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx b/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx index 43917263..307ca0dd 100644 --- a/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx +++ b/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx @@ -2,7 +2,7 @@ import { Fragment, useState } from "react"; import clsx from "clsx"; -import { ChevronDown, ChevronRight } from "lucide-react"; +import { ChevronDown, ChevronRight, ExternalLink } from "lucide-react"; import type { ScanOpportunityRow } from "@/lib/dashboard-types"; import { type ContinentGroup, @@ -125,7 +125,21 @@ export function GroupedMarketTable({ {temp(row.signed_gap ?? row.gap_to_target, row.temp_symbol)} - {formatPrice(row.midpoint, row.ask, row.bid)} + {row.market_url ? ( + e.stopPropagation()} + className="inline-flex items-center gap-0.5 text-blue-600 hover:text-blue-800 hover:underline" + title={row.market_question || "Polymarket"} + > + {formatPrice(row.midpoint, row.ask, row.bid)} + + + ) : ( + formatPrice(row.midpoint, row.ask, row.bid) + )} {pct(row.edge_percent)} diff --git a/frontend/components/dashboard/scan-terminal/Panel.tsx b/frontend/components/dashboard/scan-terminal/Panel.tsx index 0ba1c92e..397f9d54 100644 --- a/frontend/components/dashboard/scan-terminal/Panel.tsx +++ b/frontend/components/dashboard/scan-terminal/Panel.tsx @@ -27,9 +27,6 @@ export function Panel({
{actions} - - ↗ -