清理死代码:移除 14 个孤立组件/模块,Koyfin 品牌改为 PolyWeather
删除的文件: - ContinentGroupHeader, AiPinnedForecastView, DataFreshnessBar, MarketDecisionLine - opportunity-ai-meta/evidence-summary/v4-decision/v4-risk - HeaderBar, IntradaySignalScene, MapCanvas, PolyWeatherDashboard - ScanFilterPanel, WeatherAuraLayer 修改: - decisionClass 死函数移除 - KoyfinWeatherTerminal → PolyWeatherTerminal - Koyfin-style grid → Multi-panel grid - 欢迎覆盖层 CSS 清理
This commit is contained in:
@@ -184,7 +184,7 @@ const TERM = {
|
||||
tsData: { en: "Data", zh: "数据" },
|
||||
tsAccess: { en: "Access", zh: "访问权限" },
|
||||
tsLayout: { en: "Layout", zh: "布局" },
|
||||
tsLayoutValue: { en: "Koyfin-style grid", zh: "Koyfin 风格网格" },
|
||||
tsLayoutValue: { en: "Multi-panel grid", zh: "多面板网格" },
|
||||
tsDataLive: { en: "live", zh: "实时" },
|
||||
tsAccessPaid: { en: "paid", zh: "付费" },
|
||||
} as const;
|
||||
@@ -209,16 +209,6 @@ function decisionLabel(row?: ScanOpportunityRow | null) {
|
||||
return "Monitor";
|
||||
}
|
||||
|
||||
function decisionClass(label: string) {
|
||||
if (label === "Approve" || label === "Tradable") {
|
||||
return "border-emerald-200 bg-emerald-50 text-emerald-700";
|
||||
}
|
||||
if (label === "Veto" || label === "Downgrade") {
|
||||
return "border-red-200 bg-red-50 text-red-700";
|
||||
}
|
||||
return "border-amber-200 bg-amber-50 text-amber-700";
|
||||
}
|
||||
|
||||
function SparkArea({
|
||||
color = "#2563eb",
|
||||
data,
|
||||
@@ -476,7 +466,7 @@ function GroupedMarketTable({
|
||||
);
|
||||
}
|
||||
|
||||
function KoyfinWeatherTerminal({
|
||||
function PolyWeatherTerminal({
|
||||
generatedText,
|
||||
isEn,
|
||||
locale,
|
||||
@@ -1318,7 +1308,7 @@ function ScanTerminalScreen() {
|
||||
}
|
||||
|
||||
return (
|
||||
<KoyfinWeatherTerminal
|
||||
<PolyWeatherTerminal
|
||||
generatedText={generatedText || ""}
|
||||
isEn={isEn}
|
||||
locale={locale}
|
||||
|
||||
@@ -181,113 +181,3 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Welcome onboarding overlay ── */
|
||||
.root :global(.scan-welcome-overlay) {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 1000;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: rgba(2, 6, 23, 0.72);
|
||||
backdrop-filter: blur(4px);
|
||||
animation: fadeIn 0.25s ease;
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-card) {
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
padding: 32px 28px 24px;
|
||||
border: 1px solid rgba(77, 163, 255, 0.22);
|
||||
border-radius: 24px;
|
||||
background: linear-gradient(160deg, rgba(17, 26, 46, 0.98), rgba(11, 18, 32, 0.98));
|
||||
box-shadow: 0 24px 80px rgba(0, 0, 0, 0.5);
|
||||
text-align: center;
|
||||
animation: fadeUpIn 0.3s ease;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-steps) {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-dot) {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 999px;
|
||||
background: rgba(77, 163, 255, 0.2);
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-dot.active) {
|
||||
width: 24px;
|
||||
background: var(--color-accent-primary);
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-dot.done) {
|
||||
background: rgba(77, 163, 255, 0.5);
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-icon-wrap) {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
margin: 0 auto 16px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
border-radius: 18px;
|
||||
background: rgba(77, 163, 255, 0.12);
|
||||
border: 1px solid rgba(77, 163, 255, 0.18);
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-icon) {
|
||||
color: var(--color-accent-secondary);
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-title) {
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
color: var(--color-text-primary);
|
||||
margin: 0 0 8px;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-desc) {
|
||||
font-size: 14px;
|
||||
color: var(--color-text-secondary);
|
||||
line-height: 1.6;
|
||||
margin: 0 0 24px;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-actions) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-skip) {
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: var(--color-text-muted);
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.root :global(.scan-welcome-skip:hover) {
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes fadeUpIn {
|
||||
from { opacity: 0; transform: translateY(12px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user