### Build and Run Development Server
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-05-25-terminal-continent-grouping-plan.md
Commands to build the project and start the development server for verification.
```bash
cd frontend && npm run build
```
```bash
cd frontend && npm run dev
```
--------------------------------
### GET /api/ops/payments/incidents
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Retrieve payment incidents.
```APIDOC
## GET /api/ops/payments/incidents
### Description
Retrieve payment incidents, specifically those with status payment_intent_failed. Used for troubleshooting payment issues.
### Method
GET
### Endpoint
/api/ops/payments/incidents
### Parameters
#### Query Parameters
- **reason** (string) - Optional - Filter by reason: receiver_mismatch, sender_mismatch, event_mismatch, or tx_reverted.
```
--------------------------------
### GET /api/cities
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
Retrieves a list of available cities.
```APIDOC
## GET /api/cities
### Description
Retrieves a list of available cities for weather data.
### Method
GET
### Endpoint
/api/cities
```
--------------------------------
### Run Frontend Business and Build Checks
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-05-27-redis-stream-realtime-event-architecture.md
Execute frontend business logic tests, type checking, and build processes.
```bash
cd frontend
npm run test:business
npm run typecheck
npm run build
```
--------------------------------
### GET /api/ops/leaderboard/weekly
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Retrieve the weekly points leaderboard.
```APIDOC
## GET /api/ops/leaderboard/weekly
### Description
Fetch the current weekly points leaderboard.
### Method
GET
### Endpoint
/api/ops/leaderboard/weekly
```
--------------------------------
### Run backend linting and testing
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-06-23-deb-training-settlement-worker.md
Execute static analysis and unit tests to ensure service integrity before deployment.
```bash
python -m ruff check .
```
```bash
python -m pytest tests/test_training_settlement_service.py tests/test_deployment_runtime_config.py tests/test_web_observability.py -q
```
--------------------------------
### GET /api/payments/config
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/SUPABASE_SETUP_ZH.md
Checks the payment configuration status.
```APIDOC
## GET /api/payments/config
### Description
Confirms if payments are enabled and configured.
### Method
GET
### Endpoint
/api/payments/config
```
--------------------------------
### 配置运行态环境变量
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/README_ZH.md
建议将运行数据目录配置在仓库外,以避免 Git 操作冲突。
```env
POLYWEATHER_RUNTIME_DATA_DIR=/var/lib/polyweather
POLYWEATHER_DB_PATH=/var/lib/polyweather/polyweather.db
POLYWEATHER_STATE_STORAGE_MODE=sqlite
POLYWEATHER_EVENT_STORE=redis
POLYWEATHER_REDIS_URL=redis://polyweather_redis:6379/0
POLYWEATHER_REDIS_STREAM_MAXLEN=50000
POLYWEATHER_REDIS_REQUIRED=true
```
--------------------------------
### GET /healthz
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/MONITORING_ZH.md
Returns the liveness status of the service.
```APIDOC
## GET /healthz
### Description
Returns the liveness status of the service.
### Method
GET
### Endpoint
/healthz
### Response
#### Success Response (200)
- **status** (string) - The status of the service, returns "ok".
```
--------------------------------
### Run SSE Replay and Factory Tests
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-05-27-redis-stream-realtime-event-architecture.md
Execute tests verifying the store factory selection and SSE replay functionality.
```bash
python -m pytest tests/test_sse_replay.py tests/test_realtime_event_store_factory.py -q
```
--------------------------------
### GET /api/city/[name]
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
Retrieves information for a specific city.
```APIDOC
## GET /api/city/[name]
### Description
Retrieves detailed information for a specific city by name.
### Method
GET
### Endpoint
/api/city/[name]
### Parameters
#### Path Parameters
- **name** (string) - Required - The name of the city.
```
--------------------------------
### 执行运行时配置校验
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/CONFIGURATION_ZH.md
在不启动服务的情况下,使用脚本检查指定组件的配置有效性。
```bash
python scripts/validate_runtime_env.py --component web
python scripts/validate_runtime_env.py --component bot
```
--------------------------------
### GET /api/ops/memberships
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Retrieve a list of currently active memberships.
```APIDOC
## GET /api/ops/memberships
### Description
Get a list of currently active memberships, deduplicated by user with the latest expiration date retained.
### Method
GET
### Endpoint
/api/ops/memberships
```
--------------------------------
### Implement Responsive Main Layout
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-05-25-terminal-continent-grouping-plan.md
Wrap the main content in a responsive container that switches between mobile tabs/cards and desktop grid layouts.
```tsx
{/* Mobile layout */}
{mobileActiveGroup?.rows.map((row) => (
))}
{/* Desktop layout (existing 3-column grid) */}
{/* ... existing 3 columns unchanged ... */}
```
--------------------------------
### GET /healthz
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Performs a basic health check of the system.
```APIDOC
## GET /healthz
### Description
Performs a basic health check of the system.
### Method
GET
### Endpoint
/healthz
```
--------------------------------
### Project Operational Commands
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/CLAUDE.md
Standard commands for managing the frontend, backend, testing, and deployment processes.
```bash
# Frontend
cd frontend
npm run dev # dev server :3000
npm run build # production build
npm run typecheck # tsc --noEmit
npm run test:business # 19 business state tests
# Backend
uvicorn web.app:app --reload --host 0.0.0.0 --port 8000
python bot_listener.py # Telegram bot
# Python tests
python -m pytest tests/
python -m pytest tests/test_supabase_entitlement.py
# Lint
ruff check .
ruff format .
# Docker (VPS)
docker compose down && docker compose up -d --build
```
--------------------------------
### GET /api/payments/intents/{id}
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/SUPABASE_SETUP_ZH.md
Retrieves the status of a payment intent.
```APIDOC
## GET /api/payments/intents/{id}
### Description
Polls the status of a payment intent.
### Method
GET
### Endpoint
/api/payments/intents/{id}
```
--------------------------------
### 启动服务与监控端点测试
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/MONITORING_ZH.md
使用 docker compose 启动服务,并通过 curl 测试内置的监控与状态端点。
```bash
docker compose up -d
```
```bash
curl http://127.0.0.1:8000/healthz
curl http://127.0.0.1:8000/api/system/status
curl http://127.0.0.1:8000/api/system/cache-status
curl http://127.0.0.1:8000/metrics
```
--------------------------------
### 使用脚本升级版本号
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/RELEASE.md
通过脚本自动更新版本号,支持指定版本类型或具体版本号。
```bash
python scripts/bump_version.py patch
```
```bash
python scripts/bump_version.py minor
python scripts/bump_version.py major
python scripts/bump_version.py 1.8.0
```
--------------------------------
### GET /api/auth/me
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
Retrieves the current authenticated user's information.
```APIDOC
## GET /api/auth/me
### Description
Retrieves the current authenticated user's profile information.
### Method
GET
### Endpoint
/api/auth/me
```
--------------------------------
### Frontend Minimal Configuration
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/CONFIGURATION_ZH.md
Essential environment variables required for the frontend application to connect to backend and Supabase services.
```env
POLYWEATHER_API_BASE_URL=https://your-backend.example.com
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
POLYWEATHER_AUTH_ENABLED=true
POLYWEATHER_AUTH_REQUIRED=true
NEXT_PUBLIC_POLYWEATHER_APP_ANALYTICS=false
NEXT_PUBLIC_POLYWEATHER_WEB_VITALS=false
NEXT_PUBLIC_POLYWEATHER_EAGER_CITY_SUMMARIES=false
```
--------------------------------
### GET /api/city/[name]/summary
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
Retrieves a summary for a specific city.
```APIDOC
## GET /api/city/[name]/summary
### Description
Retrieves a summary for a specific city.
### Method
GET
### Endpoint
/api/city/[name]/summary
### Parameters
#### Path Parameters
- **name** (string) - Required - The name of the city.
```
--------------------------------
### 配置 WeatherNext 2 环境变量
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/weathernext2-integration.md
设置 WeatherNext 2 的启用状态、数据路径及 GCS 访问凭据。需确保相关路径可写且 GCP 凭据具备访问权限。
```bash
WEATHERNEXT2_ENABLED=1
WEATHERNEXT2_BACKEND=gcs_zarr
WEATHERNEXT2_DATA_ROOT=/app/data/weathernext2
WEATHERNEXT2_CITY_HIGHS_PATH=/app/data/weathernext2_city_highs.json
WEATHERNEXT2_MODEL_DIR=/app/data/models/weathernext2_calibrator
WEATHERNEXT2_WORKER_INTERVAL_SEC=21600
WEATHERNEXT2_CACHE_TTL_SEC=21600
WEATHERNEXT2_GCS_ZARR_URI=gs://weathernext/weathernext_2_0_0/zarr
WEATHERNEXT2_MEAN_GCS_ZARR_URI=gs://weathernext/weathernext_2_0_0_mean/zarr
GOOGLE_APPLICATION_CREDENTIALS=/app/secrets/gcp-sa.json
```
--------------------------------
### GET /api/ops/users
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Retrieve user information by Telegram ID, username, or email.
```APIDOC
## GET /api/ops/users
### Description
Search for users based on their Telegram ID, username, or email address.
### Method
GET
### Endpoint
/api/ops/users
```
--------------------------------
### GET /api/city/[name]/detail
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
Retrieves detailed weather data for a specific city.
```APIDOC
## GET /api/city/[name]/detail
### Description
Retrieves detailed weather data for a specific city.
### Method
GET
### Endpoint
/api/city/[name]/detail
### Parameters
#### Path Parameters
- **name** (string) - Required - The name of the city.
```
--------------------------------
### 前端环境变量配置
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/SUPABASE_SETUP_ZH.md
配置前端 Docker 容器或 .env.local 文件以连接 Supabase 并启用支付相关功能。
```env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
POLYWEATHER_AUTH_ENABLED=true
POLYWEATHER_AUTH_REQUIRED=false
POLYWEATHER_API_BASE_URL=http://:8000
POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN=
# WalletConnect(支持手机钱包扫码)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=
NEXT_PUBLIC_WALLETCONNECT_POLYGON_RPC_URL=https://polygon-bor-rpc.publicnode.com
# Overlay 跳转
NEXT_PUBLIC_TELEGRAM_GROUP_URL=https://t.me/
```
--------------------------------
### GET /api/auth/me
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/SUPABASE_SETUP_ZH.md
Retrieves the current authenticated user's profile and subscription status.
```APIDOC
## GET /api/auth/me
### Description
Retrieves the current user's authentication state and subscription status.
### Method
GET
### Endpoint
/api/auth/me
```
--------------------------------
### Development and Operational Commands
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/AGENTS.md
Commonly used commands for backend, frontend, and Docker management.
```bash
# 后端
ruff check . # lint
ruff format . # 格式化
python -m pytest # 跑全部测试
python -m pytest tests/test_xxx.py # 单个测试文件
uvicorn web.app:app --reload --host 0.0.0.0 --port 8000 # 开发服务器
python bot_listener.py # Telegram 机器人
# 前端 (cd frontend)
npm run dev # 开发服务器 :3000 (含 sync server chunks)
npm run build # 生产构建
npm run typecheck # tsc --noEmit
npm run test:business # Playwright 业务状态测试 (19 个)
npm run lint # next lint
# Docker
docker compose down && docker compose up -d --build
```
--------------------------------
### GET /metrics
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/MONITORING_ZH.md
Returns system metrics in Prometheus text format. Requires operational authentication.
```APIDOC
## GET /metrics
### Description
Returns system metrics in Prometheus text format. Requires operational authentication.
### Method
GET
### Endpoint
/metrics
```
--------------------------------
### Redis Server Configuration
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/specs/2026-05-27-redis-stream-realtime-event-architecture-design.md
Recommended Redis server settings for local VPS deployment to ensure data persistence and memory management.
```text
bind 127.0.0.1
protected-mode yes
appendonly yes
appendfsync everysec
maxmemory 512mb
maxmemory-policy noeviction
```
--------------------------------
### 执行订阅恢复脚本
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/OPS_ADMIN_ZH.md
当支付异常导致订阅未开通时,可使用此脚本根据用户邮箱进行自动对账与恢复。
```bash
python scripts/reconcile_subscription_by_email.py --email
```
--------------------------------
### GET /api/system/cache-status
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/MONITORING_ZH.md
Lists the existence, freshness, and TTL of various cache kinds per city.
```APIDOC
## GET /api/system/cache-status
### Description
Lists the existence, freshness, and TTL of various cache kinds per city.
### Method
GET
### Endpoint
/api/system/cache-status
```
--------------------------------
### 查看支付补单日志
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/README_ZH.md
通过 Docker 日志过滤支付相关的事件循环信息。
```bash
docker compose logs -f polyweather | egrep "payment event loop started|payment confirm loop started|payment auto-confirmed"
```
--------------------------------
### GET /api/events
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Provides a real-time event stream for weather observations using server-sent events (SSE).
```APIDOC
## GET /api/events
### Description
Browser entry point for real-time charts using text/event-stream.
### Method
GET
### Endpoint
/api/events
### Parameters
#### Query Parameters
- **cities** (string) - Optional - Comma-separated list of cities; empty means subscribe to all.
- **since_revision** (int) - Optional - Revision number for reconnection replay.
- **replay_limit** (int) - Optional - Default 500, backend-enforced limit.
### Response
#### Success Response (200)
- **connected** - Connection established, includes latest_revision.
- **city_observation_patch.v1** - Standard real-time observation patch.
- **resync_required** - Frontend should rebuild from HTTP snapshot.
- **heartbeat** - Keep-alive signal.
```
--------------------------------
### 检查版本同步结果
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/RELEASE.md
执行同步脚本并查看变更差异。
```bash
python scripts/sync_version.py
git diff
```
--------------------------------
### 检查系统健康状态
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/README_ZH.md
通过 API 接口验证系统健康、状态及指标。
```bash
curl http://127.0.0.1:8000/healthz
curl http://127.0.0.1:8000/api/system/status
curl http://127.0.0.1:8000/metrics
```
--------------------------------
### GET /api/system/status
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/MONITORING_ZH.md
Provides a summary of the system status, including database, feature flags, and event storage.
```APIDOC
## GET /api/system/status
### Description
Provides a summary of the system status, including database, feature flags, and event storage.
### Method
GET
### Endpoint
/api/system/status
```
--------------------------------
### 配置 Cloudflare 缓存规则脚本
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/CLOUDFLARE_FREE_CACHE_ZH.md
设置环境变量并运行 Python 脚本以同步或应用 Cloudflare 缓存规则。
```powershell
$env:CLOUDFLARE_API_TOKEN="<具有 Cache Settings Edit 权限的 token>"
$env:CLOUDFLARE_ZONE_ID=""
python scripts/configure_cloudflare_free.py
python scripts/configure_cloudflare_free.py --apply
```
--------------------------------
### Feedback API Response JSON
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/specs/2026-06-08-feedback-reward-account-detail-design.md
The expected JSON structure for the GET /api/feedback endpoint, including new reward-related fields.
```json
{
"feedback": [
{
"id": 123,
"status": "resolved",
"message": "Hong Kong COWIN reading looked stale",
"reward_points": 300,
"reward_reason": "Valid data freshness report",
"rewarded_at": "2026-06-08T12:00:00",
"reward_status": "granted"
}
]
}
```
--------------------------------
### GET /api/city/{name}/detail
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/API_ZH.md
Retrieves aggregated weather details for a specific city, including market scan data and meteorological analysis.
```APIDOC
## GET /api/city/{name}/detail
### Description
Provides aggregated weather details including market scan, probability distributions, and intraday meteorological signals.
### Method
GET
### Endpoint
/api/city/{name}/detail
### Parameters
#### Path Parameters
- **name** (string) - Required - The name of the city.
#### Query Parameters
- **force_refresh** (boolean) - Optional - Force refresh flag.
- **market_slug** (string) - Optional - Specific market slug.
- **target_date** (string) - Optional - Date in YYYY-MM-DD format.
### Response
#### Success Response (200)
- **market_scan** (object) - Market availability and signal data.
- **probabilities** (object) - DEB engine probability distributions.
- **intraday_meteorology** (object) - Professional meteorological analysis.
- **deb.hourly_consensus** (object) - Hourly path consensus.
- **peak** (object) - Peak window status.
- **vertical_profile_signal** (object) - Upper-air structure signals.
- **taf.signal** (object) - TAF signal analysis (non-HK airports).
```
--------------------------------
### 执行数据归档脚本
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/CONFIGURATION_ZH.md
使用 Python 脚本将实时事件归档至 Cloudflare R2。支持通过 --dry-run 参数进行试运行。
```bash
python scripts/archive_realtime_events_to_r2.py --date 2026-06-16 --dry-run
python scripts/archive_realtime_events_to_r2.py --date 2026-06-16
```
--------------------------------
### Realtime Health Monitoring JSON Schema
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/specs/2026-05-27-redis-stream-realtime-event-architecture-design.md
Example JSON structure for exposing realtime system health metrics via the health endpoint.
```json
{
"realtime": {
"store": "redis",
"redis_connected": true,
"stream_len": 43210,
"latest_revision": 123456,
"oldest_revision": 80200,
"subscriber_connected": true,
"sse_connections": 9
}
}
```
--------------------------------
### Backend Minimal Configuration
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/CONFIGURATION_ZH.md
Core environment variables for backend runtime, database, Redis event store, and administrative settings.
```env
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...
POLYWEATHER_RUNTIME_DATA_DIR=/var/lib/polyweather
POLYWEATHER_DB_PATH=/var/lib/polyweather/polyweather.db
POLYWEATHER_STATE_STORAGE_MODE=sqlite
POLYWEATHER_EVENT_STORE=redis
POLYWEATHER_REDIS_URL=redis://polyweather_redis:6379/0
POLYWEATHER_REDIS_STREAM_MAXLEN=50000
POLYWEATHER_REDIS_REQUIRED=true
UID=1000
GID=1000
POLYWEATHER_AUTH_ENABLED=true
POLYWEATHER_AUTH_REQUIRED=false
POLYWEATHER_OPS_ADMIN_EMAILS=yhrsc30@gmail.com
TAF_CACHE_TTL_SEC=900
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
POLYWEATHER_BACKEND_ENTITLEMENT_TOKEN=...
POLYWEATHER_BACKEND_URL=http://polyweather_web:8000
```
--------------------------------
### Configure Wallet Payment Integration
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/FRONTEND_DEPLOYMENT_ZH.md
Build-time variables required to enable wallet payment features.
```text
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=
NEXT_PUBLIC_WALLETCONNECT_POLYGON_RPC_URL=https://polygon-bor-rpc.publicnode.com
NEXT_PUBLIC_PAYMENT_ALLOWED_HOSTS=polyweather.top,www.polyweather.top
```
--------------------------------
### 查询支付运行态
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/README_ZH.md
获取支付系统的当前运行状态。
```bash
curl http://127.0.0.1:8000/api/payments/runtime
```
--------------------------------
### 配置支付 RPC 节点
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/payments/PAYMENT_AUDIT_ZH.md
通过环境变量配置默认及多链 RPC 节点,支持多节点容灾切换。
```env
POLYWEATHER_PAYMENT_RPC_URLS=https://polygon-rpc.com,https://polygon-bor-rpc.publicnode.com
POLYWEATHER_PAYMENT_RPC_URLS_BY_CHAIN_JSON={"137":["https://polygon-rpc.com","https://polygon-bor-rpc.publicnode.com"],"1":["https://ethereum-rpc.example"]}
```
--------------------------------
### Project Directory Structure
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/AGENTS.md
Overview of the file system layout for the PolyWeather project.
```text
E:\web\PolyWeather
├── web/ # FastAPI 后端 (app.py → create_app)
├── src/ # Python 核心库 (analysis, data_collection, bot, database, payments)
├── tests/ # pytest (85 个文件)
├── frontend/ # Next.js 15 + React 19 + TypeScript
├── scripts/ # 运维/工具脚本 (Python)
├── deploy.sh # VPS 部署脚本
├── docker-compose.yml # 6+ 服务: web, frontend, bot, collector, warmer, training, weathernext2
├── bot_listener.py # Telegram 机器人入口
├── run.py # 机器人启动脚本 (调用 bot_listener.py)
├── pyproject.toml # ruff 配置: E/F rules, line-length=88, py311
├── pytest.ini # testpaths = tests
└── .github/workflows/ci.yml
```
--------------------------------
### Run Backend Verification Tests
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/docs/superpowers/plans/2026-06-08-feedback-reward-account-detail.md
Execute the backend test suite for user feedback.
```python
python -m pytest tests/test_user_feedback.py -q
```
--------------------------------
### 最小部署环境变量配置
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/frontend/README.md
运行看板和基础鉴权功能所需的必要环境变量。
```env
POLYWEATHER_API_BASE_URL=https://
NEXT_PUBLIC_SUPABASE_URL=https://.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=
POLYWEATHER_AUTH_ENABLED=true
```
--------------------------------
### 提交代码并打标签
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/RELEASE.md
在工作区干净的状态下提交变更并创建版本标签。
```bash
git add .
git commit -m "release: v1.7.1"
git tag v1.7.1
```
--------------------------------
### 推送发布内容
Source: https://github.com/yangyuan-zhen/polyweather/blob/main/RELEASE.md
将代码及标签推送到远程仓库。
```bash
git push
git push origin v1.7.1
```