From 0c6beab350996d17660c54a25709f2b8c98b61b9 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Tue, 3 Mar 2026 00:01:57 +0800 Subject: [PATCH] feat: Add Docker support, GitHub Actions CI, and an MIT License, updating READMEs with deployment instructions and badges. --- .github/workflows/python-app.yml | 37 ++++++++++++++++++++++++++++++++ Dockerfile | 24 +++++++++++++++++++++ LICENSE | 21 ++++++++++++++++++ README.md | 36 +++++++++++++++++++++++++------ README_ZH.md | 36 +++++++++++++++++++++++++------ docker-compose.yml | 13 +++++++++++ 6 files changed, 153 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/python-app.yml create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 docker-compose.yml diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml new file mode 100644 index 00000000..e51a055a --- /dev/null +++ b/.github/workflows/python-app.yml @@ -0,0 +1,37 @@ +name: Python application CI + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.11 + uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install ruff + # 如果需要测试,也可以考虑在这里安装 requirements.txt: pip install -r requirements.txt + + - name: Lint with Ruff + run: | + # 检查代码错误 (如未定义变量, 未使用引入等) + # --output-format=github 可以在 PR 中直接以 annotations 的形式显示错误 + ruff check . --output-format=github + + - name: Check code formatting with Ruff + run: | + # 检查代码格式是否规范 (如果不规范,Actions 会提示报错) + ruff format --check . diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..50c474ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM python:3.11-slim + +# 设置工作目录 +WORKDIR /app + +# 设置环境变量 +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + TZ=UTC + +# 安装系统依赖 (如果有必要的包可以取消注释) +# RUN apt-get update && apt-get install -y --no-install-recommends gcc && rm -rf /var/lib/apt/lists/* + +# 复制 requirements 文件 +COPY requirements.txt . + +# 安装 Python 依赖 +RUN pip install --no-cache-dir -r requirements.txt + +# 复制项目代码 +COPY . . + +# 启动机器人 +CMD ["python", "bot_listener.py"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..1a8485e3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Yuanzhen Yang (yangyuan-zhen) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 402760eb..425535c9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # 🌡️ PolyWeather: Intelligent Weather Quant Analysis Bot +[![Python application CI](https://github.com/yangyuan-zhen/PolyWeather/actions/workflows/python-app.yml/badge.svg)](https://github.com/yangyuan-zhen/PolyWeather/actions/workflows/python-app.yml) +[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/yangyuan-zhen/PolyWeather) - PolyWeather is a weather analysis tool built for prediction markets like **Polymarket**. It aggregates multi-source forecasts, real-time airport METAR observations, a math-based probability engine, and AI-driven decision support to help users evaluate weather trading risks more scientifically.

@@ -74,15 +76,35 @@ Feeds all weather data into LLaMA 70B, analyzed via a **P1→P4 Priority Chain** ### Requirements -- **Python 3.11+** -- Install dependencies: `pip install -r requirements.txt` -- **Environment Variables**: Set `TELEGRAM_BOT_TOKEN` and `GROQ_API_KEY` in your `.env` file. +- **Python 3.11+** or **Docker & Docker Compose** +- **Environment Variables**: Set parameters in your `.env` file (copy from `.env.example`). -### VPS Quick Deployment +### 🐳 Docker Deployment (Recommended) -1. Clone the repository and install dependencies. +The easiest and most stable way to deploy without system dependency conflicts. + +1. **Clone and configure** + ```bash + git clone https://github.com/yangyuan-zhen/PolyWeather.git + cd PolyWeather + cp .env.example .env + # Edit .env to add TELEGRAM_BOT_TOKEN, GROQ_API_KEY, etc. + nano .env + ``` +2. **Start the service in the background** + ```bash + docker-compose up -d --build + ``` +3. **View live logs** + ```bash + docker-compose logs -f + ``` + +### 💻 Traditional VPS Deployment + +1. Install dependencies: `pip install -r requirements.txt` 2. Configure your `.env` file. -3. Use the following script for one-click updates and restarts: +3. Use the following script for one-click updates and restarts (for `nohup` background run): ```bash cat > ~/update.sh << 'EOF' diff --git a/README_ZH.md b/README_ZH.md index 7bf6c54a..dc10e07f 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -1,7 +1,9 @@ # 🌡️ PolyWeather: 智能天气量化分析机器人 +[![Python application CI](https://github.com/yangyuan-zhen/PolyWeather/actions/workflows/python-app.yml/badge.svg)](https://github.com/yangyuan-zhen/PolyWeather/actions/workflows/python-app.yml) +[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/yangyuan-zhen/PolyWeather) - PolyWeather 是一款专为 **Polymarket** 等预测市场打造的天气分析工具。它通过聚合多源气象预报、实时机场 METAR 观测,并引入数学概率模型与 AI 决策支持,帮助用户更科学地评估天气博弈风险。

@@ -74,15 +76,35 @@ PolyWeather 是一款专为 **Polymarket** 等预测市场打造的天气分析 ### 环境要求 -- **Python 3.11+** -- 依赖安装: `pip install -r requirements.txt` -- **环境变量**: 在 `.env` 中设置 `TELEGRAM_BOT_TOKEN` 和 `GROQ_API_KEY`。 +- **Python 3.11+** 或 **Docker & Docker Compose** +- **环境变量**: 在 `.env` 中设置关键参数(参考 `.env.example`)。 -### VPS 快捷部署 +### 🐳 Docker 推荐部署 (推荐) -1. 克隆仓库并安装依赖。 +最简单、稳定的部署方式,避免系统依赖冲突。 + +1. **克隆项目并配置环境** + ```bash + git clone https://github.com/yangyuan-zhen/PolyWeather.git + cd PolyWeather + cp .env.example .env + # 编辑 .env 文件填入 TELEGRAM_BOT_TOKEN 和 GROQ_API_KEY 等 + nano .env + ``` +2. **后台一键启动服务** + ```bash + docker-compose up -d --build + ``` +3. **查看实时日志** + ```bash + docker-compose logs -f + ``` + +### 💻 传统 VPS 部署方案 + +1. 安装依赖: `pip install -r requirements.txt` 2. 配置 `.env` 文件。 -3. 使用以下脚本实现一键更新与重启: +3. 使用以下脚本实现一键更新与重启(仅适用于后台 `nohup` 运行): ```bash cat > ~/update.sh << 'EOF' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..8fc1214c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.8" + +services: + polyweather: + build: . + container_name: polyweather_bot + restart: unless-stopped + env_file: + - .env + volumes: + - ./data:/app/data # 挂载数据目录,确保历史数据持久化 + - ./bot.log:/app/bot.log # 挂载日志文件 + user: "${UID:-1000}:${GID:-1000}"