2569718930@qq.com
|
df892ce9a6
|
chore(ops): fall back to local trading_system.log in get_ops_logs when docker logs is empty
|
2026-05-20 08:20:16 +08:00 |
|
2569718930@qq.com
|
76d5a0abe8
|
refactor: remove redundant telegram pricing, align daily forecast date, and hide sunrise/sunset from UI
|
2026-05-20 07:55:47 +08:00 |
|
2569718930@qq.com
|
3fd52ad9d4
|
feat: add ops_api service for administrative management of users, subscriptions, and system analytics
|
2026-05-19 23:57:08 +08:00 |
|
2569718930@qq.com
|
a714817cdf
|
feat: implement health check dashboard client and admin service APIs
|
2026-05-19 23:39:33 +08:00 |
|
2569718930@qq.com
|
e1e000e854
|
后台会员页新增增长趋势图表:累计曲线、每日新增堆叠面积图、统计卡片
|
2026-05-19 19:28:38 +08:00 |
|
2569718930@qq.com
|
a5c508cce8
|
feat: implement SQLite database management and Supabase integration for user authentication and points synchronization
|
2026-05-19 18:07:39 +08:00 |
|
2569718930@qq.com
|
3ca5b71299
|
移除 NMC(中国国家气象中心)数据源:无实际使用价值
|
2026-05-19 16:20:48 +08:00 |
|
2569718930@qq.com
|
3d4a0148fe
|
修复 KNMI 健康检查 404:列表 API 已移除,改用实际数据端点
|
2026-05-19 15:00:10 +08:00 |
|
2569718930@qq.com
|
b93a75516d
|
移除未使用的 Groq 和 Meteoblue 服务代码及配置
|
2026-05-19 00:05:07 +08:00 |
|
2569718930@qq.com
|
c38dc80f58
|
后台新增 API 状态检测页:实时检测 Supabase/Open-Meteo/METAR/KNMI/MADIS/Telegram 连通性
|
2026-05-18 23:25:16 +08:00 |
|
2569718930@qq.com
|
5b1402fc7c
|
refactor: extract analysis signal builders
|
2026-05-18 23:11:56 +08:00 |
|
2569718930@qq.com
|
2b6b18ec20
|
修复 city_runtime.py 引用已删除的 probability_snapshot_archive 模块
|
2026-05-18 22:30:56 +08:00 |
|
2569718930@qq.com
|
0e0aad3171
|
删除 LGBM 全部代码和模型文件,EMOS 简化为纯 legacy 高斯分桶模式
|
2026-05-18 22:05:55 +08:00 |
|
2569718930@qq.com
|
e12d935cde
|
会员订阅区分体验用户和付费用户:类型标签、筛选器、来源字段
|
2026-05-18 20:29:33 +08:00 |
|
2569718930@qq.com
|
67701a4715
|
后台管理系统后端 API:在线配置编辑、手动订阅管理、日志查看(logs 目录避开 gitignore)
|
2026-05-18 20:18:42 +08:00 |
|
2569718930@qq.com
|
2d459f3052
|
城市 panel/nearby 数据对游客开放,market/full 保留鉴权
|
2026-05-18 19:28:54 +08:00 |
|
2569718930@qq.com
|
78b23ef361
|
feat: implement Telegram account binding and update project structure in documentation
|
2026-05-18 17:10:44 +08:00 |
|
2569718930@qq.com
|
6041d25f23
|
feat: add telegram group pricing and direct payments
|
2026-05-18 16:18:26 +08:00 |
|
2569718930@qq.com
|
fd59cd018d
|
Harden Open-Meteo rate limiting
|
2026-05-18 00:13:51 +08:00 |
|
2569718930@qq.com
|
bd21b05fbc
|
完全移除预热(prewarm)功能
- 删除 src/utils/prewarm_dashboard.py
- 删除 scripts/prewarm_dashboard_cache.py、prewarm_dashboard_worker.py
- docker-compose.yml 移除 polyweather_prewarm 服务
- runtime_coordinator.py 移除预热循环启动逻辑
- web/core.py 移除 prewarm status 上报
- web/routers/system.py 移除 /api/system/prewarm 端点
- web/services/system_api.py 移除 run_system_prewarm
- city_runtime.py DEFAULT_PREWARM_CITIES 改名为 DEFAULT_STATUS_CITIES
- 清理 env.example、测试、VPS .env 中的预热配置
|
2026-05-17 22:43:17 +08:00 |
|
2569718930@qq.com
|
1ab10a9c90
|
Add MGM hourly support for Ankara models
|
2026-05-17 19:19:12 +08:00 |
|
2569718930@qq.com
|
d39534dff4
|
机场推送重构:观测缓存分离 + 全城市覆盖 + 四路并发
- 新增 force_refresh_observations_only 模式:机场推送仅刷新 METAR/AMOS
观测缓存,多模型预报缓存保留 15 分钟,杜绝 Open-Meteo 429 限流后
DEB 回退到实测温度的 bug
- 砍掉夜间静默和温度状态机,每条新观测无条件推送
- HIGH_FREQ_AIRPORT_CITIES 从 19 城扩到 30 城(新增 11 个美国城市)
- 美国城市走 airport_primary (MADIS) 优先取温
- 机场周期从串行改为 ThreadPoolExecutor(max_workers=4),周期时间从
~120s 压缩到 ~33s
Constraint: 单核 VPS 安全并发上限
Tested: docker compose up -d --build polyweather 重建后推送正常
|
2026-05-17 18:04:05 +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
|
a83d9e7649
|
feat: implement 60-second analysis cache TTL for high-frequency airport cities
|
2026-05-17 13:41:44 +08:00 |
|
2569718930@qq.com
|
b27bedbca3
|
修复网站 API 阻塞与积分同步问题
- uvicorn 改用 import string 格式启动 4 workers,防止数据采集阻塞 event loop
- prewarm 去掉 --force-refresh,仅依赖缓存预热避免每 5 分钟全量采集
- 积分变动时同步写入 Supabase user_metadata,避免前端回退路径失败时显示 0 积分
- /api/auth/me 积分解析增加 Supabase email 回退路径
|
2026-05-16 13:15:30 +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
|
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
|
6c08a68413
|
@
性能与用户体验全面优化
前端性能:
- 移除 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 .
@
|
2026-05-14 21:31:05 +08:00 |
|
2569718930@qq.com
|
37494a7192
|
@
将 web/routes.py 拆分为模块化 router + service 架构
- 新增 web/app_factory.py 集中注册 7 个域名 router
- 新增 web/routers/ 薄壳路由层(auth/city/system/scan/ops/payments/analytics)
- 新增 web/services/ 业务函数下沉(每域独立 service 文件)
- web/routes.py 缩减为 city_runtime 的兼容重导出 facade
- analysis_service.py/app.py 适配新入口并清理冗余导入
Scope-risk: LOW — 全量 170 测试通过,router 注册顺序与原路由一致
Tested: python -m pytest -q (170 passed), ruff check . (All checks passed)
@
|
2026-05-14 20:01:26 +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 |
|
2569718930@qq.com
|
c006d13fea
|
MonitorPanel 从独立 API 改为复用 DashboardStore 数据,砍掉 /api/m 和 /m/json
|
2026-05-14 00:43:19 +08:00 |
|
2569718930@qq.com
|
c5fdb93ae5
|
监控页:后端 30s 缓存 + 前端 loading 态
|
2026-05-14 00:29:51 +08:00 |
|
2569718930@qq.com
|
2202f8e211
|
砍掉 /m HTML 页面,只保留 /m/json 给 React 组件用
|
2026-05-14 00:23:03 +08:00 |
|
2569718930@qq.com
|
fc48795299
|
监控页从 iframe 改为原生 React 组件:无加载延迟,30s JSON 轮询
|
2026-05-14 00:18:26 +08:00 |
|
2569718930@qq.com
|
22b414f69e
|
监控页时间改为用户本地时间(JS toLocaleTimeString)
|
2026-05-14 00:10:43 +08:00 |
|
2569718930@qq.com
|
9dd59ceb4e
|
修复 ruff 风格:多行语句、bare except → except Exception
|
2026-05-13 23:55:54 +08:00 |
|
2569718930@qq.com
|
a9b1449680
|
放弃 Jinja2,改用 f-string 直接拼 HTML,零模板引擎依赖
|
2026-05-13 23:54:53 +08:00 |
|
2569718930@qq.com
|
a7ba7aed3a
|
Debug:简化 context 排查 Jinja2 500
|
2026-05-13 23:46:18 +08:00 |
|
2569718930@qq.com
|
1240fbb673
|
跑道数据改用 tuple 避免 Jinja2 dict unhashable 错误
|
2026-05-13 23:41:31 +08:00 |
|
2569718930@qq.com
|
d56889c2e5
|
修复 Jinja2 模板 dict 访问方式和条件表达式
|
2026-05-13 23:38:06 +08:00 |
|
2569718930@qq.com
|
b94037f328
|
路由 /monitor → /m,URL 更短
|
2026-05-13 23:24:26 +08:00 |
|
2569718930@qq.com
|
a221b3e969
|
用 Python 重写市场监控网页版:FastAPI+Jinja2+HTMX,复用 _analyze()
|
2026-05-13 23:19:49 +08:00 |
|
AmandaloveYang
|
e344fae75f
|
首尔/釜山 AMOS 数据缓存 TTL 从 300s 降至 60s,对齐官网 1 分钟刷新频率
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-11 17:28:53 +08:00 |
|
2569718930@qq.com
|
8075fb66b7
|
AMOS 增加 info 级别日志追踪数据流
- weather_sources.py: _attach_korean_amos_data 记录 fetch 开始、成功/失败、温度/跑道数据
- amos_station_sources.py: _amos_get_page 记录页面匹配/不匹配
- amos_station_sources.py: fetch_amos_official_current 记录 HTML 获取和解析
- analysis_service.py: _analyze 记录 AMOS 数据是否到达分析层
重启后端后在日志中搜索 "AMOS" 可追踪完整数据流:
AMOS: fetching for city=seoul
AMOS page matched icao=RKSI length=...
AMOS fetch_amos_official_current: got HTML for RKSI...
AMOS: got data for city=seoul temp_c=... source=...
AMOS _analyze: found amos data for city=seoul temp_c=...
|
2026-05-10 19:46:26 +08:00 |
|
2569718930@qq.com
|
40cd8fc2a6
|
修复机场观测面板不显示 + 放宽 AMOS 展示条件
|
2026-05-10 19:06: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
|
ba352feb34
|
首尔/釜山机场报文优先使用 AMOS(更新更快)
- analysis_service.py:AMOS 数据覆盖 airport_current 的 raw_metar、wind、pressure
- source_label 设为 "AMOS"(区别于 aviationweather.gov METAR)
- stale_for_today 强制 false(AMOS 数据本身证明了时效性)
- observation_time 优先使用 AMOS 时间戳
- AI 读取的 city_snapshot.current.raw_metar 来自 AMOS 跑道传感器
优先级:AMOS raw_metar > aviationweather.gov METAR(首尔/釜山)
Reason: AMOS 直连韩国机场系统,延迟更低,更新更快
|
2026-05-10 18:18:40 +08:00 |
|
2569718930@qq.com
|
04b2f0e4a3
|
AMOS 数据接入分析层和 AI 预测判定
问题:AMOS 数据在采集层取出后从未被 _analyze() 读取,AI 无法看到跑道级数据
修复:
- analysis_service.py:_analyze() 新增 AMOS 温度读取优先级
观测来源顺序:结算源 > AMOS跑道传感器 > METAR > MGM > NMC
- AMOS 数据自动覆盖 current.wind_speed_kt、current.pressure_hpa、current.raw_metar
- 输出新增 "amos" 字段携带完整跑道数据(temp_source、runway_temps)
- scan_terminal_service.py:AI prompt 的 current 区块新增 pressure_hpa 和 observation_source
- AI 现在知晓数据来自 AMOS 跑道传感器(observation_source="amos"),可据此判断数据权威性
数据流:
AMOS fetch -> raw["amos"] -> _analyze() -> current.observation_source="amos"
-> result["amos"] -> _build_city_ai_prompt -> city_snapshot.current
-> AI reads runway sensor temp/wind/pressure as authoritative observation
Tested: python -m ruff check ., npx tsc --noEmit
|
2026-05-10 18:16:10 +08:00 |
|
2569718930@qq.com
|
e2bea367a1
|
校准漂移检测增加日志告警 + 更新架构文档
- core.py:drift.drifted=true 时输出 loguru warning,包含 delta% 和 sample 数量
- data-architecture-review.md:标记 2 项误诊(METAR TTL 实际 600s、轮询已有 AbortController 保护)
- 剩余真正待办:校准自动重训练(需算力)、缓存键细化(低优先级)
|
2026-05-10 17:06:43 +08:00 |
|