2569718930@qq.com
58e6557c66
feat: implement mobile scan terminal dashboard and city picker with backend forum automation scripts
2026-05-17 17:05:47 +08:00
2569718930@qq.com
2d9aa576dd
feat: implement scan terminal mobile dashboard components and data management logic
2026-05-17 15:32:47 +08:00
2569718930@qq.com
c60baaa1e8
feat: implement utility modules and AI-pinned city dashboard components for temperature forecasting
2026-05-17 14:33:23 +08:00
2569718930@qq.com
341c6d0a93
feat: implement Telegram push utility and add new dashboard components for scan terminal and paywall management
2026-05-17 13:59:40 +08:00
2569718930@qq.com
8e2317592d
feat: implement chart utilities for temperature forecasting, calibration, and observation processing
2026-05-16 22:19:10 +08:00
2569718930@qq.com
4a938395be
修复温度曲线三个渲染问题:数据点过少、张力过高、canvas被CSS拉伸
...
- 小时数据插值为每半小时一点(24→47点)
- 全线 tension 从 0.28-0.32 降至 0.1-0.12
- 移除 canvas CSS width/height !important 声明,交由 Chart.js ResizeObserver 管理
2026-05-16 21:30:47 +08:00
2569718930@qq.com
2e02133696
修复图表时间轴不全与城市决策卡模型补齐卡顿
...
- 后端 Open-Meteo 请求加 past_days=1,小时数据从 00:00 开始
- 前端图表层填充完整 00:00-23:00 时间轴,缺失时段置空
- 城市深度分析门槛从 >1 降为 >=1,单模型城市不再被拦
- hydration 队列加最大重试 3 次,防止永久卡在等待模型补齐
- 移除右侧面板历史对账按钮
2026-05-16 20:14:05 +08:00
2569718930@qq.com
884a7899f3
修复图表横轴时间标签不完整:用tickLabels替代index取模过滤
2026-05-16 00:12:56 +08:00
2569718930@qq.com
6746650bb1
跑道观测推送及前端刷新间隔改回60秒,匹配AMSC每分钟更新频率
2026-05-15 17:58:13 +08:00
2569718930@qq.com
861b394e49
跑道观测推送时间修正为AMSC/AMOS观测时间,显示HH:MM格式
2026-05-15 17:49:37 +08:00
2569718930@qq.com
a614cbd298
feat: implement runway observations monitoring panel and Telegram alert utilities
2026-05-15 16:22:42 +08:00
2569718930@qq.com
b45010a92e
feat: implement runway observations dashboard panel, add telegram alert utility, and create city payload service
2026-05-15 15:37:25 +08:00
2569718930@qq.com
5e8548999a
feat: implement ScanTerminalDashboard UI and state management with supporting tests
2026-05-15 15:02:15 +08:00
2569718930@qq.com
747c8aa401
feat: tune scan dashboard and telegram monitor
2026-05-15 14:36:43 +08:00
2569718930@qq.com
e7fc3c97cb
feat: add scan terminal dashboard components, monitoring panels, and associated utility hooks
2026-05-15 12:52:39 +08:00
2569718930@qq.com
1a284c9990
跑道观测卡片移除机场报文展示
2026-05-15 04:37:40 +08:00
2569718930@qq.com
77488e561a
跑道观测面板每 60 秒自动刷新观测时间
2026-05-15 04:36:45 +08:00
2569718930@qq.com
0f7322dbd8
feat: add RunwayObservationsPanel component to display AMSC airport weather data
2026-05-15 02:28:26 +08:00
2569718930@qq.com
9868784494
移除跑道观测面板刷新按钮,数据随面板加载自动拉取
2026-05-15 02:21:54 +08:00
2569718930@qq.com
d4892a5294
feat: add RunwayObservationsPanel component for tracking major Chinese airport runway temperatures
2026-05-15 02:15:03 +08:00
2569718930@qq.com
644b592fe8
修复 MarketOverviewBanner 未使用 fetchBackendApi 导致生产环境 404
...
组件内裸 fetch() 请求到 Vercel 前端域名,缺少路由 handler 返回 404。
统一使用 fetchBackendApi() 走后端代理,其他 scan-terminal 组件已正确使用。
2026-05-15 02:01:41 +08:00
2569718930@qq.com
4cc579ccb3
feat: add AMSC runway observations
2026-05-15 01:41:49 +08:00
2569718930@qq.com
2ee00f8016
MiMo AI 能力扩展:TAF解读、概率分布解读、异常检测、市场概览
...
AI 解读字段扩展:
- 新增 taf_read_zh/en:解读机场预报中影响今日峰值窗口的变化
- 新增 probability_read_zh/en:描述概率分布形态(最高桶、偏左/偏右)
- stream max_tokens 900→1200 容纳新输出字段
- 缓存 key 简化为 METAR原文+观测时间,大幅提升命中率
- 兜底函数补全 TAF 和概率字段的确定性生成
异常检测:
- 纯数学计算,零 AI 延迟:实测温度 vs 全部模型预测上下限
- 三级告警:breakout_above / breakout_below / deviation
市场概览:
- 新增 POST /api/scan/terminal/overview(MiMo 批量解读,缓存10分钟)
- 前端 MarketOverviewBanner 可折叠横幅(顶栏与标签栏之间)
- 移动端适配 640px/768px 断点,暗色/亮色双主题
Scope-risk: MEDIUM — 170 测试通过,TypeScript 零错误,ruff 零告警
Tested: python -m pytest -q (170 passed), npx tsc --noEmit (0 errors), ruff check .
2026-05-14 22:41:31 +08:00
2569718930@qq.com
4f13faa311
优化日内温度曲线图加载性能并修复图标旋转动画
...
- AiCityTemperatureChart:React.memo 包裹 + useMemo 依赖移除 detail 避免每帧重算
- ScanTerminalCard 等 9 个 CSS Module:animation: spin 改为 :global(spin) 修复 CSS Modules 作用域问题
2026-05-14 17:31:25 +08:00
2569718930@qq.com
c9d03fd3e1
feat: implement dashboard state management, API proxy layer, and modular UI components for weather monitoring and payments
2026-05-14 15:05:13 +08:00
2569718930@qq.com
02add6d994
feat: implement city weather detail API routing, dashboard data models, and monitoring infrastructure
2026-05-14 14:21:28 +08:00
AmandaloveYang and Claude Opus 4.7
3d4e803488
城市决策卡移除信心指标显示
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 17:33:01 +08:00
AmandaloveYang and Claude Opus 4.7
52ad2dfde4
AMOS 跑道面板仅限首尔/釜山显示,其余城市无真实 AMOS 数据
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 17:11:57 +08:00
AmandaloveYang and Claude Opus 4.7
81e9aeb98f
fix: remove "Now" vertical line from intraday temperature chart
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 09:05:44 +08:00
2569718930@qq.com
17b93803af
修复业务测试:observedHighBreak 断言适配新的行动指引文案
2026-05-10 20:25:05 +08:00
2569718930@qq.com
b26ec05b81
AMOS 跑道温度范围:城市决策卡头部展示"跑道实况 14.6~15.2℃"
...
后端:
- amos_station_sources.py 新增 runway_temp_range (跑道温度 min,max)
- 取所有有效跑道温度的最小值和最大值
前端:
- CityCardHeader 新增 observedLabel prop(标签自定义)
- 有 AMOS 数据时显示"跑道实况"替代"当前温度"
- 温度展示格式:14.6~15.2℃(跑道温度范围)
- 无 AMOS 时回退原有 METAR 温度显示
2026-05-10 20:19:48 +08:00
2569718930@qq.com
f4f613ad02
Fix AMOS runway observations
2026-05-10 19:20:52 +08:00
2569718930@qq.com
40cd8fc2a6
修复机场观测面板不显示 + 放宽 AMOS 展示条件
2026-05-10 19:06:22 +08:00
2569718930@qq.com
3f351ac60c
Busan 机场观测面板:METAR 数据兜底展示
...
问题:AMOS 仅支持仁川 RKSI,釜山 RKPK 无法获取跑道级数据
解决:AmosRunwayPanel 新增 airportCurrent 回退模式
- 有 AMOS 数据时:展示完整跑道卡片网格(首尔/仁川)
- 无 AMOS 时:展示单张机场观测卡片(釜山/所有其他机场)
包含:温度、风向风速、气压 QNH、能见度
标注数据来源(METAR/AMOS)和是否过旧
- AirportCurrentConditions 类型新增 pressure_hpa 字段
这样首尔有完整的 4 对跑道数据,釜山至少展示机场官方观测值
2026-05-10 18:58:42 +08:00
2569718930@qq.com
163ad8cb4e
修复 AmosRunwayPanel TS strict null check
2026-05-10 18:40:22 +08:00
2569718930@qq.com
e23a90a961
修复釜山 AMOS 数据获取 + 跑道面板容错
...
AMOS 页面用 JS 切换机场,GET 参数无效。新增策略:
- 先 GET 建立 session,再 POST form data 切换机场
- 尝试多种 form data 组合(icao/stn/airport/code)
- 回退到 GET 参数尝试
跑道面板容错:
- 无温度数据时仍展示跑道风/能见度/RVR
- 温度缺失显示 "--" 而非隐藏整行
- analysis_service 输出条件放宽:有 temp_c 或 runway_obs 即可
Tested: python -m ruff check ., npx tsc --noEmit
2026-05-10 18:39:37 +08:00
2569718930@qq.com
13a67cdc85
修复温度走势图不显示:移除 IntersectionObserver 延迟渲染
...
问题:图表只在 IntersectionObserver 检测到视口交叉后才渲染
- 卡片折叠时图表区域永远不可见,IntersectionObserver 不触发
- 小屏幕/快速滚动时图表可能来不及渲染
修复:
- 移除 IntersectionObserver 懒加载逻辑
- 图表始终立即渲染(useChart 在挂载时初始化)
- Chart.js animation:false 确保快速渲染,无性能代价
- 清理未使用的 useState/useEffect 导入
2026-05-10 18:34:00 +08:00
2569718930@qq.com
fe3f48f255
城市决策卡新增 AMOS 跑道温度面板
...
- 新增 AmosRunwayPanel 组件:展示每条跑道的温度/露点/能见度/RVR/风速
- 跑道卡片网格布局 (auto-fit minmax 160px)
- 每条跑道独立显示:跑道编号、温度(含露点)、能见度、RVR、风速范围
- 官方 METAR 标签 vs 跑道中位数标签
- CityDetail 类型新增 AmosData 接口
- 暗色/浅色主题均已适配
- 仅首尔/釜山(有 AMOS 数据)时显示
2026-05-10 18:30:59 +08:00
2569718930@qq.com
fe681503ae
UX 审查收尾:AI 解读过渡标记 + 极端温度视觉强化
...
P2-17:AI 快速判断→完整解读过渡标记
- AiEvidencePanel 新增 useTransitionMarker hook
- AI 从 loading→ready 后显示"✓ Updated/已更新"徽标(4 秒后消失)
- 绿色动画徽标 fadeUpIn,避免用户以为信息没变
P2-18:极端温度视觉强化
- globals.css 新增 temp-extreme-hot(橙红辉光 ≥40°C/≥104°F)
- globals.css 新增 temp-extreme-cold(冰蓝辉光 ≤-5°C/≤23°F)
- PanelSections Hero 温度值自动应用极端温度样式
Tested: npx tsc --noEmit
2026-05-10 17:44:45 +08:00
2569718930@qq.com
341825747f
UX 审查 P2 修复:X轴标签密度、极端温度视觉强化
...
- AiCityTemperatureChart:X轴标签从每4个→每3个显示,maxTicksLimit 6→8
- globals.css:新增 temp-extreme-hot(≥40°C)和 temp-extreme-cold(≤-5°C)样式
- PanelSections:Hero 温度值自动应用极端温度 CSS 类(橙色辉光/蓝色辉光)
- 华氏度自动适配:≥104°F 为极热,≤23°F 为极冷
Tested: npx tsc --noEmit
2026-05-10 17:39:22 +08:00
2569718930@qq.com
d94476f943
UX 审查修复:统一修正术语、图表"现在"标记、专业术语解释、异常行动建议
...
P0-1 术语统一:
- WeatherDecisionBand 改用"上修/下修/维持"替代"偏高温/暂不追/等待确认"
- 与 AI 后端提示词使用的术语体系一致
P0-9 图表"现在"标记:
- chart-utils.ts 导出 currentIndex
- AiCityTemperatureChart 在 currentIndex 处绘制竖线(蓝色虚线)
P0-13 专业术语解释:
- DataFreshnessBar 新增 labelTitle 属性(hover tooltip)
- METAR → "机场气象观测报文" / "Meteorological Aerodrome Report"
- HKO → "香港天文台官方实测" / "Hong Kong Observatory official readings"
P0-16 异常行动建议:
- primaryReason 追加行动指引(实测突破→建议关注偏高温区间等待确认 / 峰值已过→建议避免追高 / 观测过旧→建议等待新报文)
P1-8 DEB 路径分段样式:
- 过去部分实线(已确定),未来部分虚线(预测不确定)
P1-11 HistoryChart 单位:
- tooltip 使用 temp_symbol 替代硬编码 °
Tested: npx tsc --noEmit
2026-05-10 17:33:15 +08:00
2569718930@qq.com
ce1da6a686
完成产品审查剩余修复:新手指引、反馈入口、付费墙预览
...
P1-4:新增 WelcomeOverlay 新手指引
- 首次访问时显示 3 步引导:①从地图选城市 ②查看城市简报 ③解锁 Pro 深入分析
- 圆点进度指示、跳过/下一步按钮、点背景可关闭
- 看过一次后 localStorage 标记不再显示
P1-5:付费墙增加功能预览
- HistoryModal 在付费墙上方展示功能说明文案
- 新增 i18n 键 history.previewTitle / history.previewDesc(中英双语)
P2-9:新增反馈入口
- 顶栏增加 Telegram 反馈按钮(MessageCircle 图标)
- 点击跳转 PolyWeather 社群
Tested: npx tsc --noEmit
2026-05-10 16:19:21 +08:00
2569718930@qq.com
9635387beb
移除日历视图:功能与决策卡重叠,维护成本高于价值
...
- 删除 CalendarView.tsx、calendar-action-utils.ts 及其测试文件
- 删除 ScanTerminalCalendar.module.css
- ScanTerminalDashboard:移除日历 tab 按钮、日历渲染分支、ContentView 类型中的 calendar
- ScanTerminalLightTheme:清理所有 .scan-calendar-* 规则(~40 行)
- scan-root-styles.ts:移除 ScanTerminalCalendar 导入
同时完善地理排序:
- scan_terminal_filters.py:market_region_from_tz_offset 细化为 7 个区域(东亚/东南亚/中亚/西亚/欧洲非洲/南美/北美)并增加 sort_order
- scan_terminal_city_row.py:传递 trading_region_sort
- dashboard-types.ts:增加 trading_region_sort 字段
- decision-utils.ts:sortRowsByUserTime 按 trading_region_sort 优先排序
Rejected: keep-calendar-view, calendar-actions-overlap-with-decision-cards
Tested: npx tsc --noEmit, python -m ruff check .
2026-05-10 15:48:18 +08:00
2569718930@qq.com
5ff9fade5f
重新设计日历视图:以用户本地时区为主视角
...
- CalendarView 组件重写:添加实时用户时钟头部(HH:MM:SS + 完整日期)
- 卡片重新设计:用户本地时间为主要展示,城市窗口时间为次要
- 新增 urgency badge(进行中/即将/稍后/已过)视觉标识
- 优化卡片布局:顶部城市+徽标 → 用户时间 → 倒计时 → 原因 → 底部 DEB+阶段
- CSS 全面重写:用户时钟头部、卡片分层、计时器颜色编码
- 浅色主题同步更新所有新 class 名称
2026-05-10 15:34:46 +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
f47de115c8
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
2026-05-10 12:20:22 +08:00
2569718930@qq.com
30faac989c
秒开 AI 预测最高温:preview 事件提前下发确定性预测值
...
之前 predicted_max 只在 AI 流式 final 事件返回后才显示(10-25 秒),
但后端 fallback 早在 1ms 内就算好了 cluster median / DEB 中枢。
现在 preview 事件同步下发确定性 predicted_max + range_low/high,
前端也在 fallback payload 中自动从 multi_model + DEB 计算预测值,
用户点击城市后 ~100ms 即可看到 AI 预测最高温。
2026-05-07 21:04:26 +08:00
2569718930@qq.com
2f73828d4d
重构城市决策卡 hero 布局:去除 sticky 固定效果,右侧改为三指标并列对比
...
将 scan-ai-city-hero 从"左重右轻"改为左右均衡布局,右侧从单一预计高温数字
替换为当前温度/预计最高温/峰值时间三列并排指标卡,中间列高亮为主指标。
移除冗余的 pills 行和隐藏的 mobile-priority div,新鲜度条改为水平单行。
同步更新亮色主题 CSS 新增 metrics 样式。修复 fallback 模块未使用变量。
Constraint: dark/light 双主题完整覆盖
Scope-risk: hero 高度缩减约 30%,需确认移动端 MobileDecisionCard 不受影响
2026-05-06 17:57:40 +08:00
2569718930@qq.com
59e099a56d
修复 AI 报文解读缓存未在首帧生效的问题
...
此前 useState 初始化为 idle,useEffect 异步读缓存后才切到 ready,
导致重新打开城市卡片时先闪烁"等待 AI 解读..."再跳转到缓存数据。
现在用 lazy initializer 在首帧同步读取缓存,命中则直接渲染 ready
状态,零闪烁。
2026-05-06 16:34:19 +08:00
2569718930@qq.com
1a40802dcb
移除 AI 机场报文解读面板的折叠收起按钮
...
将 <details>/<summary> 改为普通 <section>/<div>,面板始终展开。
移除 isCompactCard prop 及相关的 open/onToggle 状态管理。
2026-05-06 16:27:06 +08:00