Commit Graph

121 Commits

Author SHA1 Message Date
2569718930@qq.com ecec3fc087 @
修复 MacBook Safari 布局崩溃:100vw/dvh 和 -webkit-backdrop-filter

Safari 将滚动条宽度计入 100vw 导致内容被裁切,100vh 被地址栏撑破。
- root 容器: 100vw → width:100% + max-width:100vw
- 详情面板/扫描终端: 100vh → 叠加 100dvh 兼容 Safari 视口
- 详情面板: 添加 -webkit-backdrop-filter 前缀
@
2026-05-21 17:27:45 +08:00
AmandaloveYang ff4c8b0139 修复手机端无法滚动:添加 viewport meta 标签并在移动端允许根容器垂直滚动
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 10:06:12 +08:00
2569718930@qq.com 00e1845f2c 全面修复前端 UI 设计审查问题:消除工程债务、统一 token 体系、提升可维护性
- 消除 !important 滥用:134 → 49(仅保留 Leaflet/图表所必需项),浅色主题使用 html.light 选择器获得更高优先级
- 修复 font-weight:13 个文件中所有 760/850/860/880/950 等非标准值已映射为 Inter 支持的 300–800
- 移除未加载的 Geist 字体声明,替换为 Inter
- 添加全局 :focus-visible 轮廓环、跳过链接、Tab ARIA 属性(role/aria-selected)
- 统一断点体系:18 → 10(480/640/768/960/1024/1200/1280/1360/1440/1680)
- 创建 scan-root-styles.ts 桶文件,将 22 个 CSS Module 导入合并为 1 个
- Token 迁移:10 个文件中数百处硬编码颜色(#4DA3FF/#E6EDF3/#9FB2C7/#6B7A90)已替换为 CSS 变量
- 去重 @keyframes:spin 4→1、loading-spin 2→0、pulse-pending 已移至 globals.css
- 添加统一的 empty/error/retry 状态组件
- 添加全局 prefers-reduced-motion 支持
- 修复 accent-primary 与 accent-secondary 相同值的问题
- 修复 accent-green 类错误渲染为蓝色
- 添加 CSS 渐变品牌 Logo
- 移除死代码(1,697 行):public/static/style.css + public/legacy/index.html
- Dashboard.module.css 本地变量已桥接至全局 token
- 提升文字对比度:#6B7A90 → #7D8FA3

Fixed: !important-134-to-49, font-weight-13-files, Geist-removal, focus-visible, breakpoints-18-to-10, CSS-module-barrel, token-migration-10-files, keyframe-dedup, dead-code-removal, accent-color-fix, contrast-improvement
Scope: frontend CSS architecture, design tokens, accessibility, responsive breakpoints
Tested: npx tsc --noEmit
2026-05-10 14:21:10 +08:00
2569718930@qq.com 2b1d7c0b65 Improve dashboard maintainability before the next release
The dashboard had several oversized orchestration, component, and CSS files that made product-copy changes and mobile/performance work risky. This refactor preserves behavior while splitting scan terminal CSS, opportunity helpers, future forecast panels, history/detail charts, and probability/model sections into smaller ownership boundaries.

Constraint: No user-visible version bump because this batch is architecture and performance cleanup, not a release announcement.

Rejected: Rewrite dashboard state management in the same batch | too broad for a safe upload after CSS and component splitting.

Confidence: high

Scope-risk: moderate

Reversibility: clean

Directive: Keep new component/CSS boundaries instead of moving product copy back into the large dashboard files.

Tested: npm run build; npm run test:business; git diff --check

Not-tested: Browser visual smoke test after push
2026-04-28 20:19:17 +08:00
2569718930@qq.com 4c9252688a Reduce dashboard CSS blast radius for scan terminal work
Dashboard.module.css mixed base shell styles with the entire scan terminal surface, making every decision-card or calendar styling pass risky. This extracts the scan terminal layer into its own CSS module and attaches that module root beside the existing dashboard root so global class selectors keep their current behavior.

Constraint: Preserve existing global scan-* class names and visual cascade.

Rejected: Rename scan classes into scoped module keys | too much DOM churn for a behavior-preserving CSS split.

Rejected: Split card/calendar/mobile rules in the same pass | safer to establish the scan-terminal layer first before finer component CSS ownership.

Confidence: high

Scope-risk: moderate

Reversibility: clean

Tested: npm run build

Not-tested: Pixel-level browser comparison across dark and light themes.
2026-04-28 09:54:47 +08:00
2569718930@qq.com 1543207ced Make dashboard decision cards feel product-ready
Users needed reassurance that unavailable quotes and long AI evidence are normal states, not broken systems. This adds a v1.5.5 upgrade announcement, softens market-unavailable copy, surfaces a one-line recommendation reason, and makes mobile cards prioritize observed temperature, expected high, peak timing, AI expansion, and a separate market line.

Constraint: Keep existing dashboard data contracts and avoid backend schema changes.
Rejected: Hide unavailable market rows entirely | users still need to know weather evidence remains usable without a quote.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Tested: npm run build
Not-tested: Browser visual QA on physical mobile devices.
2026-04-28 07:48:47 +08:00
2569718930@qq.com 326bfe258e Make freshness and timing drive city-card trust
Users need to know whether a city can be acted on before reading the full explanation. City cards now expose METAR or official-observation freshness, model update timing, market quote freshness, and AI state in a dedicated trust block, while the calendar view groups rows into action-oriented timing buckets with a single reason per city.

Constraint: Keep the existing card and calendar data contracts; derive freshness and action reasons from fields already present in the frontend payload.
Rejected: Add another long explanatory paragraph | it would repeat the same trust problem instead of making the first glance clearer.
Confidence: high
Scope-risk: moderate
Reversibility: clean
Tested: npm run build
Not-tested: Live browser visual QA with stale METAR and delayed quote examples.
2026-04-28 07:33:46 +08:00
2569718930@qq.com 30b1f5e256 Surface city-card decision reasons before the paragraph
City decision cards already had enough evidence, but the first screen still forced users to read the longer explanation before seeing why a card mattered. The header now caps status chips at three high-priority signals and uses product-facing labels for observed breakouts, stale METARs, AI loading, missing market prices, strong model agreement, and next-report waits.

Constraint: The card should stay lightweight and avoid another explanatory section.
Rejected: Keep six mixed freshness chips in the header | too much noise for first-glance scanning.
Confidence: high
Scope-risk: narrow
Reversibility: clean
Tested: npm run build
Not-tested: Browser visual QA across all city states.
2026-04-28 07:17:24 +08:00
2569718930@qq.com e6010d8242 Make city decision cards easier to trust at a glance
The decision card now exposes deterministic guard state, data freshness, AI readiness and market sync directly in the card header so users can understand whether they are looking at fresh evidence, a fallback, or a stale/exception case before reading the full explanation.

Constraint: Keep the first useful read available while DeepSeek airport/HKO details are still streaming.\nRejected: Add another expanded evidence panel | header-level badges are faster to scan and avoid increasing card depth.\nConfidence: high\nScope-risk: narrow\nReversibility: clean\nTested: npm run build\nNot-tested: Browser visual QA on production data.
2026-04-28 06:52:00 +08:00
2569718930@qq.com 6f9d75c68f feat: implement ScanTerminalDashboard component for real-time weather opportunity tracking 2026-04-27 00:30:51 +08:00
2569718930@qq.com 312b366a50 feat: implement PolyWeather dashboard UI with Leaflet map integration and backend data collection support 2026-04-26 10:22:11 +08:00
2569718930@qq.com 1ee8408b1f feat: implement Leaflet map hook and AI-assisted city card forecast view for dashboard 2026-04-26 10:13:44 +08:00
2569718930@qq.com d54050ceb0 feat: implement AI-driven city weather analysis and market decision dashboard components 2026-04-26 10:02:54 +08:00
2569718930@qq.com da2126e33e feat: implement ScanTerminalDashboard with AI-driven city streaming and analysis features 2026-04-26 09:13:18 +08:00
2569718930@qq.com 1c644a59c6 feat: implement ScanTerminalDashboard component with AI streaming forecast and queue management 2026-04-26 08:19:00 +08:00
2569718930@qq.com 963b2098c0 feat: implement AI city scan proxy route and add premium dark theme dashboard styling 2026-04-26 04:32:46 +08:00
2569718930@qq.com d71d5979e1 feat: add scan terminal dashboard with AI city analysis integration 2026-04-26 02:47:24 +08:00
2569718930@qq.com 9bbb713d45 feat: implement scan terminal dashboard with dedicated API route and service layer 2026-04-26 02:22:56 +08:00
2569718930@qq.com e6dbef1ece feat: implement ScanTerminalDashboard component and associated CSS module for PolyWeather map interface 2026-04-26 01:55:30 +08:00
2569718930@qq.com fbacd24f33 Style pinned city card and add dashboard body scrolling 2026-04-26 01:16:30 +08:00
2569718930@qq.com c44888ace5 Constrain dashboard AI workspace scrolling 2026-04-26 01:05:56 +08:00
2569718930@qq.com 90fcb96fa7 Refine scan terminal focus and stale snapshot handling 2026-04-26 00:54:39 +08:00
2569718930@qq.com 3237f95e8c feat: implement scan terminal dashboard with real-time opportunity tracking and visualization components 2026-04-26 00:24:11 +08:00
2569718930@qq.com d5fb40a544 feat: implement weather dashboard components, state management, and API routes for terminal scanning and assistant chat 2026-04-25 06:42:24 +08:00
2569718930@qq.com 3083d6b8fe feat: implement scan terminal service with caching, background refresh, and AI-driven market analysis support 2026-04-25 04:25:17 +08:00
2569718930@qq.com 77c0597e74 feat: implement Polymarket data collection and dashboard UI for weather market analysis 2026-04-25 03:59:02 +08:00
2569718930@qq.com 0e5a1f2652 feat: implement ScanTerminalDashboard with modular components and backend integration for Polymarket data collection 2026-04-25 03:26:28 +08:00
2569718930@qq.com 62a12257f0 Upgrade V4 scan to city analysis 2026-04-25 02:19:37 +08:00
2569718930@qq.com 1db473d60a Fix opportunity group selection and probabilities 2026-04-25 01:41:45 +08:00
2569718930@qq.com df6a2c73ed Add V4 scan run logs 2026-04-25 01:09:08 +08:00
2569718930@qq.com 55461c20c2 Open scan map preview to free users 2026-04-25 00:08:21 +08:00
2569718930@qq.com 6c4867b757 Fix scan detail rail scrolling 2026-04-24 23:48:59 +08:00
2569718930@qq.com 091d2efef3 Add DeepSeek V4 scan review 2026-04-24 23:32:32 +08:00
2569718930@qq.com 02866ebf53 Tighten opportunity row layout 2026-04-24 22:29:30 +08:00
2569718930@qq.com f331673c8d Refine scan terminal opportunity layout 2026-04-24 15:00:02 +08:00
2569718930@qq.com 7203e743e0 Fix scan terminal light theme contrast 2026-04-24 14:46:53 +08:00
2569718930@qq.com 8f7ffae83d Group scan opportunities by city 2026-04-24 14:41:33 +08:00
2569718930@qq.com 3c50a72f56 Compare EMOS peak with DEB in scan list 2026-04-24 14:34:25 +08:00
2569718930@qq.com 42d4a4e198 Simplify scan opportunity list and speed quotes 2026-04-24 14:26:47 +08:00
2569718930@qq.com 5fc65cbd85 feat: implement dashboard detail panel with interactive charts and forecast modal components 2026-04-24 13:35:36 +08:00
2569718930@qq.com c61a3f500d feat: implement Polymarket read-only data service and add scan terminal dashboard components 2026-04-24 10:19:16 +08:00
2569718930@qq.com c05cdd17c6 feat: implement dashboard store and scan terminal components for city market analysis 2026-04-24 06:31:29 +08:00
2569718930@qq.com 92537b4637 feat: implement scan terminal dashboard with filtering, opportunity table, and detail panel components 2026-04-24 05:39:14 +08:00
2569718930@qq.com 5cc08249e2 feat: implement ScanTerminalDashboard with map visualization and opportunity tracking components 2026-04-24 05:09:19 +08:00
2569718930@qq.com 34594e6661 调整扫描面板并新增今日分析入口 2026-04-24 04:14:52 +08:00
2569718930@qq.com 4950e31c69 扩展扫描终端视图并优化温度标签 2026-04-24 03:30:55 +08:00
2569718930@qq.com 79b58a8b98 Add locale controls and distribution previews to scan terminal 2026-04-24 00:34:09 +08:00
2569718930@qq.com 3f7d3ddf34 Redesign the scan terminal layout for EMOS 2026-04-24 00:13:11 +08:00
2569718930@qq.com 9a2ef217eb feat: implement dashboard opportunity table and supporting UI components for weather market analysis 2026-04-23 23:03:26 +08:00
2569718930@qq.com b54c86cdb3 feat: implement dashboard layout with scan filter panel, KPI summary bar, and opportunity table components 2026-04-23 22:48:57 +08:00