# PolyHermes [![GitHub](https://img.shields.io/badge/GitHub-WrBug%2FPolyHermes-blue?logo=github)](https://github.com/WrBug/PolyHermes) [![Twitter](https://img.shields.io/badge/Twitter-@polyhermes-blue?logo=twitter)](https://x.com/polyhermes) [![Docker](https://img.shields.io/docker/v/wrbug/polyhermes?label=Docker&logo=docker)](https://hub.docker.com/r/wrbug/polyhermes) > 🌐 **Language**: [English](README_EN.md) | 中文 一个功能强大的 Polymarket 预测市场跟单交易系统,支持自动化跟单、多账户管理、实时订单推送和统计分析。 --- ## 📋 目录 - [第一部分:产品功能说明](#第一部分产品功能说明) - [第二部分:如何部署](#第二部分如何部署) - [第三部分:开发文档](#第三部分开发文档) --- ## 第一部分:产品功能说明 ### 📸 界面预览 #### 🖥️ 桌面端
#### 📱 移动端
### ✨ 核心功能 #### 🔐 账户管理 - **多账户支持**:通过私钥导入多个钱包账户,统一管理 - **安全存储**:私钥和 API 凭证加密存储,确保数据安全 - **账户信息**:查看账户余额、持仓、交易记录等详细信息 - **账户编辑**:支持修改账户名称、设置默认账户等 #### 👥 Leader 管理 - **添加 Leader**:添加被跟单者(Leader)的钱包地址 - **分类筛选**:支持按分类筛选(sports/crypto) - **Leader 信息**:查看 Leader 的交易历史、统计信息 - **备注管理**:为 Leader 添加备注,方便识别和管理 #### 📊 跟单模板 - **灵活配置**:创建跟单模板,配置跟单参数 - **跟单方式**:支持比例跟单和固定金额跟单 - **风险控制**:配置每日亏损限制、订单数限制、价格容忍度等 - **模板复用**:一个模板可以用于多个跟单关系 #### 🔄 跟单配置 - **关系管理**:将账户、模板和 Leader 关联,创建跟单关系 - **启用/禁用**:灵活控制跟单关系的启用状态 - **自动跟单**:实时监控 Leader 交易,自动复制订单(支持买入和卖出) - **订单跟踪**:完整的订单生命周期跟踪,包括买入、卖出和匹配记录 #### 📈 订单管理 - **买入订单**:查看所有买入订单的详细信息 - **卖出订单**:查看所有卖出订单的详细信息 - **匹配订单**:查看已匹配的订单记录 - **订单筛选**:支持按账户、Leader、时间范围等条件筛选 #### 💼 仓位管理 - **实时持仓**:实时查看和管理所有账户的持仓 - **仓位推送**:通过 WebSocket 实时推送仓位变化 - **卖出仓位**:支持市价和限价卖出仓位 - **赎回仓位**:支持批量赎回已结算的仓位 #### 📊 统计分析 - **全局统计**:查看所有跟单关系的汇总统计 - **Leader 统计**:查看特定 Leader 的统计信息 - **分类统计**:按分类(sports/crypto)查看统计 - **跟单关系统计**:查看单个跟单关系的详细统计 - **时间筛选**:支持按时间范围筛选统计数据 #### ⚙️ 系统管理 - **代理配置**:通过 Web UI 配置 HTTP 代理,无需修改环境变量 - **API 健康检查**:实时监控 Polymarket API 的健康状态 - **用户管理**:管理系统用户,支持添加、编辑、删除用户 - **公告管理**:查看系统公告和更新信息 - **动态更新**:支持在线更新系统版本,无需重新部署容器 ### 🚀 技术特性 - **WebSocket 实时推送**:订单和仓位数据实时推送,无需手动刷新 - **安全存储**:私钥和 API 凭证使用 AES 加密存储 - **响应式设计**:完美支持移动端和桌面端,提供一致的用户体验 - **高性能**:异步处理、并发优化,支持大量订单处理 - **风险控制**:每日亏损限制、订单数限制、价格容忍度等多重风险控制机制 - **多语言支持**:支持中文(简体/繁体)和英文 - **版本管理**:自动版本号显示和管理,支持 GitHub Releases 自动构建 ### 🏗️ 技术栈 #### 后端 - **框架**: Spring Boot 3.2.0 - **语言**: Kotlin 1.9.20 - **数据库**: MySQL 8.2.0 - **ORM**: Spring Data JPA - **数据库迁移**: Flyway - **HTTP 客户端**: Retrofit 2.9.0 + OkHttp 4.12.0 - **WebSocket**: Spring WebSocket #### 前端 - **框架**: React 18 + TypeScript - **构建工具**: Vite - **UI 库**: Ant Design 5.12.0 - **HTTP 客户端**: axios - **状态管理**: Zustand - **路由**: React Router 6 - **以太坊库**: ethers.js 6.9.0 - **多语言**: react-i18next --- ## 第二部分:如何部署 ### 🚀 快速部署 #### 一体化部署(推荐) 将前后端一起部署到一个 Docker 容器中,使用 Nginx 提供前端静态文件并代理后端 API。 **前置要求**: - Docker 20.10+ - Docker Compose 2.0+ **部署步骤**: #### ⚡ 一键安装(最快,推荐新用户) **使用 curl(推荐):** ```bash mkdir -p ~/polyhermes && cd ~/polyhermes && curl -fsSL https://raw.githubusercontent.com/WrBug/PolyHermes/main/deploy-interactive.sh -o deploy.sh && chmod +x deploy.sh && ./deploy.sh ``` **使用 wget:** ```bash mkdir -p ~/polyhermes && cd ~/polyhermes && wget -O deploy.sh https://raw.githubusercontent.com/WrBug/PolyHermes/main/deploy-interactive.sh && chmod +x deploy.sh && ./deploy.sh ``` 这个命令会自动: - 📁 创建专用工作目录 `~/polyhermes` - ✅ 自动检查 Docker 环境 - ⚙️ 交互式配置所有参数(支持回车使用默认值) - 🔐 自动生成安全的随机密钥 - 🚀 自动下载最新镜像并部署 --- #### 📋 其他部署方式 1. **使用 Docker Hub 镜像(推荐,生产环境首选)** **方式 1:独立部署(无需 clone 代码,推荐)** 适用于生产环境,无需下载项目代码,只需两个文件即可部署: ```bash # 1. 创建部署目录 mkdir polyhermes && cd polyhermes # 2. 下载生产环境配置文件 # 从 GitHub 下载 docker-compose.prod.yml 和 docker-compose.prod.env.example curl -O https://raw.githubusercontent.com/WrBug/PolyHermes/main/docker-compose.prod.yml curl -O https://raw.githubusercontent.com/WrBug/PolyHermes/main/docker-compose.prod.env.example # 3. 创建配置文件 cp docker-compose.prod.env.example .env # 4. 编辑 .env 文件,修改以下必需配置: # - DB_PASSWORD: 数据库密码 # - JWT_SECRET: 使用 openssl rand -hex 64 生成 # - ADMIN_RESET_PASSWORD_KEY: 使用 openssl rand -hex 32 生成 # 5. 启动服务 docker-compose -f docker-compose.prod.yml up -d # 6. 查看日志 docker-compose -f docker-compose.prod.yml logs -f # 7. 停止服务 docker-compose -f docker-compose.prod.yml down ``` **方式 2:使用部署脚本(需要 clone 代码)** ```bash # 如果已经 clone 了代码 ./deploy.sh --use-docker-hub ``` **方式 3:修改现有 docker-compose.yml** ```bash # 1. 修改 docker-compose.yml,取消注释: # image: wrbug/polyhermes:latest # 并注释掉 build 部分 # 2. 创建 .env 文件(见下方) # 3. 启动服务 docker-compose up -d ``` **优势**: - ✅ 无需本地构建,快速部署 - ✅ 无需 clone 代码,只需配置文件即可部署 - ✅ 使用官方构建的镜像,包含正确的版本号 - ✅ 支持多架构(amd64、arm64),自动选择匹配的架构 - ✅ 生产环境推荐方式 **拉取特定版本**: ```bash # 修改 docker-compose.prod.yml 中的镜像标签 # image: wrbug/polyhermes:v1.0.0 ``` **更新 Docker 版本**: ```bash # 1. 停止当前容器 docker-compose -f docker-compose.prod.yml down # 2. 拉取最新镜像 docker pull wrbug/polyhermes:latest # 3. 重新启动服务 docker-compose -f docker-compose.prod.yml up -d # 或更新到特定版本(例如 v1.0.1) # 修改 docker-compose.prod.yml 中的镜像标签为: image: wrbug/polyhermes:v1.0.1 # 然后执行: docker-compose -f docker-compose.prod.yml up -d ``` 详细更新说明请参考:[部署文档 - 更新 Docker 版本](docs/zh/DEPLOYMENT.md#更新-docker-版本) 2. **本地构建部署(开发环境)** ```bash # 使用部署脚本 ./deploy.sh ``` 脚本会自动: - 检查 Docker 环境 - 创建 `.env` 配置文件(如果不存在) - 构建 Docker 镜像(包含前后端) - 启动服务(应用 + MySQL) 3. **手动部署** ```bash # 创建 .env 文件 cat > .env <