{title}
{body}
import Link from "next/link"; import { cookies, headers } from "next/headers"; import { LandingAnalytics } from "@/components/landing/LandingAnalytics"; import { LandingHeaderActions, LandingHeroActions, } from "@/components/landing/LandingAuthActions"; import { LANDING_LOCALE_COOKIE, pickLandingLocale, type LandingLocale, } from "@/components/landing/landingLocale"; import type { CityListItem } from "@/lib/dashboard-types"; import { STATIC_CITY_LIST } from "@/lib/static-cities"; const COVERAGE_EN = [ "AMOS 60s runway sensors", "AMSC 180s runway endpoints", "MADIS 300s airport observations", "CoWIN 60s + HKO 600s", "Live chart updates", "Short Telegram alerts", ]; const COVERAGE_ZH = [ "AMOS 60s 跑道传感器", "AMSC 180s 跑道端点", "MADIS 300s 机场观测", "CoWIN 60s + HKO 600s", "网页图表实时更新", "Telegram 简短提醒", ]; const PRO_FEATURES_EN = [ "Settlement-source-first airport, official-station, and runway observations", "DEB blend forecast with model-spread context", "Model-implied distribution and probability estimates", "Intraday windows, deviation metrics, and settlement context", "Paid Telegram group eligibility and alert workflows", "Priority support for subscription and access issues", ]; const PRO_FEATURES_ZH = [ "结算源优先的机场、官方站与跑道实测", "DEB 智能融合预报与模型分歧背景", "模型隐含分布预测与概率估算", "日内观测窗口、偏差度量与结算背景", "付费 Telegram 群准入与提醒工作流", "订阅与准入问题优先支持", ]; const CONTACT_EMAIL = "yhrsc30@gmail.com"; const CONTACT_X_URL = "https://x.com/polyweatheryuan"; const SUPPORTED_CITY_GROUPS: Array<{ descriptionEn: string; descriptionZh: string; include: (city: CityListItem) => boolean; labelEn: string; labelZh: string; }> = [ { labelEn: "Asia-Pacific", labelZh: "亚太", descriptionEn: "China, East Asia, Southeast Asia, South Asia, and Oceania markets.", descriptionZh: "中国、东亚、东南亚、南亚与大洋洲市场。", include: (city) => city.lon >= 60 || city.lon <= -170, }, { labelEn: "Europe / Middle East / Africa", labelZh: "欧洲 / 中东 / 非洲", descriptionEn: "Airport and official-station markets across EMEA.", descriptionZh: "覆盖欧洲、中东和非洲的机场与官方站市场。", include: (city) => city.lon > -30 && city.lon < 60, }, { labelEn: "Americas", labelZh: "美洲", descriptionEn: "North and South American temperature markets.", descriptionZh: "北美与南美温度市场。", include: (city) => city.lon >= -170 && city.lon <= -30, }, ]; const supportedCityGroups = SUPPORTED_CITY_GROUPS.map((group) => ({ ...group, cities: STATIC_CITY_LIST.filter(group.include).sort((left, right) => cityDisplayName(left).localeCompare(cityDisplayName(right), "en"), ), })).filter((group) => group.cities.length > 0); const supportedCityCount = supportedCityGroups.reduce( (total, group) => total + group.cities.length, 0, ); function cityDisplayName(city: CityListItem) { return city.display_name || city.name; } type IconName = | "radar" | "gauge" | "shield" | "cloudSun" | "lineChart" | "bell" | "clock" | "database" | "check" | "arrow"; function LandingIcon({ className, name, size = 16, }: { className?: string; name: IconName; size?: number; }) { const common = { "aria-hidden": true, className, fill: "none", height: size, stroke: "currentColor", strokeLinecap: "round" as const, strokeLinejoin: "round" as const, strokeWidth: 2, viewBox: "0 0 24 24", width: size, }; switch (name) { case "radar": return ( ); case "gauge": return ( ); case "shield": return ( ); case "cloudSun": return ( ); case "lineChart": return ( ); case "bell": return ( ); case "clock": return ( ); case "database": return ( ); case "check": return ( ); case "arrow": return ( ); default: return null; } } function WeatherWorkflowIllustration() { return (
); } async function resolveLandingLocale(queryLocale?: string | null): Promise{isEn ? "A settlement-source-first terminal for temperature markets: live airport/runway observations, DEB, market buckets, and alerts in one workflow." : "面向温度市场的结算源优先终端:机场/跑道实测、DEB、市场温度桶和提醒放在同一个工作流里。"}
{isEn ? "Start with a one-time 3-day trial. Trial access matches Pro except for the paid Telegram group link." : "新用户可先领一次 3 天试用。试用期权益和 Pro 一致,除了不显示付费 Telegram 群链接。"}
{isEn ? "Platform" : "平台能力"}
{body}
{isEn ? "Differentiation" : "差异化卖点"}
{isEn ? "The product is built around the station, runway, and update cadence that affect settlement, then layers DEB, market buckets, and alerting on top." : "产品围绕真正影响结算的站点、跑道和源头频率构建,再叠加 DEB、市场温度桶和提醒工作流。"}
{isEn ? "Product Screenshots" : "产品截图"}
{isEn ? "See what you will use before subscribing: a browser terminal for live temperature evidence, plus short Telegram alerts when runway or settlement signals change." : "订阅前先看清你会用到什么:网页上看实时温度证据;跑道或结算源有变化时,在 Telegram 收到简短提醒。"}
{isEn ? "Data Coverage" : "数据覆盖"}
{isEn ? "PolyWeather follows each source's real update rhythm. The website refreshes the visible charts as new readings arrive, while Telegram keeps alerts short and readable." : "PolyWeather 跟随每个数据源自己的更新节奏。网页图表会补上最新读数,Telegram 只保留短提醒,让你快速知道哪里变了。"}
{isEn ? "Pricing" : "定价"}
{isEn ? "New users receive one 3-day trial. Monthly and quarterly Pro unlock the full entitlement set." : "新用户可领取一次 3 天试用,月付与季度 Pro 解锁完整权益。"}
{isEn ? "Automatically granted once after signup. Trial access matches Pro, except trial accounts do not see the paid Telegram group link." : "注册后自动开通一次,体验核心产品;试用期权益和 Pro 一致,除了不显示付费 Telegram 群链接。"}
{isEn ? "Start trial" : "开始试用"}{isEn ? "Full terminal access, chart guides, advanced context, and paid Telegram group eligibility." : "完整终端权限、读图指南、高级上下文和付费 Telegram 群准入资格。"}
{isEn ? "Referral first month: 20 USDC" : "使用邀请码首月 20 USDC"}
{isEn ? "Not sold as a public product right now. The public site and Telegram workflow remain the supported product surface." : "目前不作为公开产品售卖。当前支持的产品形态仍是网站终端和 Telegram 工作流。"}
{isEn ? "For teams that need shared access, Telegram workflow support, and manual onboarding." : "面向需要共享权限、Telegram 工作流支持和人工开通的团队。"}
{isEn ? "Supported cities" : "当前支持城市"}
{isEn ? "Coverage is generated from the same city list used by the terminal. If your market is not listed, contact us to evaluate the settlement station, source cadence, and alert workflow." : "这里复用终端同一份城市列表生成。未列出的市场可以联系评估结算站、数据源频率和提醒工作流。"}
{isEn ? "Open terminal" : "进入终端"}{isEn ? group.descriptionEn : group.descriptionZh}
{isEn ? "Contact" : "联系"}
{isEn ? "Reach out directly for subscription recovery, Telegram access, city coverage, and product feedback." : "订阅恢复、Telegram 入群、城市覆盖和产品反馈,可以直接联系我。"}