Reduce duplicate scan terminal decision copy and chrome
Removed the scan KPI bar, trimmed redundant decision-card content, and shortened the primary reason text so the city analysis cards read like concise signals instead of repeating the same state across sections. Constraint: Keep existing city decision logic and data flow unchanged while simplifying the UI Rejected: Rework the full card layout or mobile card flow | larger surface area than requested Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep hero, decision band, and market line responsibilities separate to avoid duplicate copy returning Tested: frontend npm run build Not-tested: Manual visual QA in browser across desktop/mobile breakpoints
This commit is contained in:
@@ -52,7 +52,6 @@ import type {
|
||||
} from "@/lib/dashboard-types";
|
||||
import { AiPinnedForecastView } from "@/components/dashboard/scan-terminal/AiPinnedForecastView";
|
||||
import { CalendarView } from "@/components/dashboard/scan-terminal/CalendarView";
|
||||
import { AiForecastKPIBar } from "@/components/dashboard/scan-terminal/AiForecastKPIBar";
|
||||
import { LoadingSignal } from "@/components/dashboard/scan-terminal/LoadingSignal";
|
||||
import { findDetailForCity } from "@/components/dashboard/scan-terminal/city-detail-utils";
|
||||
import {
|
||||
@@ -190,19 +189,6 @@ function ScanTerminalScreen() {
|
||||
mapSelectedCityName || store.selectedCity,
|
||||
);
|
||||
}, [mapSelectedCityName, store.selectedCity, timeSortedRows]);
|
||||
const kpiCityName =
|
||||
mapSelectedCityName ||
|
||||
store.selectedCity ||
|
||||
aiPinnedCities[0]?.cityName ||
|
||||
null;
|
||||
const kpiDetail =
|
||||
findDetailForCity(store.cityDetailsByName, kpiCityName) ||
|
||||
(store.selectedDetail &&
|
||||
normalizeCityKey(store.selectedDetail.name) === normalizeCityKey(kpiCityName)
|
||||
? store.selectedDetail
|
||||
: null);
|
||||
const kpiRow = findRowForCity(timeSortedRows, kpiCityName);
|
||||
|
||||
const mapFallbackRow = useMemo(() => {
|
||||
const rawCityName = mapSelectedCityName || store.selectedCity;
|
||||
const cityKey = normalizeCityKey(rawCityName);
|
||||
@@ -514,14 +500,6 @@ function ScanTerminalScreen() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<AiForecastKPIBar
|
||||
pinnedCount={aiPinnedCities.length}
|
||||
activeCityName={kpiCityName}
|
||||
activeDetail={kpiDetail}
|
||||
activeRow={kpiRow}
|
||||
locale={locale}
|
||||
/>
|
||||
|
||||
{showAnnouncement ? (
|
||||
<section className="scan-upgrade-announcement" aria-label={isEn ? "Upgrade announcement" : "升级公告"}>
|
||||
<div className="scan-upgrade-announcement-copy">
|
||||
|
||||
Reference in New Issue
Block a user