WrBug
|
fd25821e39
|
fix: 优化回测功能UI和修复问题
## 主要修改
### UI 优化
- 将回测功能移到跟单交易菜单下作为子菜单
- 创建回测改为使用 Modal 方式(移除独立页面)
- 优化导航路径,使用 useNavigate 替代 window.location.href
### 功能修复
- 修复 API 路径问题:移除重复的 /api 前缀(/api/backtest -> /backtest)
- 修复 copyRatio 输入框单位:改为百分比输入(100 表示 100%),与跟单配置保持一致
- 修复回测列表中 leader 列显示为空的问题:优先显示 leaderName,为空时显示 leaderAddress
### 多语言完善
- 补充缺失的多语言 key:
- common.ascending / common.descending / common.day
- backtest.sortBy / backtest.sortOrder / backtest.createdAt
- backtest.copyRatioTooltip / backtest.copyRatioPlaceholder
- 以及其他表单验证相关的 key
- 为中文简体、中文繁体、英文三种语言都添加了完整的翻译
## 修改的文件
- frontend/src/App.tsx - 移除 BacktestCreate 路由
- frontend/src/components/Layout.tsx - 调整菜单结构
- frontend/src/pages/BacktestList.tsx - Modal 创建、修复 leader 显示
- frontend/src/pages/BacktestDetail.tsx - 优化导航
- frontend/src/pages/BacktestCreate.tsx - 同步 copyRatio 修改
- frontend/src/services/api.ts - 修复 API 路径
- frontend/src/locales/* - 补充多语言配置
|
2026-01-31 07:46:16 +08:00 |
|
WrBug
|
cdd02e9f3d
|
feat: 实现回测功能
## 功能概述
实现完整的回测功能,支持基于历史数据模拟跟单策略的执行效果。
## 后端实现
- 数据库:新增 backtest_task 和 backtest_trade 表(V27迁移脚本)
- 实体类:BacktestTask、BacktestTrade
- Repository:BacktestTaskRepository、BacktestTradeRepository
- Service:
- BacktestService:回测任务管理(CRUD)
- BacktestDataService:从 Polymarket Data API 获取历史交易数据
- BacktestExecutionService:回测算法核心实现
- BacktestPollingService:定时轮询执行回测任务
- Controller:BacktestController(6个API接口)
- DTO:BacktestDto、TradeData
- 错误码:新增回测相关错误码和国际化消息
## 前端实现
- 页面组件:
- BacktestList:回测任务列表
- BacktestCreate:创建回测任务
- BacktestDetail:回测详情(含图表)
- BacktestChart:资金曲线图表(使用 ECharts)
- 类型定义:backtest.ts
- API 服务:集成所有回测接口
- 国际化:支持中英文
## 核心特性
- 回测天数限制:1-15 天
- 数据获取:直接从 Polymarket Data API 获取历史交易(不使用缓存表)
- 任务执行:同一时刻只执行一个任务,按创建时间顺序执行最早创建的任务
- 回测算法:完整实现市场结算、卖出匹配、价格容忍度、每日订单限制等规则
- 实时进度:支持任务进度更新和实时轮询
## 文档更新
- BACKTEST_PRD.md:产品需求文档
- BACKTEST_TECHNICAL_DESIGN.md:技术设计文档
- BACKTEST_REVIEW_CHECKLIST.md:设计评审检查清单
## 其他修改
- 移除 max_position_count 配置(V26迁移脚本)
- 移除 BacktestSyncService(不再需要实时同步)
- 修复前后端编译错误
|
2026-01-31 07:27:36 +08:00 |
|
WrBug
|
0bdc0c74d1
|
feat: Leader列表优化
- 后端过滤价值为0的仓位
- 持仓列表显示市场名称而非ID
- 列表移除分类和创建时间列
- 文案'跟单关系数'改为'跟单数'
- 持仓DTO添加title字段
|
2026-01-30 22:03:50 +08:00 |
|
WrBug
|
0ff6832dc1
|
fix: 修复前端 TypeScript 编译错误
- 导出 apiClient 供 SystemUpdate 组件使用
- 删除 SystemSettings 中未使用的系统更新相关代码
- 系统更新功能已独立到 SystemUpdate 组件
|
2026-01-21 03:53:01 +08:00 |
|
WrBug
|
3d5a923caf
|
feat: 订单列表按市场分组功能重构
- 后端实现按市场分组的订单列表接口
- 添加 MarketGroupedOrdersRequest、MarketOrderStats、MarketOrderGroup、MarketGroupedOrdersResponse DTO
- 实现 getBuyOrderListGroupedByMarket 和 getSellOrderListGroupedByMarket 方法
- 添加 POST /api/copy-trading/orders/grouped-by-market 接口
- 支持分页和统计信息(订单数、总金额、盈亏、成交状态等)
- 前端重构:移除前端分组逻辑,改为调用后端分组接口
- BuyOrdersTab 和 SellOrdersTab 使用后端分组接口
- 移除前端 useMemo 分组计算逻辑
- 添加分组数据状态管理和分页支持
- 分组默认折叠状态
- 移除桌面端自动展开逻辑
- 所有设备默认折叠,用户手动展开
- 修复 moneyline URL 逻辑
- getPolymarketUrl 函数添加 isMoneyline 参数
- 暂时不自动跳转到 moneyline 页面(需要后端提供标识)
- 多语言支持
- 添加 markets 翻译键(中文、繁体中文、英文)
|
2026-01-08 13:19:52 +08:00 |
|
wry5560
|
5a83444b56
|
feat: 添加WebSocket票据认证和钱包类型支持
- 新增WebSocket票据服务,用于短期有效的WebSocket连接认证
- 支持Magic和Safe两种钱包类型,分别对应邮箱/OAuth登录和MetaMask用户
- 添加登录频率限制和安全防护
- 优化日志记录,屏蔽敏感信息
- 升级ethers.js到v6.16.0
- 新增多语言钱包类型说明
- 重构代理地址计算逻辑,支持CREATE2计算Magic代理地址
|
2026-01-03 12:27:59 +08:00 |
|
WrBug
|
1580b60d24
|
feat: 实现RPC节点管理功能
- 后端功能:
- 添加RPC节点配置管理(增删改查、优先级调整)
- 实现节点健康检查和自动故障转移
- 修复Retrofit baseUrl处理问题(使用拦截器动态替换URL)
- 添加RPC节点可用性验证(创建前验证)
- 默认节点作为兜底,不返回给前端,始终排在最后
- API健康检查使用动态获取的可用节点
- 前端功能:
- 添加RPC节点设置页面
- 支持添加、删除、检查节点
- 支持调整节点优先级
- 完整的多语言支持(中文简体/繁体、英文)
- 添加菜单项多语言key
- 数据库:
- 添加RPC节点配置表迁移脚本
|
2025-12-25 23:58:50 +08:00 |
|
WrBug
|
7173d24fe1
|
refactor: 重构代码结构,按业务分类组织 Controller 和 Service
- 重构 API 路径为 /api/业务/xxx 格式
- 将 Controller 和 Service 按业务分类组织:
* copytrading: 跟单相关(configs, leaders, statistics, templates)
* accounts: 账户管理(公共模块)
* markets: 市场数据(公共模块)
* system: 系统管理(users, notifications, proxy, health)
* auth: 认证
* announcement: 公告
- 将所有完整类名引用改为使用 import 导入
- 修复 calculatePositionValue 方法实现
- 更新前端 API 调用路径
|
2025-12-08 23:04:40 +08:00 |
|
WrBug
|
07d1b50b9b
|
feat: 实现公告板功能
- 后端:从 GitHub Issues API 获取公告数据
- 支持筛选指定 assignees 的评论
- 支持排除指定 issue 的评论
- 从评论第一行提取标题(移除 Markdown 格式)
- 支持获取 reactions 数据(+1、heart、laugh 等)
- 实现 10 分钟缓存机制
- 强制刷新时,如果被限流则保留缓存数据
- 添加 GitHub API 健康检查
- 前端:公告列表和详情页面
- 响应式设计(移动端和桌面端)
- 移动端使用侧边抽屉显示列表
- 支持 Markdown 渲染
- 支持内容折叠(超过 30 行)
- 显示 reactions(使用 emoji)
- 添加刷新按钮(支持强制刷新)
- 公告菜单项放在第一位
- 默认页面改为公告页
- 其他:
- 更新 favicon 为 SVG 格式
- 添加 GitHub API 限流方案文档
- 添加 GitHub Token 配置文档
|
2025-12-07 16:15:59 +08:00 |
|
WrBug
|
5c136ab0f4
|
fix: 修复未匹配订单更新逻辑和前端API类型定义
- 修复 PositionCheckService 中未匹配订单更新逻辑,当仓位数量大于等于订单数量总和时也能正确处理
- 修复前端 API 类型定义,添加 remark 和 website 字段支持
- 添加 Leader 备注和网站字段支持
|
2025-12-07 05:07:58 +08:00 |
|
WrBug
|
cb167d442f
|
feat: 重构仓位轮训逻辑并修复多语言配置
主要改动:
1. 创建独立的 PositionCheckService 服务
- 将仓位检查逻辑从 PositionPushService 中分离
- 实现待赎回仓位检查和未卖出订单检查
- 实现订单状态更新逻辑(FIFO策略)
2. 修改 PositionPushService
- 后端启动时自动启动轮训任务
- 每次轮训后推送全量数据给所有订阅的客户端
- 调用 PositionCheckService 进行仓位检查
3. 自动赎回功能调整
- 将自动赎回从跟单配置级别移到系统级别
- 添加系统级自动赎回配置管理
- 支持 Builder API Key 配置检查
4. 多语言配置修复
- 修复 PositionCheckService 中的硬编码消息
- 使用 MessageSource 获取多语言文本
- 添加自动赎回和 Builder API Key 相关的多语言资源
5. 数据库迁移
- V8: 添加跟单配置名称字段
- V9: 将自动赎回配置移到系统配置表
6. 前端更新
- 添加系统级自动赎回配置界面
- 更新跟单配置管理界面
- 添加 Builder API Key 配置界面
|
2025-12-07 02:06:19 +08:00 |
|
WrBug
|
bfbbbdd1de
|
feat: 实现 Builder API Key 系统级配置和 Gasless 交易支持
- 新增系统配置表(SystemConfig)用于存储 Builder API Key
- 实现 Builder API Key 的前端配置页面
- 集成 Builder Relayer API 支持 Gasless 交易
- 在 API 健康检查中添加 Builder Relayer API 检测
- 移除前端 API 测试功能,简化配置页面
- 修复赎回仓位时的 Builder API Key 检查逻辑
- 更新错误处理,引导用户配置 Builder API Key
|
2025-12-06 23:10:26 +08:00 |
|
WrBug
|
9b8150cf92
|
feat: 实现跟单筛选条件记录和展示功能
- 新增 FilteredOrder 实体和数据库表,记录被过滤的订单信息
- 在筛选失败时自动记录到数据库并发送 Telegram 通知
- 创建 FilteredOrderService 和 API 接口,支持查询被过滤订单列表
- 前端新增被过滤订单列表页面,支持按过滤类型筛选
- 修复价差计算逻辑,使用数组最大值和最小值而非第一个元素
- 优化编辑页面 UI,钱包和 Leader 显示与创建页面一致(只读)
- 添加多语言支持(中文、繁体中文、英文)
|
2025-12-05 05:18:20 +08:00 |
|
WrBug
|
d0b454e7c8
|
fix: 修复前端语言切换时后端 header 未更新的问题
- 统一 localStorage key:LanguageSwitcher 同时保存到 i18n_language 和 i18nextLng
- 优化 API 请求拦截器:添加 getCurrentLanguage() 函数,优先从 localStorage 读取最新语言设置
- 支持兼容性:同时读取 i18n_language 和 i18nextLng(i18next 默认 key)
- 规范化语言格式:确保返回正确的语言代码(zh-CN, zh-TW, en)
|
2025-12-05 02:33:02 +08:00 |
|
WrBug
|
777710c2ed
|
feat: 完善 Telegram 推送通知功能
- 推送模板优化:
- 优先使用账户名称而不是钱包地址
- 使用市场标题而不是16进制ID
- 添加可点击的市场链接(支持 slug 和 conditionId)
- 添加市场方向(outcome)显示
- 数量和价格从订单详情API获取实际值
- 失败通知只显示后端返回的msg,不显示完整堆栈
- 多语言支持:
- 后端推送消息支持多语言(使用前端最后请求的语言)
- 添加所有 ErrorCode 的多语言资源文件(中文简体、繁体、英文)
- 通知消息文本全部使用多语言资源
- 功能改进:
- 从订单详情获取实际的 side、price、size、outcome
- 支持买入/卖出方向的多语言显示
- 错误信息优化,只显示后端返回的错误消息
|
2025-12-05 02:20:46 +08:00 |
|
WrBug
|
41596887c9
|
feat: 改进下单错误处理和市场价格接口
- 修复市场价格接口:移除side参数,使用outcomeIndex判断方向
- 添加规范:禁止使用YES/NO字符串判断side,必须使用outcomeIndex
- 改进所有下单错误处理:所有错误都打印详细日志并存入数据库
- AccountService.sellPosition: 添加完整错误日志
- CopyOrderTrackingService.createOrderWithRetry: 所有失败都记录详细日志
- recordFailedTrade: 改进错误信息存储,包含堆栈信息
- PolymarketClobService.createSignedOrder: 添加完整错误日志
- 前端:更新市场价格接口调用,使用outcomeIndex替代side参数
- 清理:删除过时的i18n文档
|
2025-12-05 00:23:44 +08:00 |
|
WrBug
|
1a9407c544
|
feat: 完成前端多语言支持和菜单优化
- 缩短菜单标题,解决显示不全问题
- 添加跟随系统语言选项,作为默认选项
- 移除语言切换时的页面刷新,实现无刷新切换
- 完成主要页面的多语言替换:
* ConfigPage - 全局配置页面
* ResetPassword - 重置密码页面
* LeaderList - Leader 列表页面
* UserList - 用户列表页面
* Statistics - 统计信息页面
* OrderList - 订单列表页面
* TemplateList - 模板列表页面
* CopyTradingList - 跟单配置列表页面
- 添加简体中文、繁体中文和英文的完整翻译键
- 优化语言设置页面,支持跟随系统语言
|
2025-12-04 10:36:28 +08:00 |
|
WrBug
|
166bec737b
|
feat: 实现JWT失效机制和优化订单精度
- 实现JWT tokenVersion机制,修改密码后所有token自动失效
- 在User实体中添加tokenVersion字段
- 创建V2数据库迁移文件添加token_version列
- 修改密码时递增tokenVersion
- JWT中包含tokenVersion,验证时检查版本是否匹配
- 支持HTTP API和WebSocket连接的token验证
- 优化订单精度计算,与SDK保持一致
- BUY订单:使用原始价格计算makerAmount,避免精度丢失
- SELL订单:使用原始价格计算takerAmount,确保与SDK结果一致
- 修复之前使用舍入后价格导致的精度问题
- 前端自动登出功能
- 响应拦截器检测认证错误(code 2001-2999)自动登出
- 支持成功响应和错误响应中的认证错误检测
- 自动清除token、断开WebSocket并跳转登录页
|
2025-12-03 23:01:43 +08:00 |
|
WrBug
|
2ad558da36
|
feat: 优化账户管理和订单功能
- 重置密码后自动跳转到登录页,登录页添加重置密码入口
- 移除默认账户相关逻辑和UI
- 移除前端API Key自动获取提示文案(后端保留自动获取逻辑)
- 修复SELL订单takerAmount计算精度问题,使用精确计算避免精度丢失
- 修复导入账户页面白屏问题(缺少Alert组件导入)
- 持仓出售支持百分比模式,使用原始精度数据计算,支持小数百分比
- 优化订单金额计算逻辑,确保与SDK一致
|
2025-12-03 21:39:48 +08:00 |
|
WrBug
|
1216fc5ed5
|
feat: 添加前后端一体化 Docker 部署支持
- 创建根目录 Dockerfile,支持前后端一起部署到一个容器
- 添加 Nginx 配置,自动代理后端 API 和 WebSocket
- 创建启动脚本,同时启动后端和 Nginx
- 更新 docker-compose.yml 支持一体化部署
- 创建一体化部署脚本 deploy.sh
- 修复前端环境变量支持,默认使用相对路径
- 优化部署脚本:.env 文件不存在时创建后终止部署
- 更新部署文档,添加一体化部署说明
|
2025-12-03 03:08:53 +08:00 |
|
WrBug
|
59722d7311
|
feat: 添加完整的部署支持
- 后端多环境配置(dev, prod)
- Docker 部署支持(Dockerfile, docker-compose.yml)
- Java 部署脚本(deploy.sh)
- 前端构建脚本(build.sh,支持自定义后端地址)
- 健康检查接口(/api/health)
- 完整的部署文档(docs/DEPLOYMENT.md)
- 前端环境变量支持(VITE_API_URL, VITE_WS_URL)
|
2025-12-03 02:48:02 +08:00 |
|
WrBug
|
4679080d55
|
feat: 添加系统管理功能(代理配置和API健康检查)
- 新增代理配置管理功能,支持HTTP代理配置(host、port、用户名、密码)
- 代理配置存储在数据库中,支持实时生效,无需重启服务
- 代理配置变更时自动重连WebSocket连接(订单推送和跟单服务)
- 新增API健康状态检查功能,监控Polymarket各API和Polygon RPC的可用性
- 优化API健康状态UI,支持响应式设计(移动端和桌面端)
- 将Ethereum RPC相关配置和代码统一改为Polygon RPC
- 修复代理检查时的SSL证书验证问题
- 优化代理配置:关闭代理时保留配置信息,避免重新输入
|
2025-12-03 01:44:35 +08:00 |
|
WrBug
|
dd553ae160
|
feat: 添加JWT登录鉴权和用户管理功能
- 后端功能:
- 实现JWT登录鉴权,token有效期7天,超过1天自动刷新
- 添加用户管理功能,支持创建、删除、修改密码
- 首次创建的用户为默认账户,拥有管理权限
- 实现密码重置功能,支持重置密钥和频率限制(1分钟最多3次)
- 所有API接口需要JWT鉴权
- WebSocket连接需要JWT鉴权,绑定用户身份
- 前端功能:
- 添加登录页面和密码重置页面
- 添加用户管理页面,默认账户可管理所有用户,普通用户只能查看和修改自己
- 添加退出登录功能,带二次确认
- 未登录时不建立WebSocket连接
- API请求自动携带JWT token,认证失败自动跳转登录页
- 安全特性:
- 密码使用BCrypt加密存储
- 重置密码错误信息统一处理,避免信息泄露
- 用户操作严格绑定JWT,防止数据篡改和越权
|
2025-12-03 00:24:46 +08:00 |
|
WrBug
|
792ddb8635
|
删除后端无用日志
- 删除所有 logger.debug 调试日志
- 删除过于详细的 logger.info 常规操作日志
- 保留 logger.error 和 logger.warn 重要错误和警告日志
- 优化日志输出,减少生产环境日志噪音
|
2025-12-02 22:22:39 +08:00 |
|
WrBug
|
fd10a31780
|
feat: 完善跟单模板管理功能
- 更新需求文档:移除每日最大亏损限制、跟单延迟、轮询和WebSocket配置
- 跟单比例改为百分比格式(10%-1000%),只允许整数
- 所有USDC字段支持最多4位小数
- 固定金额和最小金额校验(必须>=1)
- 模板名称支持编辑
- 复制模板改为Modal形式,可编辑后创建
- 模板列表按创建时间降序排序,显示创建时间
- 移动端适配:使用卡片式布局
- 合并跟单比例和固定金额列为跟单配置
- 支持卖出改为跟单卖出
- 菜单结构调整:跟单管理作为父菜单,包含跟单模板和跟单配置子菜单
|
2025-12-01 23:03:17 +08:00 |
|
WrBug
|
914983acd7
|
feat: 实现通过代理钱包的仓位赎回功能
- 实现 Gnosis Safe EIP-712 签名逻辑
- 通过代理钱包的 execTransaction 调用 ConditionalTokens.redeemPositions
- 支持多账户批量赎回
- 前端添加赎回按钮和赎回详情弹窗
- 根据链上交易分析实现完整的 Safe 交易签名流程
|
2025-12-01 13:02:58 +08:00 |
|
WrBug
|
4e89f53c24
|
refactor: 重构市场数据接口和移除敏感信息
- 创建 MarketController,将市场相关接口从 AccountController 移出
- 添加 /api/copy-trading/markets/latest-price 接口供前端获取最新价
- 在 PolymarketClobService 中封装获取订单表和最优价的逻辑
- 支持多元市场(二元、三元及以上)的最优价获取
- 市价单价格添加调整系数(买单+0.01,卖单-0.02)
- 移除所有测试文件中的真实私钥和API凭证
- 更新前端API服务,添加markets相关接口
|
2025-11-29 11:08:01 +08:00 |
|
WrBug
|
b4fb16af9e
|
feat: 实现仓位出售功能并修复价格接口
- 新增仓位出售功能,支持市价和限价卖出
- 添加卖出模态框,包含订单类型选择、数量快捷按钮、限价输入
- 实现实时平仓收益计算和显示
- 修复价格接口:改用Gamma API获取价格(支持condition_ids参数)
- 优化价格选择逻辑:卖出使用bestBid,买入使用bestAsk
- 添加提交订单的加载状态和错误处理
- 优化UI提示,明确标注价格用途(买入/卖出参考)
|
2025-11-28 04:11:13 +08:00 |
|
WrBug
|
47357995af
|
重构 WebSocket 推送服务:统一使用 /ws 路径和 channel 订阅模式
- 后端重构:
- 统一 WebSocket 路径为 /ws,通过 channel 区分不同推送服务
- 实现 UnifiedWebSocketHandler 统一处理所有推送频道
- 实现 WebSocketSubscriptionService 管理订阅和推送
- 消息类型改为 int 类型(1:SUB, 2:UNSUB, 3:DATA, 4:SUB_ACK, 5:PING, 6:PONG)
- status 字段改为 int 类型(0: success, 非0: error)
- 移除旧的 /ws/positions 路由和 PositionWebSocketHandler
- 修复首推数据:订阅 position 频道后立即发送全量数据
- 前端重构:
- 实现全局 WebSocket 管理器(单例模式)
- 应用启动时立即建立全局 WebSocket 连接
- 实现 useWebSocketSubscription hook 用于订阅频道
- PositionList 完全依赖 WebSocket 推送,移除 HTTP 轮询
- 添加连接状态显示和自动重连机制
- 实现心跳保活机制(PING/PONG)
- 配置更新:
- 添加 WebSocket 相关配置项
- 更新 vite.config.ts 添加 /ws 代理配置
|
2025-11-27 02:56:24 +08:00 |
|
WrBug
|
f53ba1ca49
|
feat: 优化仓位管理页面功能和样式
- 添加卡片和列表视图切换功能
- 移动端支持卡片折叠/展开,默认只显示关键信息
- 历史仓位不显示盈亏和平仓收益
- 优化账户筛选:移除搜索功能,按账户名称排序
- 移动端强制使用卡片视图,隐藏视图切换按钮
- 优化侧边栏布局:固定高度,内容区域可滚动
- 优化当前仓位/历史仓位切换组件样式
- 修复账户筛选全部账户选项不生效的问题
|
2025-11-27 01:13:52 +08:00 |
|
WrBug
|
4f7fef145f
|
Initial commit: Polymarket copy trading bot
- Backend: Spring Boot + Kotlin implementation
- Account management with private key import
- Leader management
- Copy trading configuration
- Order synchronization
- Balance and position queries via Polymarket API
- Ethereum RPC integration for USDC balance
- Proxy address calculation
- Frontend: React + TypeScript
- Account management UI
- Mobile responsive design
- Account import with private key/mnemonic support
- Balance display and account details modal
- Database: MySQL with Flyway migrations
- API Integration: Polymarket CLOB API, Data API, Ethereum RPC
|
2025-11-21 04:32:08 +08:00 |
|