diff --git a/frontend/components/dashboard/Dashboard.module.css b/frontend/components/dashboard/Dashboard.module.css index 9e5459d4..5ed33430 100644 --- a/frontend/components/dashboard/Dashboard.module.css +++ b/frontend/components/dashboard/Dashboard.module.css @@ -9552,6 +9552,26 @@ background: rgba(8, 17, 30, 0.8); } +.root :global(.scan-map-shell .map) { + position: absolute; + inset: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + border-radius: 18px; + box-shadow: none; +} + +.root :global(.scan-map-shell .leaflet-container) { + width: 100%; + height: 100%; + background: #060d18; +} + .root :global(.scan-map-caption) { color: #8fa4c3; font-size: 13px; @@ -10003,6 +10023,28 @@ font-weight: 700; } +.root :global(.scan-detail-primary-actions) { + display: flex; + margin-bottom: 16px; +} + +.root :global(.scan-detail-analysis-button) { + width: 100%; + border: 1px solid rgba(23, 217, 139, 0.3); + border-radius: 14px; + background: rgba(23, 217, 139, 0.12); + color: #27ea98; + padding: 12px 14px; + font-size: 14px; + font-weight: 800; + text-align: center; +} + +.root :global(.scan-detail-analysis-button:hover) { + background: rgba(23, 217, 139, 0.18); + border-color: rgba(23, 217, 139, 0.4); +} + .root :global(.scan-detail-section) { padding: 16px 0; border-bottom: 1px solid rgba(90, 123, 166, 0.12); diff --git a/frontend/components/dashboard/OpportunityTable.tsx b/frontend/components/dashboard/OpportunityTable.tsx index c1c4d0e4..9fd7858f 100644 --- a/frontend/components/dashboard/OpportunityTable.tsx +++ b/frontend/components/dashboard/OpportunityTable.tsx @@ -77,12 +77,18 @@ export function getWindowPhaseMeta( tone: "red", }; } - if (mode === "setup_today" || mode === "early_today") { + if (mode === "setup_today") { return { label: locale === "en-US" ? "Touch Play" : "触达博弈", tone: "red", }; } + if (mode === "early_today") { + return { + label: locale === "en-US" ? "Early Today" : "日内早段", + tone: "blue", + }; + } if (mode === "tomorrow" || mode === "week_ahead") { return { label: locale === "en-US" ? "Early" : "早期机会", @@ -223,7 +229,7 @@ export function OpportunityTable({ {isEn ? "City / Market" : "城市 / 市场"} {isEn ? "Local Time / Phase" : "当前时间 / 阶段"} - {isEn ? "Model vs Market" : "模型分布 vs 市场分布"} + {isEn ? "EMOS vs Market" : "EMOS 分布 vs 市场分布"} {isEn ? "Best Opportunity" : "最佳机会"} {isEn ? "Edge" : "边际优势"} {isEn ? "Score" : "综合得分"} diff --git a/frontend/components/dashboard/ScanFilterPanel.tsx b/frontend/components/dashboard/ScanFilterPanel.tsx index 40cae39a..8c6c0c4d 100644 --- a/frontend/components/dashboard/ScanFilterPanel.tsx +++ b/frontend/components/dashboard/ScanFilterPanel.tsx @@ -50,9 +50,6 @@ const SCAN_MODES = [ }, ] as const; -const LIQUIDITY_OPTIONS = [500, 1000, 5000, 10000]; -const EDGE_OPTIONS = [1, 2, 3, 5, 8]; - export function ScanFilterPanel({ value, onChange, @@ -127,149 +124,6 @@ export function ScanFilterPanel({ -
-
- {isEn ? "Filters" : "筛选条件"} - -
- -
-
- {isEn ? "Price Range" : "价格范围"} -
-
- - updateFilter( - "min_price", - Math.min(Number(e.target.value) / 100, value.max_price), - ) - } - className="scan-range-slider min" - /> - - updateFilter( - "max_price", - Math.max(Number(e.target.value) / 100, value.min_price), - ) - } - className="scan-range-slider max" - /> -
-
- {value.min_price.toFixed(2)} - {value.max_price.toFixed(2)} -
-
- - - - - -
- - {isEn ? "High Liquidity Only" : "只看高流动性"} - - -
- - - - -
-
@@ -319,6 +324,22 @@ function DetailPanel({
+
+ +
+
{isEn ? "Current Context" : "当前概况"} @@ -804,15 +825,6 @@ function ScanTerminalScreen() { selectedRowId={selectedRowId} onSelectRow={(row) => setSelectedRowId(row.id)} /> - {deferredRows.length ? ( -
- -
- ) : null} ); }; @@ -985,6 +997,7 @@ export function ScanTerminalDashboard() { + ); diff --git a/frontend/playwright-scroll-check.png b/frontend/playwright-scroll-check.png new file mode 100644 index 00000000..d43ec4e0 Binary files /dev/null and b/frontend/playwright-scroll-check.png differ diff --git a/frontend/playwright-views-check.png b/frontend/playwright-views-check.png new file mode 100644 index 00000000..093a30ea Binary files /dev/null and b/frontend/playwright-views-check.png differ