diff --git a/README.md b/README.md index 6de14cf6..450c25fe 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Public docs center: `/docs/intro` on the main site (bilingual product documentat ## Product Status (2026-05-11) -- Subscription live: `Pro Monthly 5 USDC`. +- Subscription live: `Pro Monthly 10 USDC`. - Points system live: earn via group chat, welcome bonus (+20), first-message-of-day bonus (+2), weekly participation rewards. - `/city` and `/deb` now free (daily cap 10 each); points redeemable for payment discount (`500 pts = 1 USDC`, max `3 USDC`). - Weekly leaderboard rewards restructured: smaller point bonuses for winners (200/100/50), all active users receive participation rewards. diff --git a/README_ZH.md b/README_ZH.md index 436f3e58..d0b74a7a 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -16,7 +16,7 @@ ## 当前产品状态(2026-05-11) -- 已上线订阅制:`Pro 月付 5 USDC`。 +- 已上线订阅制:`Pro 月付 10 USDC`。 - 已上线积分体系:群内发言赚分 + 首次发言欢迎奖励 (+20) + 每日首条消息奖励 (+2) + 每周全员参与奖。 - `/city` 与 `/deb` 已改为免费(每日各 10 次);积分可用于支付抵扣(`500 分 = 1 USDC`,最多抵 `3 USDC`)。 - 周榜奖励已改造:降低赢家积分加成 (200/100/50),所有周活跃用户均享参与奖。 diff --git a/docs/COMMERCIALIZATION.md b/docs/COMMERCIALIZATION.md index 55d93e0f..99d89743 100644 --- a/docs/COMMERCIALIZATION.md +++ b/docs/COMMERCIALIZATION.md @@ -18,7 +18,7 @@ PolyWeather 是面向温度结算场景的气象决策层,不是通用天气 | 能力 | 状态 | 备注 | | :-- | :-- | :-- | | 登录注册(Google + 邮箱) | 已上线 | Supabase 鉴权 | -| 订阅套餐(Pro 月付) | 已上线 | `5 USDC / 30天` | +| 订阅套餐(Pro 月付) | 已上线 | `10 USDC / 30天` | | 积分抵扣 | 已上线 | `500分=1U`,最多 `3U` | | 合约支付 | 已上线 | Polygon,USDC + USDC.e | | 支付自动确认 | 已上线 | Event Loop + Confirm Loop | @@ -38,7 +38,7 @@ PolyWeather 是面向温度结算场景的气象决策层,不是通用天气 ## 4. 收费与积分规则(默认) -- 套餐:`pro_monthly`(5 USDC / 30 天) +- 套餐:`pro_monthly`(10 USDC / 30 天) - 抵扣:500 积分抵 1 USDC,最高抵 3 USDC - 实付下限:2 USDC(当积分满额时) diff --git a/docs/deep-research-report.md b/docs/deep-research-report.md index 08007fcb..5a93d51a 100644 --- a/docs/deep-research-report.md +++ b/docs/deep-research-report.md @@ -13,7 +13,7 @@ DEB(Dynamic Error Balancing)基于过去 N 天模型误差(MAE)倒数加 趋势/概率引擎在 `trend_engine.py` 中实现:综合“集合预报区间→σ/μ→高温窗口→死盘判定→温度桶概率分布→边界提示”等,用于 bot 展示与 web 结构化数据输出。 **城市决策层(Scan Terminal / AI 机场报文解读)**:地图点击城市后加入城市决策卡,前端拉取 full detail、多模型区间、最新 METAR,并通过 `/api/scan/terminal/ai-city/stream` 生成城市级 AI 解读。该解读由 `final_judgment`、`metar_read`、`reasoning`、`model_cluster_note`、`risks` 与原始 METAR 证据组成;最高温中枢优先使用 AI `predicted_max`,再回退到 DEB、多模型中心、日内 pace 或当前实测。 **市场层(Polymarket 行情对照)**:只读模式从 Gamma API 发现市场、从 CLOB(`py-clob-client` 或 REST 回退)读取价格/盘口,并用完整 `all_buckets` 对目标温度桶做 exact/range/“or higher”/“or lower” 严格匹配,计算“模型-市场差”(模型概率 − 市场隐含概率)生成信号标签。 -**商业化与支付**:订阅(`Pro Monthly 5 USDC`)、积分抵扣、Polygon 链上收款合约(USDC/USDC.e),并提供“事件监听 + 周期确认”的自动补单机制。 +**商业化与支付**:订阅(`Pro Monthly 10 USDC`)、积分抵扣、Polygon 链上收款合约(USDC/USDC.e),并提供“事件监听 + 周期确认”的自动补单机制。 **支持的数据集/数据源**:项目不是传统“训练数据集+模型训练”的机器学习仓库;其“数据集”本质是外部实时/预报 API 与站点观测数据。对外部数据的使用需要遵守来源方的访问与速率限制,例如 AviationWeather Data API 明确限制请求频率(含每分钟请求上限/建议降低频率与使用缓存文件)。 **许可证**:仓库根目录 `LICENSE` 当前为 `AGPL-3.0-only`。同时 README 与策略文档明确:品牌、商标、生产私有数据与运营策略不随代码许可证一并授权。 (插图:项目 README 中包含产品截图,可用于快速理解信息架构与 UI 形态) diff --git a/docs/product-review-jun-2026.md b/docs/product-review-jun-2026.md index 486f623b..0003f243 100644 --- a/docs/product-review-jun-2026.md +++ b/docs/product-review-jun-2026.md @@ -12,7 +12,7 @@ PolyWeather 是一个面向天气衍生品交易者的气象情报平台。核 |------|------|------| | 免费 | 交互式全球天气地图 + 城市简报 | 无需登录 | | Pro 试用 | 3 天全功能 | 注册后自动获得 | -| Pro 订阅 | 城市决策卡(AI 机场报文 + 模型证据 + 市场层)、日内分析、历史对账、未来预报 | 5 USDC/月(积分抵扣最多 3 USDC) | +| Pro 订阅 | 城市决策卡(AI 机场报文 + 模型证据 + 市场层)、日内分析、历史对账、未来预报 | 10 USDC/月(积分抵扣最多 3 USDC) | ### 页面结构(9 个路由) diff --git a/frontend/app/subscription-help/SubscriptionHelpClient.tsx b/frontend/app/subscription-help/SubscriptionHelpClient.tsx index d587dd0e..01b5449e 100644 --- a/frontend/app/subscription-help/SubscriptionHelpClient.tsx +++ b/frontend/app/subscription-help/SubscriptionHelpClient.tsx @@ -27,8 +27,8 @@ const FAQ_ITEMS = [ { q_zh: "当前订阅价格是多少?", q_en: "What is the current subscription price?", - a_zh: "目前仅提供月付:5 USDC / 30 天。", - a_en: "Monthly plan only: 5 USDC / 30 days.", + a_zh: "目前仅提供月付:10 USDC / 30 天。", + a_en: "Monthly plan only: 10 USDC / 30 days.", }, { q_zh: "积分如何抵扣?", @@ -55,7 +55,7 @@ export function SubscriptionHelpClient() { ? "Complete subscription rules and payment guide." : "这里是完整的订阅规则和支付说明。你可以先在页面内绑定钱包,再直接开通 Pro。", priceLabel: isEn ? "Price" : "订阅价格", - priceText: "5 USDC / 30 " + (isEn ? "Days" : "天"), + priceText: "10 USDC / 30 " + (isEn ? "Days" : "天"), discountLabel: isEn ? "Points Discount" : "积分抵扣", discountText: isEn ? "Up to 3 USDC off" : "最多抵 3U", communityLabel: isEn ? "Community Points" : "社群积分", diff --git a/frontend/components/account/AccountCenter.tsx b/frontend/components/account/AccountCenter.tsx index 6adb2f4c..0b6544df 100644 --- a/frontend/components/account/AccountCenter.tsx +++ b/frontend/components/account/AccountCenter.tsx @@ -2522,7 +2522,7 @@ export function AccountCenter() { setPaymentMethodTab("manual"); setShowOverlay(false); setPaymentInfo( - `手动转账订单已创建:请在 Polygon 网络转 ${direct.amount_usdc} ${direct.token_symbol || selectedTokenLabel} 到 ${shortAddress(direct.receiver_address)},完成后提交 tx hash。`, + `手动转账订单已创建:请在 Polygon 网络转 ${direct.amount_usdc} ${direct.token_symbol || selectedTokenLabel} 到 ${direct.receiver_address},请在下方【手动转账】面板中查看详情并复制地址,完成后提交 tx hash。`, ); trackAppEvent("checkout_started", { entry: "account_center_manual_transfer", diff --git a/src/auth/telegram_group_pricing.py b/src/auth/telegram_group_pricing.py index 37c1cdfe..7ac0de1e 100644 --- a/src/auth/telegram_group_pricing.py +++ b/src/auth/telegram_group_pricing.py @@ -98,7 +98,7 @@ class TelegramGroupPricing: os.getenv("TELEGRAM_CHAT_ID"), ) self.group_chat_ids = dedicated_group_chat_ids or fallback_group_chat_ids - self.member_price = _decimal_env("POLYWEATHER_GROUP_MEMBER_PRICE_USDC", "5") + self.member_price = _decimal_env("POLYWEATHER_GROUP_MEMBER_PRICE_USDC", "10") self.public_price = _decimal_env("POLYWEATHER_PUBLIC_PRICE_USDC", "10") self.timeout_sec = max( 2, diff --git a/tests/test_direct_payment.py b/tests/test_direct_payment.py index 5bca2f9b..b72b07f9 100644 --- a/tests/test_direct_payment.py +++ b/tests/test_direct_payment.py @@ -11,6 +11,7 @@ def _setup_env(monkeypatch, tmp_path): '[{"code":"usdc_e","address":"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174","decimals":6,"receiver_contract":"0xeD2f13Aa5fF033c58FB436E178451Cd07f693f32","is_default":true}]', ) monkeypatch.setenv("POLYWEATHER_DB_PATH", str(tmp_path / "payments.db")) + monkeypatch.delenv("POLYWEATHER_PAYMENT_DIRECT_RECEIVER_ADDRESS", raising=False) def test_direct_intent_does_not_require_bound_wallet(monkeypatch, tmp_path): diff --git a/tests/test_payments_runtime.py b/tests/test_payments_runtime.py index fafb9838..11a660d8 100644 --- a/tests/test_payments_runtime.py +++ b/tests/test_payments_runtime.py @@ -18,6 +18,7 @@ def _payment_env(monkeypatch, tmp_path): '[{"code":"usdc_e","address":"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174","decimals":6,"receiver_contract":"0xeD2f13Aa5fF033c58FB436E178451Cd07f693f32","is_default":true}]', ) monkeypatch.setenv("POLYWEATHER_DB_PATH", str(tmp_path / "payments.db")) + monkeypatch.delenv("POLYWEATHER_PAYMENT_DIRECT_RECEIVER_ADDRESS", raising=False) def test_payment_runtime_state_and_audit_event_roundtrip(tmp_path): diff --git a/web/services/ops_api.py b/web/services/ops_api.py index b5eca8c4..495139cb 100644 --- a/web/services/ops_api.py +++ b/web/services/ops_api.py @@ -292,6 +292,7 @@ _EDITABLE_CONFIG_KEYS: dict[str, str] = { "POLYWEATHER_PUBLIC_PRICE_USDC": "公开月费 (USDC)", "POLYWEATHER_PAYMENT_POINTS_PER_USDC": "积分兑换汇率 (积分/USDC)", "POLYWEATHER_PAYMENT_POINTS_MAX_DISCOUNT_USDC": "积分最高抵扣金额 (USDC)", + "POLYWEATHER_PAYMENT_DIRECT_RECEIVER_ADDRESS": "手动转账收款钱包地址", }