diff --git a/extension/README.md b/extension/README.md index 8fd35c45..87be1c3b 100644 --- a/extension/README.md +++ b/extension/README.md @@ -1,27 +1,31 @@ -# PolyWeather 侧边栏插件(MVP) +# PolyWeather Side Panel -这是一个 Chrome / Edge 侧边栏扩展的 MVP,用于把 PolyWeather 右侧城市卡片移植到浏览器侧边栏中。 +`PolyWeather Side Panel` 是一个面向天气交易场景的 Chrome / Edge 浏览器侧边栏工具。 ## 功能 -- 侧边栏展示: - - 城市选择 - - 风险徽章 - - 城市档案(结算源 / 距离 / 观测更新时间 / 周边站点) - - 今日日内走势(简版 Canvas) - - 多日预报(`DEB` 优先) - - 基础判断卡(方向 / 置信度 / 原因) -- 快捷按钮: - - 今日日内分析 - - 历史对账 - - 打开网站查看更多 -- 自动识别城市: - - 监听当前激活标签页 URL(例如 Polymarket `.../event/highest-temperature-in-ankara-...`) - - 自动将侧边栏城市切换为 URL 对应城市 -- 设置页可配置: - - 网站基础地址 - - API 基础地址 - - Bearer Token(可选) +1. 自动识别当前 Polymarket 页面中的城市,也支持手动切换。 +2. 展示城市档案:结算站点、站点距离、观测更新时间、周边站点数量。 +3. 展示今日日内走势(简版):`DEB` 走势与官方观测(`METAR / HKO / CWA`)对照,可悬停查看时间与温度。 +4. 展示多日最高温预报(简版),当前以 `DEB` 优先。 +5. 支持一键刷新,强制拉取最新温度数据。 +6. 支持本地缓存,提升打开速度;刷新时自动更新缓存。 +7. 支持一键跳转到完整网站分析页面。 + +## 数据说明 + +- 香港使用 `HKO`(香港天文台)结算源。 +- 其他城市按配置使用 `METAR / NOAA / 官方数据源`。 + +## 权限说明 + +- `tabs`:用于识别当前活动标签页 URL 并自动匹配城市。 +- `storage`:用于保存插件配置与本地缓存,仅存储在本地浏览器。 +- `sidePanel`:用于在浏览器侧边栏展示界面。 + +## 隐私说明 + +本扩展不要求用户登录,不收集个人身份信息,不上传浏览历史,仅在必要时请求天气接口数据以完成展示功能。 ## 本地安装(开发者模式) @@ -43,7 +47,7 @@ ## 说明 -- 当前版本仍是轻量 MVP,重点是“监控 + 基础判断 + 导流回站”,未接入支付链路。 +- 当前版本仍是轻量产品,重点是“监控 + 基础判断 + 导流回站”,未接入支付链路。 - 若你的 API 做了严格鉴权,请先在设置页填写 token 再使用。 - 台北现在按 `NOAA RCTP` 结算参考展示。 - 插件不会承载完整分析;完整结构判断、历史对账和更多信号仍以主站为准。 diff --git a/extension/manifest.json b/extension/manifest.json index 0668c3da..ea742d85 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 3, "name": "PolyWeather Side Panel", - "description": "PolyWeather 右侧城市卡片(浏览器侧边栏)", - "version": "0.1.6", + "description": "Weather side panel for Polymarket: auto-detect city, city profile, compact intraday DEB vs official observations, multi-day highs, refresh, cache, and quick jump to full analysis.", + "version": "0.1.7", "icons": { "16": "icon-16.png", "32": "icon-32.png", diff --git a/frontend/components/dashboard/DetailPanel.tsx b/frontend/components/dashboard/DetailPanel.tsx index 9aec2eb1..57dbaa03 100644 --- a/frontend/components/dashboard/DetailPanel.tsx +++ b/frontend/components/dashboard/DetailPanel.tsx @@ -11,6 +11,7 @@ import { useI18n } from "@/hooks/useI18n"; import { getOfficialSourceLinks } from "@/lib/dashboard-official-sources"; import { getCityScenery } from "@/lib/dashboard-scenery"; import { CityDetail } from "@/lib/dashboard-types"; +import { getTodayPolymarketUrl } from "@/lib/polymarket-market-links"; import { getCityProfileStats, getRiskBadgeLabel, @@ -167,6 +168,10 @@ export function DetailPanel() { () => (detail ? getOfficialSourceLinks(detail) : []), [detail], ); + const marketUrl = useMemo( + () => getTodayPolymarketUrl(detail, locale), + [detail, locale], + ); const scenery = getCityScenery(detail?.name); const blurActiveElement = () => { if (typeof document === "undefined") return; @@ -280,6 +285,21 @@ export function DetailPanel() { {getRiskBadgeLabel(panelRiskLevel, locale)}
+ {marketUrl ? ( + + {locale === "en-US" ? "Open Market" : "打开 Polymarket"} + + ) : null}