2026-03-20 19:07:11 +08:00
|
|
|
|
# PolyWeather 前端
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
PolyWeather Pro 的生产前端工程。
|
2026-03-06 19:10:05 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
线上地址:
|
|
|
|
|
|
- [https://polyweather-pro.vercel.app/](https://polyweather-pro.vercel.app/)
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 技术栈
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-06 19:10:05 +08:00
|
|
|
|
- Next.js App Router
|
2026-03-14 10:53:53 +08:00
|
|
|
|
- React + Tailwind
|
|
|
|
|
|
- Leaflet + Chart.js
|
|
|
|
|
|
- Supabase Auth
|
2026-03-20 19:07:11 +08:00
|
|
|
|
- WalletConnect + 浏览器 EVM 钱包
|
2026-03-06 19:10:05 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 运行模型
|
2026-03-06 19:10:05 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
1. 浏览器 -> Next 应用(`frontend`)
|
|
|
|
|
|
2. Next Route Handlers(`/api/*`)-> FastAPI 后端
|
|
|
|
|
|
3. FastAPI -> 分析服务 / 支付服务
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 本地开发
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
cp .env.example .env.local
|
|
|
|
|
|
npm install
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-20 22:00:02 +08:00
|
|
|
|
## Vercel 最小部署配置
|
|
|
|
|
|
|
|
|
|
|
|
只跑看板和基础鉴权时,先填这 4 项:
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-06 19:10:05 +08:00
|
|
|
|
```env
|
|
|
|
|
|
POLYWEATHER_API_BASE_URL=https://<your-fastapi-host>
|
2026-03-20 22:00:02 +08:00
|
|
|
|
NEXT_PUBLIC_SUPABASE_URL=https://<your-supabase-project>.supabase.co
|
|
|
|
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=<your-anon-key>
|
2026-03-14 10:53:53 +08:00
|
|
|
|
POLYWEATHER_AUTH_ENABLED=true
|
2026-03-06 08:41:19 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-20 22:00:02 +08:00
|
|
|
|
建议显式补:
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
|
|
|
|
|
```env
|
2026-03-20 22:00:02 +08:00
|
|
|
|
POLYWEATHER_AUTH_REQUIRED=true
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果你只是开放游客浏览,可改成:
|
|
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
|
POLYWEATHER_AUTH_ENABLED=false
|
|
|
|
|
|
POLYWEATHER_AUTH_REQUIRED=false
|
2026-03-14 10:53:53 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-20 22:00:02 +08:00
|
|
|
|
## 可选环境变量
|
|
|
|
|
|
|
|
|
|
|
|
仅在对应功能启用时填写:
|
2026-03-14 10:53:53 +08:00
|
|
|
|
|
|
|
|
|
|
```env
|
2026-03-20 22:00:02 +08:00
|
|
|
|
# 看板分享令牌
|
|
|
|
|
|
POLYWEATHER_DASHBOARD_ACCESS_TOKEN=
|
|
|
|
|
|
|
|
|
|
|
|
# 前端 API 转发到后端时使用的共享令牌
|
|
|
|
|
|
POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN=
|
|
|
|
|
|
|
|
|
|
|
|
# 钱包支付
|
|
|
|
|
|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=
|
|
|
|
|
|
NEXT_PUBLIC_WALLETCONNECT_POLYGON_RPC_URL=https://polygon-bor-rpc.publicnode.com
|
|
|
|
|
|
|
|
|
|
|
|
# 社群入口
|
2026-03-14 10:53:53 +08:00
|
|
|
|
NEXT_PUBLIC_TELEGRAM_GROUP_URL=https://t.me/<your_group>
|
2026-03-20 22:00:02 +08:00
|
|
|
|
NEXT_PUBLIC_TELEGRAM_BOT_URL=https://t.me/WeatherQuant_bot
|
2026-03-12 12:01:29 +08:00
|
|
|
|
```
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 22:00:02 +08:00
|
|
|
|
更完整的 Vercel 配置说明见:
|
|
|
|
|
|
- [docs/FRONTEND_DEPLOYMENT_ZH.md](/E:/web/PolyWeather/docs/FRONTEND_DEPLOYMENT_ZH.md)
|
|
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 路由处理器
|
2026-03-06 19:10:05 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
天气:
|
2026-03-14 10:53:53 +08:00
|
|
|
|
|
2026-03-06 08:41:19 +08:00
|
|
|
|
- `GET /api/cities`
|
2026-03-06 19:10:05 +08:00
|
|
|
|
- `GET /api/city/[name]`
|
2026-03-09 10:53:23 +08:00
|
|
|
|
- `GET /api/city/[name]/summary`
|
2026-03-12 12:01:29 +08:00
|
|
|
|
- `GET /api/city/[name]/detail`
|
2026-03-06 19:10:05 +08:00
|
|
|
|
- `GET /api/history/[name]`
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
鉴权:
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-14 10:53:53 +08:00
|
|
|
|
- `GET /api/auth/me`
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
支付:
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-14 10:53:53 +08:00
|
|
|
|
- `GET /api/payments/config`
|
|
|
|
|
|
- `GET /api/payments/wallets`
|
|
|
|
|
|
- `POST /api/payments/wallets/challenge`
|
|
|
|
|
|
- `POST /api/payments/wallets/verify`
|
|
|
|
|
|
- `POST /api/payments/intents`
|
|
|
|
|
|
- `GET /api/payments/intents/[intentId]`
|
|
|
|
|
|
- `POST /api/payments/intents/[intentId]/submit`
|
|
|
|
|
|
- `POST /api/payments/intents/[intentId]/confirm`
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 缓存行为
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
- `cities` / `summary` / `history`:`ETag + Cache-Control`
|
|
|
|
|
|
- `summary?force_refresh=true`:`no-store`
|
|
|
|
|
|
- 支付相关路由:`no-store`
|
2026-03-12 12:01:29 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
## 开源边界说明
|
2026-03-09 04:41:24 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
此前端仓库包含通用产品界面和标准支付体验。
|
|
|
|
|
|
商业策略调优、私有运营流程和敏感生产参数不在公开文档范围内。
|
2026-03-06 08:41:19 +08:00
|
|
|
|
|
2026-03-20 19:07:11 +08:00
|
|
|
|
详见根目录策略文档:`docs/OPEN_CORE_POLICY.md`
|
2026-03-06 19:10:05 +08:00
|
|
|
|
|
2026-03-20 22:00:02 +08:00
|
|
|
|
最后更新:`2026-03-20`
|