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
6a0fcdaef2
修复市场条件查询的 RPC 调用错误
...
- 修复 BlockchainService.getCondition 方法:将错误的 conditions(bytes32) 函数调用改为正确的 getOutcomeSlotCount(bytes32) 和 payoutDenominator(bytes32) 函数调用,解决 execution reverted 错误
- 改进 MarketPriceService 的错误处理:当链上查询出现 RPC 错误时,降级到 CLOB API 或 Gamma API 查询,而不是直接抛出异常,提高容错性
2026-01-07 12:22:44 +08:00
WrBug
9a00bb19dc
feat: 添加 Docker 部署日志级别环境变量支持
...
- 在 application.properties 中支持通过 LOG_LEVEL_ROOT 和 LOG_LEVEL_APP 环境变量配置日志级别
- 在 docker-compose.yml 和 docker-compose.prod.yml 中添加日志级别环境变量配置
- 在 deploy.sh 的 .env 模板中添加日志级别配置说明
- 支持通过环境变量动态配置日志级别,无需修改配置文件
- 默认值:root=INFO, app=DEBUG
2026-01-07 11:26:03 +08:00
WrBug
3d603cac32
fix: 修复 RPC 错误时误创建自动卖出记录的问题
...
- 当链上查询市场条件出现 RPC 错误(execution reverted)时,不再降级到其他数据源
- 抛出异常让调用方决定如何处理,避免在市场不存在或尚未创建时误判为已卖出
- 修改 getPriceFromChainCondition 返回 Pair<BigDecimal?, Boolean>,第二个值表示是否发生 RPC 错误
- 在 getCurrentMarketPrice 中检测到 RPC 错误时抛出异常,PositionCheckService 会捕获并跳过该市场的处理
2026-01-07 10:55:11 +08:00
WrBug
f257457ad3
feat: 实现 Polymarket Maker Rebates Program 费率支持
...
- 添加费率查询 API 接口 (getFeeRate)
- 修正 API 返回字段名:使用 base_fee 而非 fee_rate_bps(与 TypeScript clob-client 一致)
- 在所有订单创建处动态获取费率:
* 跟单买入订单 (processBuyTrade)
* 跟单卖出订单 (matchSellOrder)
* 账户卖出订单 (sellPosition)
- 费率获取失败时降级到默认值 "0",确保系统可用性
- 添加详细的日志记录,便于监控和调试
参考文档: https://docs.polymarket.com/developers/market-makers/maker-rebates-program
2026-01-07 00:31:07 +08:00
WrBug
e48149a19b
feat: 优化跟单仓位检查逻辑,使用本地订单数据库解决推送延迟问题,并引入混合检查机制
2026-01-05 10:49:59 +08:00
WrBug
c0e0942404
fix: prevent duplicate telegram notifications for same orderId
...
- feat: add deduplication cache in TelegramNotificationService
- fix: skip sending notification if orderId was sent within last 5 minutes
2026-01-04 21:36:02 +08:00
WrBug
6b8c11f171
fix: refine price rounding and optimize order polling
...
- fix: round buy prices UP and sell prices DOWN to 2 decimal places to match USDC precision
- perf: optimize order status polling by filtering fully_matched orders in SQL
- chore: add debug logging for order creation and FAK error investigation
2026-01-04 21:30:46 +08:00
WrBug
3e667b70fd
feat: enhance copy trading logic and UI
...
- fix: correct copyRatio scaling (divide by 100)
- fix: enforce minimum order size with round-up logic
- feat: customize Telegram notification icons
- feat: optimize frontend order list (active loading, refresh buttons)
- refactor: optimize OnChain WebSocket connection management
2026-01-04 20:36:41 +08:00
WrBug
2bb8cbc564
移除跟单信号中的轮询 activity 接口逻辑
...
- 移除 CopyTradingMonitorService 中的 pollingService 相关调用
- 删除不再使用的 CopyTradingPollingService 类
- 跟单信号现在完全依赖链上 WebSocket 监听,不再使用轮询接口
- 优化账户列表接口性能(仅返回基本信息,不查询统计数据)
- 改进 PositionCheckService 的错误处理(市场价格获取失败时跳过处理)
2026-01-04 15:50:23 +08:00
WrBug
95930332df
refactor: 移除刷新代理钱包接口,增加copyRatio精度支持
...
- 移除刷新代理钱包相关接口和方法
- AccountController: 移除 /refresh-proxy 和 /refresh-all-proxies 接口
- AccountService: 移除 refreshProxyAddress 和 refreshAllProxyAddresses 方法
- 增加 copyRatio 字段精度支持
- CopyTrading: copyRatio 精度从 DECIMAL(10,2) 增加到 DECIMAL(20,8)
- CopyTradingTemplate: copyRatio 精度从 DECIMAL(10,2) 增加到 DECIMAL(20,8)
- 新增数据库迁移脚本 V18__increase_copy_ratio_precision.sql
- 前端工具函数
- 添加 formatNumber 函数用于格式化数字显示
修复的文件:
- AccountController.kt
- AccountService.kt
- CopyTrading.kt
- CopyTradingTemplate.kt
- frontend/src/utils/index.ts
- V18__increase_copy_ratio_precision.sql
2026-01-04 12:49:20 +08:00
WrBug
185cade11d
fix: 修复按比例跟单金额精度问题,对金额进行向上取整处理
...
- 修复按比例计算的订单金额因精度问题导致低于最小限制的问题
- 对按比例计算的金额进行向上取整到2位小数(USDC精度)
- 如果向上取整后的金额仍低于最小限制,调整 buyQuantity 以满足最小限制
- 优化 BigDecimal.div 扩展函数,支持精度和舍入模式参数(带默认值)
修复的文件:
- MathExt.kt: 添加 div 扩展函数的重载版本,支持精度和舍入模式参数
- CopyOrderTrackingService.kt: 修复订单金额精度处理逻辑
问题:
订单金额 0.000999999860888892000000 因精度问题低于最小限制 1.00000000,
导致订单被错误跳过。
解决方案:
1. 对按比例计算的金额向上取整到2位小数
2. 如果向上取整后仍低于最小限制,调整数量以满足最小限制
3. 确保调整后的订单金额 >= minOrderSize
2026-01-04 12:46:35 +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
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
d6027e48eb
fix: 优化订单状态更新逻辑,避免误删订单和匹配明细
...
- 先检查 HTTP 状态码,非 200 的都跳过,不删除订单
- 只有当 HTTP 200 且响应体为 null 时,才表示订单不存在
- 保护已部分卖出的订单,如果已部分卖出则保留用于统计
- 避免因临时网络问题或 API 错误导致订单和 sell_match_detail 被误删
2026-01-02 04:13:10 +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
d96eb3e00a
fix: 恢复 V1 migration 文件,避免 checksum 不匹配
...
保持 V1__init_database.sql 的原有内容不变,避免破坏已有数据库的 migration checksum。
failed_trade 表的删除将通过 V16 migration 处理。
2026-01-01 22:33:23 +08:00
WrBug
cc1a732984
refactor: 移除下单失败存储数据库的功能
...
- 删除 FailedTrade 实体类和 FailedTradeRepository
- 从 CopyOrderTrackingService 中移除失败交易存储逻辑
- 移除 recordFailedTrade 方法
- 移除检查失败交易的代码
- 创建 Flyway migration V16 删除 failed_trade 表
- 从 V1__init_database.sql 中移除 failed_trade 表创建语句
下单失败时仅记录日志,不再存储到数据库
2026-01-01 22:24:47 +08:00
WrBug
3d05b13298
fix: 修复内存泄漏问题,缓存和复用 Retrofit/OkHttpClient 实例
...
问题:
- 每次调用 createClobApi、createGammaApi 等方法都创建新的 OkHttpClient 和 Retrofit 实例
- OkHttpClient 包含连接池、线程池等资源,导致内存不断增长
- 运行几小时后内存从 400MB 涨到 1GB+
解决方案:
- 为不需要认证的 API 创建共享的 OkHttpClient 实例
- Gamma API、Data API、GitHub API、不带认证的 CLOB API 使用单例客户端
- 带认证的 CLOB API 按钱包地址缓存(每个账户一个客户端)
- RPC API 按 RPC URL 缓存
- Builder Relayer API 按 relayerUrl 缓存
- 添加 @PreDestroy 方法清理缓存
效果:
- 大幅减少内存占用,避免内存泄漏
- 复用连接池和线程池,提高性能
- 内存占用将保持稳定,不再持续增长
2026-01-01 22:07:24 +08:00
WrBug
fe2db11b75
其他代码修改
...
- CopyOrderTrackingRepository: 添加查询方法
- PolymarketClobService: 功能更新
- CopyOrderTrackingService: 逻辑优化
- OrderStatusUpdateService: 功能增强
- TelegramNotificationService: 通知优化
2026-01-01 12:03:05 +08:00
WrBug
5c18cbd95d
统一 Gson 使用,改为依赖注入方式
...
- 在 GsonConfig 中统一配置 Gson Bean(lenient 模式)
- 所有 Service 类通过构造函数注入 Gson 实例
- RetrofitFactory、BlockchainService、PolymarketApiKeyService 等统一使用注入的 Gson
- AccountService、PositionCheckService 添加 JsonUtils 注入
- OnChainWsUtils(object 单例)使用私有 Gson 实例(与 GsonConfig 配置一致)
- 移除所有 GsonConverterFactory.create() 无参调用,统一使用注入的 Gson
2026-01-01 12:01:17 +08:00
WrBug
9157203653
fix: 修复移动端 API 健康页面缺少数据显示
...
- 移动端添加 URL 地址显示
- 移动端添加状态文本显示(正常/异常/未配置)
- 移动端添加消息/状态信息显示
- 移动端和桌面端显示信息保持一致
2025-12-28 05:04:27 +08:00
WrBug
e96a0b6279
feat: 优化 Telegram 推送消息格式
...
- 添加价格和数量截位处理:
* 价格保留最多4位小数(截断,不四舍五入)
* 数量保留最多2位小数(截断,不四舍五入)
- 优化账户信息显示格式:
* 有账户名和钱包地址时显示:账户名(0x123...123)
* 只有账户名时显示账户名
* 只有钱包地址时显示脱敏后的地址
* 都没有时显示未知账户
- 统一使用 buildAccountInfo 函数构建账户信息
- 应用到所有消息类型:订单成功、订单失败、订单被过滤、仓位赎回
2025-12-28 04:58:30 +08:00
WrBug
89fb980da7
refactor: 移除 polygon.rpc.url 配置,使用 RpcNodeService 统一管理 RPC 节点
...
- 删除 application.properties 中的 polygon.rpc.url 配置
- 更新 ApiHealthCheckService 直接使用 RpcNodeService.getHttpUrl()
- 删除所有 Docker Compose 配置中的 POLYGON_RPC_URL 环境变量
- 删除所有部署脚本中的 POLYGON_RPC_URL 环境变量
- 更新所有文档,移除 POLYGON_RPC_URL 相关说明
- 删除 application.properties 中无用的 position.push 配置项
- 修正日志配置中的包名(polyhermes -> polymarketbot)
现在系统通过 RpcNodeService 从数据库读取 RPC 节点配置,用户可以通过系统设置页面管理 RPC 节点,不再需要环境变量配置。
2025-12-28 04:51:07 +08:00
WrBug
9f0b22fab5
feat: 优化市场状态查询和自动订单通知
...
- 使用 Retrofit 替代直接 HTTP 请求查询市场信息(通过 clob_token_ids)
- 实现链上查询市场结算结果(方案1):通过 ConditionalTokens 合约的 getCondition 方法实时获取市场结算状态
- 自动生成的订单(AUTO_、AUTO_FIFO_、AUTO_WS_)不发送 Telegram 通知
- 添加 ABI 编码解析工具方法(decodeUint256Array、decodeConditionResult)
- 优化 PositionCheckService:优先使用链上查询,失败时降级到 API 查询
2025-12-28 00:02:29 +08:00
WrBug
5e544cda07
fix: 修复固定金额模式卖出数量计算逻辑
...
- 删除卖出订单的 notificationSent 字段,使用 priceUpdated 作为共用字段
- 添加 leaderBuyQuantity 字段,在创建 CopyOrderTracking 时存储 Leader 买入数量
- 修复固定金额模式下卖出数量计算:优先使用存储的 leaderBuyQuantity,避免 API 查询失败
- 添加数据库迁移 V14 和 V15
- 优化 calculateSellQuantityForFixedMode 方法,支持新数据和旧数据兼容
2025-12-26 05:42:53 +08:00
WrBug
62669719d9
feat: 实现卖出订单价格轮询更新和订单状态管理
...
- 添加 price_updated 字段到 sell_match_record 表,用于标记价格是否已更新
- 创建 OrderStatusUpdateService 定时任务服务,每5秒轮询一次:
- 更新卖出订单的实际成交价(通过 orderId 查询订单详情)
- 清理已删除账户的订单记录
- 修改 processSellTrade:下单完成后不再立即查询价格,直接保存,等待定时任务更新
- 添加 orderId 格式验证:非0x开头的直接标记为已更新,0x开头的等待定时任务更新
- 启用 Spring 定时任务功能(@EnableScheduling)
- 将 getActualExecutionPrice 方法改为 public,供定时任务调用
2025-12-26 02:20:48 +08:00
WrBug
a6ca6cc3ff
feat: 支持 RPC 节点启用/禁用功能
...
- 后端:更新 RpcNodeService,确保禁用的节点被忽略
- getAllNodesWithDefault() 只返回启用的节点
- checkAllNodesHealth() 只检查启用的节点
- getAvailableNode() 已正确实现,只查询启用的节点
- 前端:添加启用/禁用开关功能
- 在 RpcNodeSettings 页面添加启用列,使用 Switch 组件
- 添加 handleToggleEnabled 函数处理启用/禁用切换
- 添加多语言支持(中文简体、繁体、英文)
2025-12-26 01:57:22 +08:00
WrBug
d1f351108f
fix: 修复跟单卖出订单的 API 凭证解密和精度问题
...
- 修复 processSellTrade 中 API 凭证未解密的问题,与 processBuyTrade 保持一致
- 修复 SELL 订单的 makerAmount 和 takerAmount 精度问题:
- makerAmount (shares) 最多 2 位小数(符合 API 要求)
- takerAmount (USDC) 最多 4 位小数(符合 API 要求)
2025-12-26 01:50:03 +08:00
WrBug
c4ac3a8fe0
feat: 实现链上 WebSocket 监听和并行监控策略
...
- 创建 OnChainWsService,支持通过 Polygon RPC eth_subscribe 实时监听链上交易
- 实现并行监控策略:链上 WS 和轮询同时运行,哪个数据先返回用哪个
- 支持通过 eth_unsubscribe 取消单个 Leader 的订阅
- 在 CopyOrderTrackingService 中添加 Mutex 保证线程安全
- 实现链上交易解析逻辑(USDC Transfer + ERC1155 Transfer)
- 实现 Gamma API 元数据补齐逻辑
- 优化 WebSocket 连接管理:只创建一个连接,没有跟单配置时自动取消
- 跟单配置生效/失效时及时更新 WebSocket 订阅
- 使用 Gson 替换所有 JSON 解析,JsonRpcResponse.result 使用 JsonElement 类型
- 添加相关文档:copy-trading-logic-summary.md 和 copy-trading-monitor-strategy.md
2025-12-26 01:36:00 +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
0625c62e36
feat: 优化跟单买入逻辑和错误处理
...
- 更新 Twitter 链接为 @polyhermes
- 简化订单创建失败日志,只保留 code 和 errorBody
- 修复 @Transactional 注解问题(类改为 open class)
- 改进唯一键冲突异常处理,支持并发场景
- 整理跟单买入和重试逻辑,使用常量配置
- 重试延迟从 1 秒调整为 3 秒
- 添加订单簿匹配检查,避免 FAK 订单失败
- 前端移除 Leader 管理的分类相关设置和显示
- 补充多语言翻译(AccountImport 和 CopyTradingList)
2025-12-11 02:58:50 +08:00
WrBug
cc41df2f24
feat: 优化前端UI和功能
...
- 修复仓位轮询检查逻辑,增加2分钟延迟判断
- 统一订单页面为Tab切换模式,使用Modal展示
- 优化移动端统计UI,改为两列线性布局
- 简化过滤类型标签,移除括号说明
- 账户管理列表优化:钱包地址显示前6后4,移除API凭证和活跃订单列
- 修复复制按钮功能,添加降级方案和Toast提示
- 修复菜单层级问题,订单下拉直接显示已成交和已过滤订单
- 添加编辑功能Modal化
- 完善多语言支持
2025-12-09 06:23:51 +08:00
WrBug
cdadce467e
fix: 修复仓位轮询检查逻辑和时区问题
...
- 修复仓位轮询检查:当仓位不存在时,只有当订单创建时间超过2分钟才认为仓位被出售,避免刚创建的订单被误判
- 修复时区问题:所有时间格式化使用系统时区,移除硬编码的时区配置
- DateUtils 添加 formatDateTime() 函数,使用 ZoneId.systemDefault()
- TelegramNotificationService 所有时间格式化使用 DateUtils.formatDateTime()
- Dockerfile 和启动脚本移除时区配置,自动使用系统时区
2025-12-09 04:48:25 +08:00
WrBug
6e4d4f1ef5
fix: 修复仓位轮询检查逻辑,避免刚创建的订单被误判为已卖出
...
- 当仓位不存在时,只有当订单创建时间超过30秒才认为仓位被出售
- 避免因API延迟导致刚创建的订单被误判为已卖出状态
2025-12-09 04:23:23 +08:00
WrBug
db16dea333
feat: 添加市场结算判断逻辑,支持赢了和输了的价格处理
...
- 添加市场已关闭时的结算判断逻辑
- 如果市场已关闭且该 outcome 赢了(价格 >= 0.99),返回价格为 1
- 如果市场已关闭且该 outcome 输了(价格 <= 0.01),返回价格为 0
- 优先使用 outcomePrices(结算价格数组)判断
- 如果没有 outcomePrices,使用 bestBid 判断
- 支持多元市场的价格转换
- 当没有仓位但有未完成订单时,正确判断市场结算状态并设置价格
2025-12-09 01:12:53 +08:00
WrBug
d6f0914eeb
fix: 修复健康检查路径不一致问题
...
- 修复 start.sh 中健康检查路径:从 /api/health 改为 /api/system/health
- 修复 Dockerfile 中健康检查路径:从 /api/health 改为 /api/system/health
- 确保健康检查路径与实际 HealthController 端点一致
2025-12-09 01:03:21 +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
d393bd7b40
fix: 修复未实现盈亏和持仓价值计算逻辑
...
- 修复同一市场多个订单时未实现盈亏重复计算的问题
- 按市场聚合订单,计算加权平均买入价格
- 修复持仓价值重复计算的问题
- 确保总盈亏和总盈亏百分比计算正确
2025-12-08 23:10:03 +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
89e3c726b2
feat: 优化UI和功能,添加图标生成脚本
...
- 修复未匹配订单更新逻辑,添加去重机制避免重复赎回
- 优化跟单配置列表,移除订单菜单中的编辑选项
- 限制账户编辑功能,只允许编辑账户名称
- 优化Layout布局,将PC端图标移至标题下方,添加Telegram群链接
- 添加图标生成脚本到polymarket-demo目录
- 添加多个尺寸的favicon图标文件
2025-12-07 14:45: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
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