From 6c08a684137e97ee8afff2a152a7b625a55bc0b2 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Thu, 14 May 2026 21:31:05 +0800 Subject: [PATCH] =?UTF-8?q?@=20=E6=80=A7=E8=83=BD=E4=B8=8E=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BD=93=E9=AA=8C=E5=85=A8=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端性能: - 移除 Three.js 依赖(~600KB),天气粒子改为纯 CSS 动画 + Canvas 2D - Google Fonts 切换为 next/font 自托管,消除跨域字体请求 - 合并 ScanTerminalLightTheme.module.css (37KB) 到主 CSS,亮/暗主题统一用 CSS 变量 - 新增 /api/dashboard/init 聚合端点,首次加载 4 次往返 → 1 次 - 添加 Service Worker 静态资源缓存,修复 PWA manifest 配置 用户体验: - 新增全局错误边界 error.tsx / global-error.tsx,崩溃不再白屏 - 决策卡和城市详情的更新时间改为相对时间("15秒前"),每秒自动刷新 - 数据陈旧时状态标签从青色切换为琥珀色提示 DEB 算法增强: - 市场扫描路径接入 Open-Meteo 多模型数据(ECMWF/GFS/ICON/JMA/HRDPS 等) - MAE 计算加入时间衰减(decay_factor=0.85),近期模型误差权重更高 Scope-risk: MEDIUM — 全量 170 测试通过,前端 TypeScript/build 通过,ruff 零告警 Tested: python -m pytest -q (170 passed), npx tsc --noEmit (0 errors), npm run build (success), ruff check . @ --- frontend/app/error.tsx | 101 ++ frontend/app/global-error.tsx | 115 ++ frontend/app/globals.css | 7 +- frontend/app/layout.tsx | 32 +- frontend/components/dashboard/DetailPanel.tsx | 27 + .../dashboard/IntradaySignalScene.tsx | 341 +++--- frontend/components/dashboard/RegisterSW.tsx | 12 + .../dashboard/ScanTerminal.module.css | 980 ++++++++++++++++ .../dashboard/ScanTerminalDashboard.tsx | 30 +- .../ScanTerminalLightTheme.module.css | 1012 ----------------- .../components/dashboard/WeatherAuraLayer.tsx | 795 ++++++------- .../components/dashboard/scan-root-styles.ts | 4 +- frontend/hooks/useRelativeTime.ts | 37 + frontend/package-lock.json | 89 +- frontend/package.json | 4 +- frontend/public/manifest.webmanifest | 2 +- frontend/public/sw.js | 44 + src/analysis/deb_algorithm.py | 34 +- web/analysis_service.py | 5 + web/routers/system.py | 6 + web/services/dashboard_init_api.py | 90 ++ 21 files changed, 2062 insertions(+), 1705 deletions(-) create mode 100644 frontend/app/error.tsx create mode 100644 frontend/app/global-error.tsx create mode 100644 frontend/components/dashboard/RegisterSW.tsx delete mode 100644 frontend/components/dashboard/ScanTerminalLightTheme.module.css create mode 100644 frontend/hooks/useRelativeTime.ts create mode 100644 frontend/public/sw.js create mode 100644 web/services/dashboard_init_api.py diff --git a/frontend/app/error.tsx b/frontend/app/error.tsx new file mode 100644 index 00000000..be9e6295 --- /dev/null +++ b/frontend/app/error.tsx @@ -0,0 +1,101 @@ +"use client"; + +import { RefreshCw } from "lucide-react"; +import { useEffect } from "react"; + +export default function ErrorPage({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + useEffect(() => { + console.error("Unhandled page error:", error); + }, [error]); + + return ( +
+ 数据处理时遇到了意外问题,请尝试刷新页面。 +
+ {error.digest ? ( +
+ {error.digest}
+
+ ) : null}
+
+ + PolyWeather 遇到了严重错误,请尝试刷新页面。如果问题持续出现,请联系我们。 +
+ {error.digest ? ( +
+ {error.digest}
+
+ ) : null}
+
+