WrBug
|
c5d59dfdf9
|
refactor: 尾盘策略统一更名为加密价差策略
- 前端:菜单父级「加密价差策略」,子项「策略配置」「实时监控」;i18n 与类型注释全部替换
- 后端:i18n、ErrorCode、DTO/实体/服务注释与日志「尾盘」→「加密价差策略」;TG 通知文案
- 文档:README、中英文用户指南、UI 规格、任务、流程、价差流程、市场数据、动态系数等全部更新
- 不修改 API 路径、路由、表名与类名,保持兼容
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-25 21:30:50 +08:00 |
|
WrBug
|
4b277eaeab
|
feat(frontend): 尾盘父级菜单与图标优化
- 尾盘策略、尾盘监控归入「尾盘」父级菜单,与跟单交易结构一致
- 菜单图标:父级 LineChart,尾盘策略 RocketOutlined,尾盘监控 DashboardOutlined
- 多语言:新增 menu.cryptoTail(尾盘/尾盤/Crypto Tail)
- 含 CryptoTailMonitor 及后端 DTO/Service 等修改
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-25 21:17:44 +08:00 |
|
WrBug
|
84c79d8812
|
feat(cryptotail): 尾盘监控双连接与分时图优化
- 监控 WebSocket 拆分为当前周期连接与下一周期连接,周期切换时关闭过期连接并新建下一周期
- 下一周期市场未创建时也建立第二条空连接,保证始终两条连接
- refreshSubscription 增加 Mutex 防重入,避免周期结束时定时器与消息同时触发导致重复执行
- 修复 initMonitor/buildPushData 中 getCurrentOpenClose、spreadMode/spreadValue 等 API 与实体字段引用
- 移除重复的 buildSubscriptionMap、buildPushData 等方法,修复 StrategyPriceData.periodStartUnix
- 前端分时图:市场价折线增加 connectNulls,新周期默认 0.5 价格展示
- 多语言与监控页入口、API 类型与 WebSocket 订阅集成
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-25 17:00:41 +08:00 |
|
WrBug
|
de89175c8e
|
feat: 账户设置后端 action、Safe 部署与设置引导弹窗复用
账户设置:
- 后端: execute-setup-step API(步骤1 Safe 一键部署/步骤2 启用交易/步骤3 代币授权)
- Safe 部署: Eip712Encoder SafeCreate/CreateProxy,RelayClientService.deploySafeViaBuilderRelayer
- BuilderRelayerApi: SignatureParams 增加 paymentToken/payment/paymentReceiver,TransactionRequest.nonce 可选
- 导入成功有未完成步骤时先弹设置引导再关导入弹窗;设置弹窗复用 AccountSetupStatusBlock(embedded)
- AccountSetupStatusBlock: 5s 轮询、embedded 模式、onAllCompleted、移除全部完成 Tag、授权信息始终展示且右对齐额度列
- 多语言: 步骤1/2/3 文案与 actionSuccess/actionFailed
CryptoTail:
- SpreadDirection/SpreadMode 枚举及 Converter,V38 迁移,策略列表与 api/types 调整
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-18 03:01:35 +08:00 |
|
WrBug
|
c38529546f
|
feat(system): Builder API Key 等配置前端显示完整值
- 后端 SystemConfigService 返回解密后的完整 builderApiKey/Secret/Passphrase,不再脱敏
- 移除未使用的 maskSensitiveValue 方法
- 更新 DTO 与前端类型注释为「完整显示」
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-16 01:47:52 +08:00 |
|
WrBug
|
b50e43c239
|
feat(crypto-tail): 策略最小价差(无/固定/自动) + 前端默认与文案
- 后端: 最小价差 DB/Entity/DTO、Binance K线 REST+WS、自动价差 IQR 预计算与执行时校验
- 前端: 最小价差(自动-固定-无),默认自动,label 旁 info 说明,选择自动不展示建议约
- i18n: minSpreadModeTip 说明不写死标的
- 文档: crypto-tail-strategy-min-spread-flow.md
- scripts: Binance K线拉取与 WS 示例
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-14 15:16:44 +08:00 |
|
WrBug
|
f200ba7f7c
|
feat(crypto-tail): 触发记录与结算优化、前端收益与价格展示
后端:
- 结算轮询仅处理下单成功订单(status=success 且 orderId 非空)
- 实体通过 copy() 更新,不再直接改字段;结算时用订单 fill 回写 triggerPrice、amountUsdc
- Trigger 实体结算相关字段改为 val,统一 copy+save 更新
前端:
- 触发记录: 去掉市场列,保留触发价格(轮询后为实际成交价);每条收益列、涨跌色
- 策略列表: 总收益与胜率、涨跌色;价格区间格式 0.5 ~ 1
- 类型与 i18n: totalRealizedPnl/winRate/realizedPnl 等
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-14 05:44:19 +08:00 |
|
WrBug
|
2238370088
|
feat(crypto-tail): 尾盘策略完整实现与优化
- 尾盘策略 CRUD、订单簿 WS 订阅、周期内触发下单
- 订单簿订阅日志增加市场 slug,便于排查
- 移除轮询,完全依赖 WebSocket(删除 CryptoTailStrategyScheduler)
- FIXED 模式数量改为小数、向上取整,与签名服务一致
- 前端策略列表页、多语言与 API 对接
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-14 05:01:10 +08:00 |
|
WrBug
|
cf2c8a611c
|
feat: 赎回批量执行与仓位页体验优化
- 赎回:同一账户多市场合并为一笔交易,减少 Relayer 调用次数
- 仓位页:可赎回统计静默刷新,赎回按钮不再常驻 loading
- 账户导入表单、API、多语言等相关改动
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-14 00:20:41 +08:00 |
|
WrBug
|
5487c7c862
|
feat(leader): Leader 管理展示跟单/回测数量并支持跳转筛选
- 后端:LeaderDto 增加 backtestCount,LeaderService 统计回测数并返回
- Leader 列表:展示跟单数、回测数,点击跳转跟单配置/回测页并带 leaderId 筛选
- 跟单配置页:从 URL 读取 leaderId 并应用筛选,Leader 下拉改用 LeaderSelect
- 回测页:支持 Leader 筛选,页面加载时请求 Leader 列表,筛选与详情统一显示规则
- LeaderSelect:支持 style,回测/跟单筛选统一使用
- 多语言:补充 leaderList 相关 key
- 移动端:Leader 管理卡片内按钮增加内边距 padding 8px 16px
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-09 02:03:17 +08:00 |
|
WrBug
|
96fbc3f720
|
feat: 回测系统优化 - 清理字段、移动端适配、缓存优化
## 主要改动
### 1. 回测字段清理
- 删除 BacktestCreate.tsx(未使用,创建使用 modal)
- 移除不适用于回测的字段:
- priceTolerance, delaySeconds(回测使用历史数据)
- minOrderDepth, maxSpread(无历史订单簿数据)
- minPrice, maxPrice, maxPositionValue(回测中无实际意义)
- maxMarketEndDate(意义不大)
- 更新相关 Entity、DTO、Service
- 添加数据库 migration(V29)
### 2. 移动端响应式适配
- BacktestList:筛选器、表格、Modal、表单响应式布局
- BacktestDetail:详情卡片、统计信息、按钮响应式
- 使用 useMediaQuery hook,断点 768px
- 支持手机、平板、桌面多种设备
### 3. 已结算市场缓存优化
- MarketPriceService 添加 Caffeine 缓存
- 缓存已结算市场价格,避免重复 RPC 调用
- 预计 RPC 请求减少 ~78.6%,性能提升显著
- 添加缓存统计和管理方法
### 4. UI 修复
- 修复 BacktestDetail 停止按钮文本
- 更新多语言翻译(supportSell → 跟单卖出)
## 性能收益
- 回测场景 RPC 调用减少 78.6%
- 回测执行时间预计减少 11秒(14秒 → 3秒)
- 移动端用户体验显著提升
|
2026-01-31 20:45:40 +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
|
e8fd1b503b
|
移除跟单最大仓位数量(maxPositionCount)配置
- 数据库:创建迁移文件 V26 删除 max_position_count 字段
- 后端:移除实体类、DTO、服务中的 maxPositionCount 相关代码
- 后端:移除 FilterResult 中的 FAILED_MAX_POSITION_COUNT 状态
- 后端:移除 CopyTradingFilterService 中的最大仓位数量检查逻辑
- 前端:移除类型定义、表单字段和国际化翻译
- 前端:移除过滤订单列表中的 MAX_POSITION_COUNT 类型
- 前端:修复编译错误(Spin 导入、Table fixed 类型、size 类型)
|
2026-01-31 00:24:25 +08:00 |
|
WrBug
|
0bdc0c74d1
|
feat: Leader列表优化
- 后端过滤价值为0的仓位
- 持仓列表显示市场名称而非ID
- 列表移除分类和创建时间列
- 文案'跟单关系数'改为'跟单数'
- 持仓DTO添加title字段
|
2026-01-30 22:03:50 +08:00 |
|
WrBug
|
8f01588221
|
fix: 修复 TypeScript 编译错误
- 在 CopyTradingCreateRequest 和 CopyTradingUpdateRequest 接口中添加 pushFilteredOrders 字段
- 修复 InputNumber parser 函数的返回类型,应该返回 number 而不是 string
|
2026-01-12 14:59:42 +08:00 |
|
WrBug
|
9c303e0a82
|
feat: 添加推送已过滤订单功能并修复相关问题
- 新增推送已过滤订单功能(pushFilteredOrders),默认关闭
- 数据库迁移:添加 pushFilteredOrders 字段到模板表和跟单配置表
- 后端:在实体、DTO、Service 中添加 pushFilteredOrders 字段支持
- 前端:在模板新增、编辑、推送页面和跟单配置新增、编辑页面添加开关
- 多语言:添加中文、繁体中文、英文翻译
- 通知逻辑:发送过滤订单通知时检查 pushFilteredOrders 字段
- 修复新建跟单配置时 pushFilteredOrders 字段未生效的问题
- 修复手动输入模式下 pushFilteredOrders 被硬编码为 false 的问题
- 修复从模板填充表单时未加载 pushFilteredOrders 的问题
- 添加 CopyTradingTemplate 接口的 pushFilteredOrders 字段定义
- 修复新建和编辑页面的截止时间输入框交互问题
- 修复删除后失去焦点自动填充1的问题
- 优化 onChange 和 onBlur 处理逻辑,支持清空操作
|
2026-01-12 14:29:12 +08:00 |
|
WrBug
|
279806da2b
|
feat: 优化订单列表筛选功能,支持按市场标题搜索并改进分组体验
- 后端:MarketGroupedOrdersRequest 添加 marketId 和 marketTitle 字段
- 后端:买入/卖出订单分组接口支持市场 ID 模糊匹配和市场标题关键字筛选
- 前端:BuyOrdersTab 添加市场标题筛选,移除方向筛选,记录用户分组偏好
- 前端:SellOrdersTab 添加市场标题筛选,将方向筛选改为状态筛选,移除方向列
- 前端:MatchedOrdersTab 添加市场标题筛选和市场列显示
- 前端:所有搜索输入框添加 0.5 秒防抖优化
- 前端:分组偏好保存到 localStorage 以便跨会话持久化
|
2026-01-12 10:01:20 +08:00 |
|
WrBug
|
0327eaffe3
|
feat: 添加市场截止时间筛选功能
后端:
- 为 copy_trading 表添加 max_market_end_date 字段(毫秒时间戳)
- 为 markets 表添加 end_date 字段,迁移时清空已有数据
- 实现市场截止时间过滤逻辑(仅跟单截止时间小于设置时间的订单)
- 更新 CopyTradingService 支持 maxMarketEndDate 的创建和更新
- 更新 FilterResult 添加 FAILED_MARKET_END_DATE 状态
- 更新 CopyOrderTrackingService 传递 marketEndDate 参数
前端:
- 添加市场截止时间筛选 UI(支持小时和天两种单位)
- 输入限制:仅支持整数输入(precision=0)
- 更新 AddModal 和 EditModal 支持市场截止时间配置
- 更新过滤类型显示映射(MARKET_END_DATE)
- 添加多语言支持(中文、英文、繁体中文)
数据库迁移:
- V22: 合并添加 max_market_end_date 和 end_date 字段
- 迁移时清空 markets 表数据,确保所有数据都包含 end_date
|
2026-01-09 08:35:05 +08:00 |
|
WrBug
|
9ed5190bfe
|
feat: 添加关键字过滤功能并优化市场 slug 处理
主要变更:
1. 关键字过滤功能
- 添加关键字过滤模式(白名单/黑名单/禁用)
- 支持关键字列表配置(JSON 存储)
- 实现关键字匹配逻辑(不区分大小写)
- 数据库迁移:V20__add_keyword_filter.sql
2. 市场 slug 优化
- 区分显示用 slug 和跳转用 eventSlug
- 添加 event_slug 字段到 markets 表(V21__add_event_slug_to_markets.sql)
- 从 events[0].slug 获取跳转用的 slug 并存入数据库
- 减少 API 请求,提高性能
3. UI 优化
- 将创建/编辑跟单配置改为 Modal 方式
- 删除独立的 CopyTradingAdd 和 CopyTradingEdit 页面
- 更新前端跳转逻辑,优先使用 eventSlug
4. API 响应优化
- 更新 MarketResponse 添加 events 字段
- 统一从 events[0].slug 获取跳转用的 slug
- 更新所有相关服务使用新的 slug 获取逻辑
|
2026-01-08 17:47:00 +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 |
|
WrBug
|
2af2c0e86a
|
feat: 订单列表按市场分组并支持跳转到Polymarket
- 后端添加市场slug和分类字段
- 在 BuyOrderInfo、SellOrderInfo、MatchedOrderInfo DTO 中添加 marketSlug 和 marketCategory 字段
- 在 CopyTradingStatisticsService 中填充这些字段(从 Market 实体获取)
- 前端实现按市场分组功能
- 添加分组视图切换开关(列表视图/分组视图)
- 分组显示:按市场分组,显示市场名称、订单数、总金额、盈亏等统计信息
- 买入订单分组显示是否完全成交状态(全部成交/部分成交)
- 卖出订单分组显示总盈亏
- 支持展开/折叠功能(单个和全部)
- 桌面端默认全部展开,移动端默认全部折叠
- 市场名称点击跳转功能
- 添加 getPolymarketUrl 工具函数,根据市场分类构建URL
- sports 分类市场跳转到 /moneyline 页面(spread 市场)
- 其他分类市场跳转到普通市场页面
- 如果没有 slug,使用 marketId 作为后备(跳转到 condition 页面)
- 分组视图、列表视图、移动端卡片视图均支持点击跳转
- 多语言支持
- 添加分组相关翻译键:groupByMarket、expandAll、collapseAll、allFullyMatched、partiallyMatched、orderCount、totalAmount、totalPnl、statusBreakdown
|
2026-01-08 12:39:09 +08:00 |
|
WrBug
|
d376a82ccc
|
feat: 添加市场信息管理和订单ID复制功能
- 新增市场信息表和服务,支持市场名称缓存和自动更新
- 创建 Market 实体和 MarketRepository
- 实现 MarketService 提供市场信息查询和缓存
- 实现 MarketPollingService 每30秒自动检查并更新缺失的市场信息
- 添加数据库迁移 V19 创建 markets 表
- 订单列表显示市场名称
- 在 BuyOrderInfo、SellOrderInfo、MatchedOrderInfo 中添加 marketTitle 字段
- 订单查询时自动查询并填充市场名称
- 前端订单列表显示市场名称(优先显示名称,ID作为辅助信息)
- 前端订单ID复制功能
- 添加 isAutoGeneratedOrderId 和 copyToClipboard 工具函数
- 非自动生成的订单ID支持一键复制
- 买入、卖出、匹配订单列表均支持复制功能
- 仓位检查延迟检测机制优化
- 首次检测到仓位不存在时先记录,3分钟后再次检查
- 避免因API延迟导致的误判
|
2026-01-08 11:56:52 +08:00 |
|
WrBug
|
6e5ccdfe5c
|
fix: 修复 walletType 字段问题和 WebSocket 内存泄漏,优化账户导入 UI
后端修复:
- 添加 walletType 字段到 Account 实体和数据库(V17 迁移)
- 修复 refreshProxyAddress 方法使用正确的 walletType
- 修复 WebSocketTicketService 内存泄漏(添加定时清理任务)
前端优化:
- 账户导入改为 Modal 弹窗,提升用户体验
- 默认钱包类型改为 Web3 Wallet(safe),并将其选项排在首位
- 更新多语言文本:将 MetaMask(浏览器钱包)改为 Web3钱包
- 修复 walletTypeHelp Tooltip 换行显示问题
|
2026-01-03 18:29:39 +08:00 |
|
WrBug
|
f7f2411b9d
|
优化市场价格服务:移除降级查询逻辑,仅保留链上和订单簿查询
- 移除 CLOB Trades、Gamma Market Status、Gamma Market Price 查询逻辑
- 只保留链上 RPC 查询(市场结算结果)和 CLOB 订单簿查询
- 如果所有数据源都失败,抛出 IllegalStateException 异常
- 价格截位到 4 位小数(向下截断,不四舍五入)
- 移除未使用的导入和方法(MarketResponse, JsonUtils, OutcomeResult 等)
- 所有调用方都已正确处理异常,无需额外修改
|
2026-01-02 00:14:42 +08:00 |
|
WrBug
|
1580b60d24
|
feat: 实现RPC节点管理功能
- 后端功能:
- 添加RPC节点配置管理(增删改查、优先级调整)
- 实现节点健康检查和自动故障转移
- 修复Retrofit baseUrl处理问题(使用拦截器动态替换URL)
- 添加RPC节点可用性验证(创建前验证)
- 默认节点作为兜底,不返回给前端,始终排在最后
- API健康检查使用动态获取的可用节点
- 前端功能:
- 添加RPC节点设置页面
- 支持添加、删除、检查节点
- 支持调整节点优先级
- 完整的多语言支持(中文简体/繁体、英文)
- 添加菜单项多语言key
- 数据库:
- 添加RPC节点配置表迁移脚本
|
2025-12-25 23:58:50 +08:00 |
|
WrBug
|
c20e0138df
|
feat: 添加最大仓位限制配置功能
后端变更:
- 添加最大仓位金额(maxPositionValue)和最大仓位数量(maxPositionCount)配置字段
- 实现按市场检查仓位限制的过滤逻辑
- 添加数据库迁移脚本 V11__add_max_position_config.sql
前端变更:
- 重构账户导入和Leader添加为可复用组件(AccountImportForm, LeaderAddForm)
- 在CopyTradingAdd页面集成账户导入和Leader添加Modal
- 在CopyTradingAdd/CopyTradingEdit页面添加最大仓位限制配置项
- 补充所有多语言文件中的缺失键,确保zh-CN/zh-TW/en三种语言文件一致
功能说明:
- 支持设置单个市场的最大仓位金额限制(USDC)
- 支持设置单个市场的最大仓位数量限制
- 两个限制可以同时启用,下单前会检查当前市场仓位是否超过限制
|
2025-12-23 00:56:04 +08:00 |
|
WrBug
|
a31ed31c98
|
feat: 优化系统配置和统计功能
- 系统配置支持显示完整的 Builder API Key(不再部分显示)
- Secret 和 Passphrase 使用密码输入框,支持眼睛图标切换显示/隐藏
- 移除已配置提示,简化用户界面
- 修复总卖出金额统计:使用 SellMatchDetail 计算,确保准确性
- 修复 matchSellOrder 中价格不一致问题:matchDetails 使用实际卖出价格
- 移动端 Leader 列表移除网站显示行
- 优化订单创建前订单簿匹配检查,避免 FAK 订单失败
|
2025-12-11 03:17:41 +08:00 |
|
WrBug
|
f0c40533cf
|
优化跟单过滤逻辑和卖出价格计算
- 优化订单簿请求:仅在需要时请求,避免不必要的API调用
- 卖出价格改为市价卖出:优先使用订单簿bestBid,失败则使用Leader价格,固定按90%计算
- 价格容忍度默认值:如果为0,自动使用5%
- 使用枚举和数据类优化checkFilters方法:
- 新增FilterResult数据类和FilterStatus枚举
- 移除无用字段isBuyOrder参数
- 使用类型安全的枚举替代字符串判断
- 优化代码结构:减少if-else嵌套,使用链式调用
- 移除最小订单簿深度功能(minOrderbookDepth)
- 优化最小订单深度逻辑:检查所有方向(买盘+卖盘)的总深度
|
2025-12-09 00:52:50 +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
|
3369dbb248
|
feat: 添加价格区间过滤功能并优化UI
- 添加价格区间过滤功能(minPrice/maxPrice)
- 数据库迁移:添加价格区间字段到 copy_trading 和 copy_trading_templates 表
- 后端:实体类、DTO、服务层支持价格区间配置和过滤
- 前端:模板和配置页面添加价格区间配置UI
- 过滤逻辑:在订单创建前检查价格是否在配置区间内
- 优化价格区间文案,使其更易懂
- 明确说明是 Leader 交易价格
- 详细说明三种配置方式(区间、只填最低价、只填最高价)
- 补充多语言翻译
- 为 zh-CN、zh-TW、en 添加价格区间相关翻译
- 添加价格区间过滤类型翻译
- 添加通用翻译(prev、next、items、total)
- 修复复制模板功能
- 补充缺失的过滤条件字段(minOrderDepth、maxSpread、minOrderbookDepth、minPrice、maxPrice)
- 在复制模板表单中添加所有过滤条件配置项
- 已过滤订单列表优化
- 添加移动端卡片样式布局
- 在筛选下拉菜单中添加价格区间过滤类型选项
- 订单页面返回按钮优化
- 买入订单、卖出订单、匹配关系页面的返回按钮改为返回上一页(navigate(-1))
- 使用多语言支持返回按钮文本
|
2025-12-05 23:52:49 +08:00 |
|
WrBug
|
9b8150cf92
|
feat: 实现跟单筛选条件记录和展示功能
- 新增 FilteredOrder 实体和数据库表,记录被过滤的订单信息
- 在筛选失败时自动记录到数据库并发送 Telegram 通知
- 创建 FilteredOrderService 和 API 接口,支持查询被过滤订单列表
- 前端新增被过滤订单列表页面,支持按过滤类型筛选
- 修复价差计算逻辑,使用数组最大值和最小值而非第一个元素
- 优化编辑页面 UI,钱包和 Leader 显示与创建页面一致(只读)
- 添加多语言支持(中文、繁体中文、英文)
|
2025-12-05 05:18:20 +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
|
2ad558da36
|
feat: 优化账户管理和订单功能
- 重置密码后自动跳转到登录页,登录页添加重置密码入口
- 移除默认账户相关逻辑和UI
- 移除前端API Key自动获取提示文案(后端保留自动获取逻辑)
- 修复SELL订单takerAmount计算精度问题,使用精确计算避免精度丢失
- 修复导入账户页面白屏问题(缺少Alert组件导入)
- 持仓出售支持百分比模式,使用原始精度数据计算,支持小数百分比
- 优化订单金额计算逻辑,确保与SDK一致
|
2025-12-03 21:39:48 +08:00 |
|
WrBug
|
792ddb8635
|
删除后端无用日志
- 删除所有 logger.debug 调试日志
- 删除过于详细的 logger.info 常规操作日志
- 保留 logger.error 和 logger.warn 重要错误和警告日志
- 优化日志输出,减少生产环境日志噪音
|
2025-12-02 22:22:39 +08:00 |
|
WrBug
|
dffbc5124f
|
feat: 实现跟单订单跟踪和统计功能
- 添加订单跟踪实体和Repository(CopyOrderTracking, SellMatchRecord, SellMatchDetail)
- 实现订单跟踪服务(CopyOrderTrackingService),支持买入/卖出订单的创建和匹配
- 实现跟单统计服务(CopyTradingStatisticsService),支持盈亏统计和订单列表查询
- 添加失败交易记录(FailedTrade)和已处理交易去重(ProcessedTrade)
- 实现轮询服务(CopyTradingPollingService),使用Data API /activity接口轮询Leader交易
- 支持多元市场(使用outcomeIndex而不是YES/NO)
- 重试时重新生成salt并重新签名
- 添加风险控制检查(每日订单数、每日亏损、单笔订单大小限制)
- 支持价格容忍度和延迟跟单
- 添加数据库迁移文件(V8, V9, V10)
- 前端:账户管理显示代理钱包地址,添加复制功能,移除默认账户逻辑
- 修复API响应字段映射问题(orderID, transactionsHashes)
- 缩短轮询间隔到2秒
|
2025-12-02 03:34:43 +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
|
5b458b9b0c
|
feat: 实现订单推送服务和 WebSocket 重连机制
- 实现订单推送服务,支持多账户订单实时推送
- 添加 WebSocket 自动重连机制,支持指数退避策略
- 修复订单详情接口 L2 认证问题,通过 PolymarketClobService 获取
- 配置 Gson lenient 模式,支持解析格式不严格的 JSON
- 添加响应日志拦截器,便于调试 API 响应问题
- 使用 Gamma API 获取市场信息,支持通过 condition_ids 查询
- 修复字段映射问题,使用 @SerializedName 替代 @JsonProperty
- 订单推送消息包含订单详情和市场信息
|
2025-11-27 14:51:46 +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
|
389a758c89
|
fix: 修复交易统计和L2认证问题
- 修复交易统计数据计算逻辑(总订单数、已完成订单数、持仓数量)
- 修复L2认证签名生成,支持URL-safe base64格式的secret
- 添加标准HTTP请求头以匹配clob-client行为
- 移除数据库加密(私人应用,明文存储)
- 添加自动获取API Key功能
- 优化持仓数量统计(包括正负仓位)
- 添加EIP-712签名和L1认证支持
- 更新前端账户管理界面
|
2025-11-26 22:26:50 +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 |
|