WrBug
|
c9769aa17a
|
fix: 修复比例模式计算数量错误
- 移除 copyRatio 多余的除以 100 操作
- copyRatio 字段存储的是倍数值(如 1.3 表示 130%),不需要再转换
- 影响:买入数量计算、固定金额模式卖出数量计算
- 修复示例:配置 130% 后,Leader 买入 6.25 份,跟单数量应为 8.125 而不是 0.08125
|
2026-01-20 10:45:03 +08:00 |
|
WrBug
|
07b4d654b4
|
清理 MarketPollingService 调试日志
- 删除多余的 debug 日志输出
v1.1.15
|
2026-01-19 12:50:34 +08:00 |
|
WrBug
|
b65827038f
|
添加订单详情查询脚本
- 添加 get-order-detail.js 脚本,用于获取 Polymarket 订单详情
- 添加 package.json 配置文件
- 忽略 package-lock.json (已在 .gitignore 中通过 node_modules/ 规则处理)
|
2026-01-19 12:50:20 +08:00 |
|
WrBug
|
d768da72c6
|
清理 MarketPollingService 中多余的 debug 日志
|
2026-01-19 12:48:18 +08:00 |
|
WrBug
|
7385efff1a
|
优化订单详情为null时的处理逻辑
- 当订单详情为null且已发送通知超过60秒时,将订单状态改为fully_matched而不是删除
- 避免已经通过订单详情更正并发送通知的订单被意外删除
- fully_matched状态的订单不会被包含在待查询列表中,自动跳过查询
|
2026-01-19 12:47:03 +08:00 |
|
WrBug
|
3e2e97e572
|
fix: 修复 CopyOrderTrackingService 和 CopyTradingService 的 @Transactional 自调用问题
1. CopyOrderTrackingService 修复
- 实现 ApplicationContextAware 接口
- 添加 getSelf() 方法获取代理对象
- 在 processTrade() 中通过代理调用 processBuyTrade() 和 processSellTrade()
- 确保两个子方法的 @Transactional 生效
2. CopyTradingService 修复
- 实现 ApplicationContextAware 接口
- 添加 getSelf() 方法获取代理对象
- 在 updateCopyTradingStatus() 中通过代理调用 updateCopyTrading()
- 确保内部调用的 @Transactional 生效
修改的文件:
- CopyOrderTrackingService.kt
- CopyTradingService.kt
v1.1.14
|
2026-01-16 10:28:39 +08:00 |
|
WrBug
|
ae68a33c1e
|
fix: 优化仓位列表分页和统计功能
- 添加完整的分页功能,支持移动端和桌面端
- 移动端:自定义分页控件,支持切换每页 10/20/50 条
- 桌面端:使用 Ant Design Table 分页,支持切换每页 10/20/50 条
- 优化仓位统计逻辑,区分当前仓位和历史仓位
- 当前仓位:显示浮动盈亏和已实现盈亏
- 历史仓位:移除盈亏统计显示
- 筛选条件变化时自动重置到第一页
|
2026-01-16 10:14:54 +08:00 |
|
WrBug
|
deea59fdbf
|
fix: 修复 OrderStatusUpdateService 的事务和并发问题
1. 解决 @Transactional 自调用问题
- 实现 ApplicationContextAware 接口
- 通过代理对象调用 @Transactional 方法,确保事务生效
2. 防止定时任务并发执行
- 添加 updateJob 跟踪上一次任务状态
- 如果上一次任务还在执行,跳过本次执行
- 避免多个更新任务同时运行导致的数据竞争
修改的方法:
- updateOrderStatus(): 添加并发控制
- cleanupDeletedAccountOrders(): 通过代理对象调用
- checkAndDeleteUnfilledOrders(): 通过代理对象调用
- updatePendingSellOrderPrices(): 通过代理对象调用
- updatePendingBuyOrders(): 通过代理对象调用
|
2026-01-15 15:21:29 +08:00 |
|
WrBug
|
b90f86b081
|
fix: 修复 @Transactional 方法的可见性问题
将 OrderStatusUpdateService 中 4 个使用 @Transactional 的方法从 private 改为 public,
确保 Spring 能够正确代理这些方法。
修改的方法:
- cleanupDeletedAccountOrders()
- checkAndDeleteUnfilledOrders()
- updatePendingSellOrderPrices()
- updatePendingBuyOrders()
参考 UserService.kt 的实现模式,@Transactional 方法必须是 public 的。
|
2026-01-15 15:05:53 +08:00 |
|
WrBug
|
f6f5866118
|
refactor: 清理 PositionPollingService 代码
- 移除多余的空行
- 移除调试日志
v1.1.13
|
2026-01-15 04:35:11 +08:00 |
|
WrBug
|
b1e69135b8
|
feat: 添加跟单订单来源字段
- 在 CopyOrderTracking 实体添加 source 字段,记录订单来源
- 支持 activity-ws(Polymarket WebSocket)和 onchain-ws(OnChain WebSocket)两种来源
- 更新 processBuyTrade 方法,接收并保存 source 参数
- 更新 OrderStatusUpdateService,保留原始 source 信息
- 添加数据库迁移脚本 V25
- 统一 CopyTradingWebSocketService 使用 activity-ws 作为来源
|
2026-01-15 04:33:55 +08:00 |
|
WrBug
|
0c7f34a28a
|
fix: 添加事务注解修复删除操作异常
- 在 cleanupExpiredProcessedTrades 方法上添加 @Transactional 注解
- 修复 TransactionRequiredException 异常
- 删除操作必须在事务中执行
|
2026-01-15 04:19:46 +08:00 |
|
WrBug
|
c53fcde5d7
|
feat: 添加已处理交易记录定时清理服务
- 创建 ProcessedTradeCleanupService 定时清理过期的去重记录
- 保留时间设置为10分钟(重复订单通常10秒后就不会出现)
- 清理间隔为10分钟,避免数据库空间浪费
- 记录清理日志,便于监控和调试
|
2026-01-15 04:17:54 +08:00 |
|
WrBug
|
81a620af12
|
feat(activity-ws): 同时监听 trades 和 orders_matched,添加 txHash 去重
- 订阅消息同时包含 trades 和 orders_matched 两种类型
- 添加 processedTxHashes Cache (LRU 100 条,10 分钟过期)
- 防止同一交易被重复处理
- 新增 duplicateTxHashMessages 统计指标
- 更新日志信息,明确标注监听范围
|
2026-01-15 04:13:27 +08:00 |
|
WrBug
|
5f44a0ca20
|
优化订单状态更新和统计服务
1. 订单详情为 null 且已部分卖出的订单超时清理
- 新增 PARTIAL_SOLD_CLEANUP_WINDOW_MS 常量(1小时)
- 超过1小时无法获取详情的已部分卖出订单自动清理
- 避免无效订单长期占用数据库空间
2. 优化买入订单分组排序逻辑
- 按最近买入订单时间排序,提升用户体验
- 修复日志中的错误描述(卖出订单列表)
3. 代码格式化优化
|
2026-01-15 02:28:11 +08:00 |
|
WrBug
|
5d2cf945f3
|
fix: 修复 AccountOnChainMonitorService 中 JsonNull 导致的崩溃
- 增加 receiptRpcResponse.result.isJsonNull 检查
- 防止在链上查询返回 JsonNull 时调用 asJsonObject() 抛出 IllegalStateException
- 优化空值处理逻辑,确保程序安全退出
|
2026-01-15 02:10:49 +08:00 |
|
WrBug
|
227a38fa89
|
Merge branch 'main' into dev
|
2026-01-14 15:00:41 +08:00 |
|
WrBug
|
abcc004606
|
fix: 添加订单查询失败的兜底逻辑,避免因网络异常误删订单
- 新增 orderNullDetectionTime 缓存,记录订单详情首次检测为 null 的时间戳
- 订单详情为 null 时,首次检测不删除,等待 1 分钟重试窗口
- 超过重试窗口仍为 null 才删除订单
- 订单详情正常或已部分卖出时清除缓存
- 避免 ResponseLoggingInterceptor 导致的响应体被消费问题
修改文件:
- OrderStatusUpdateService.kt
相关 issue: 订单 0xd245a852... 因响应体为 null 被误删
|
2026-01-14 14:55:05 +08:00 |
|
WrBug
|
64391503c2
|
fix: 修复最大仓位金额未生效和交易receipt解析问题
1. 修复 CopyTradingFilterService 中最大仓位金额(maxPositionValue)未生效的问题
- 当只配置了最大仓位金额但未配置 maxSpread 或 minOrderDepth 时,
仓位检查被跳过导致过滤失效
- 将仓位检查移到 needOrderbook 判断之前,确保始终执行仓位检查
2. 修复 OnChainWsService 中交易 receipt 为 JsonNull 时的空指针问题
- 添加 JsonNull 检查,防止解析失败时出现异常
v1.1.12
|
2026-01-14 05:04:31 +08:00 |
|
WrBug
|
92b75d1926
|
refactor: 将 Polymarket API URL 配置改为代码常量
- 创建 PolymarketConstants 常量类,集中管理所有 Polymarket API URL
- 更新所有服务类,将配置注入改为使用常量:
* ApiHealthCheckService: 移除配置注入,使用常量
* RetrofitFactory: 移除 CLOB 和 Gamma API URL 配置注入
* RelayClientService: 移除 Builder Relayer URL 配置注入
* BlockchainService: 移除 Data API URL 配置注入
* PolymarketApiKeyService: 移除 CLOB API URL 配置注入
* RetrofitConfig: 移除 CLOB API URL 配置注入
* OrderPushService: 移除 RTDS WebSocket URL 配置注入
* PolymarketActivityWsService: 移除 Activity WebSocket URL 配置注入
* CopyTradingWebSocketService: 移除 User WebSocket URL 配置注入
* PolymarketWebSocketHandler: 移除 RTDS WebSocket URL 配置注入
* UnifiedOnChainWsService: 添加连接状态查询方法
- 从 application.properties 移除相关配置项,添加说明注释
- 完善 API 健康检查,添加缺失的检测项:
* Polymarket Activity WebSocket
* 链上 WebSocket
- 更新相关文档说明
|
2026-01-13 16:07:19 +08:00 |
|
WrBug
|
e072d0c894
|
feat: 添加 Activity WebSocket 消息超时检测和自动重连机制
- 添加 lastActivityTime 变量记录最后一次收到 activity 消息的时间
- 实现 startActivityTimeoutCheck() 方法,每30秒检查一次消息接收情况
- 如果超过30秒未收到 activity 消息,自动触发 WebSocket 重连
- 在订阅成功后自动启动超时检测任务
- 在 stop() 方法中正确清理检测任务资源
|
2026-01-13 16:04:20 +08:00 |
|
WrBug
|
cc40493ec6
|
Merge pull request #21 from WrBug/dev
|
2026-01-13 12:55:21 +08:00 |
|
WrBug
|
3a78a84610
|
fix: 修复 v1.1.10 版本下单成功不发送通知的问题
- 移除 OrderStatusUpdateService 中错误的双重检查逻辑
- 修复买入订单和卖出订单通知逻辑
- 确保在标记为已发送后立即发送通知
- 问题:保存 notificationSent=true 后立即查询检查,导致通知永远被跳过
- 修复:改为标记后直接发送通知,利用数据库状态防止并发重复
v1.1.11
|
2026-01-13 03:38:05 +08:00 |
|
WrBug
|
692cbd9a80
|
Merge pull request #20 from WrBug/dev
|
2026-01-12 15:40:39 +08:00 |
|
WrBug
|
8f01588221
|
fix: 修复 TypeScript 编译错误
- 在 CopyTradingCreateRequest 和 CopyTradingUpdateRequest 接口中添加 pushFilteredOrders 字段
- 修复 InputNumber parser 函数的返回类型,应该返回 number 而不是 string
v1.1.10
|
2026-01-12 14:59:42 +08:00 |
|
WrBug
|
f6fc836e79
|
docs: 添加 v1.1.10 release notes
|
2026-01-12 14:51:33 +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
|
cb8e46919f
|
fix: 修复跟单配置更新时清空可选字段无法保存的问题
- 修复价格区间(minPrice/maxPrice)清空后无法保存的问题
- 修复最大仓位数量(maxPositionCount)清空后无法保存的问题
- 修复市场截止时间(maxMarketEndDate)清空后无法保存的问题
- 修复其他可选字段(minOrderDepth/maxSpread/maxPositionValue)清空后无法保存的问题
- 修复截止时间输入框删除后失去焦点自动填充1的问题
前端:清空字段时传空字符串或-1标记,让后端识别为清空操作
后端:处理空字符串和-1标记,正确设置为null以清空字段
|
2026-01-12 13:31:27 +08:00 |
|
WrBug
|
279806da2b
|
feat: 优化订单列表筛选功能,支持按市场标题搜索并改进分组体验
- 后端:MarketGroupedOrdersRequest 添加 marketId 和 marketTitle 字段
- 后端:买入/卖出订单分组接口支持市场 ID 模糊匹配和市场标题关键字筛选
- 前端:BuyOrdersTab 添加市场标题筛选,移除方向筛选,记录用户分组偏好
- 前端:SellOrdersTab 添加市场标题筛选,将方向筛选改为状态筛选,移除方向列
- 前端:MatchedOrdersTab 添加市场标题筛选和市场列显示
- 前端:所有搜索输入框添加 0.5 秒防抖优化
- 前端:分组偏好保存到 localStorage 以便跨会话持久化
|
2026-01-12 10:01:20 +08:00 |
|
WrBug
|
90fa487d1b
|
refactor: 移除未实现盈亏计算以优化跟单关系统计性能
- 移除未实现盈亏和持仓价值的计算
- 总盈亏现在仅包含已实现盈亏
- 删除不再使用的 getCurrentMarketPrice、getActualPositions、calculateUnrealizedPnl、calculatePositionValue 方法
- 简化盈亏百分比计算,仅基于已实现盈亏
- 移除不必要的依赖注入(accountService、blockchainService、retrofitFactory)
- 性能提升:从 1+N 次网络请求减少到 0 次
|
2026-01-11 14:53:28 +08:00 |
|
WrBug
|
b58bb267a1
|
feat: 添加 Docker 容器时区配置,支持通过 .env 自定义
|
2026-01-11 14:36:49 +08:00 |
|
WrBug
|
6af76c4d80
|
fix: 修复订单通知重复发送和时间显示问题
1. 修复并发导致的重复通知问题
- 在 OrderStatusUpdateService 中实现双重检查机制
- 先保存订单标记为已发送,再重新查询数据库检查
- 防止定时任务并发时重复发送同一订单的通知
- 同时修复买入订单和卖出订单的通知逻辑
2. Telegram 通知时间改为订单创建时间
- TelegramNotificationService.sendOrderSuccessNotification 添加 orderTime 参数
- 使用订单的 createdAt 时间戳作为通知显示时间
- 而不是使用当前通知发送时间
- 更准确反映订单的实际创建时间
修改文件:
- OrderStatusUpdateService.kt: 实现双重检查机制,防止并发重复通知
- TelegramNotificationService.kt: 添加 orderTime 参数支持订单时间显示
- AccountService.kt: 手动创建订单时传递订单创建时间
|
2026-01-11 14:33:30 +08:00 |
|
WrBug
|
43de0104e2
|
Merge pull request #19 from WrBug/dev
|
2026-01-10 17:55:31 +08:00 |
|
WrBug
|
d624eaeb57
|
docs: 添加 v1.1.9 release notes
v1.1.9
|
2026-01-10 17:51:54 +08:00 |
|
WrBug
|
6ad40242b3
|
fix: 优化自动卖出订单筛选逻辑,避免刚创建的订单被误判
问题:在仓位检查时,刚创建的订单可能因仓位更新延迟被误判为已卖出
修改:
1. Repository 层面新增 findUnmatchedBuyOrdersByOutcomeIndexOlderThan 方法
- 在 SQL 层直接过滤创建时间超过阈值的订单
- 提高查询效率,减少数据传输
2. PositionCheckService 两个场景都使用 SQL 过滤
- 场景1:仓位不存在时,延迟检测使用 SQL 过滤
- 场景2:仓位部分存在时,FIFO 匹配使用 SQL 过滤
- 统一使用 2 分钟阈值保护刚创建的订单
优化效果:
- SQL 层面直接过滤,减少数据传输
- 代码更简洁,逻辑更清晰
- 刚创建的订单(< 2 分钟)不会被误判为已卖出
- 日志更详细,便于排查问题
|
2026-01-10 03:39:06 +08:00 |
|
WrBug
|
2ccab42894
|
Merge pull request #18 from WrBug/dev
Release v1.1.8: Polymarket Activity WebSocket 双重监听方案
|
2026-01-09 11:11:51 +08:00 |
|
WrBug
|
424153cfc7
|
docs: 添加 v1.1.8 release notes
v1.1.8
|
2026-01-09 11:08:40 +08:00 |
|
WrBug
|
19508dcd19
|
feat: 实现 Polymarket Activity WebSocket 双重监听方案
主要功能:
- 新增 PolymarketActivityWsService:通过 Activity WebSocket 实时监听 Leader 交易(延迟 < 100ms)
- 实现双重监听机制:Activity WS(低延迟)+ On-Chain WS(高可靠性)
- 支持动态添加/移除 Leader 监听
- 地址筛选忽略大小写
修复和改进:
- 修复订阅消息格式:使用 'action' 而不是 'type'(与 @polymarket/real-time-data-client 保持一致)
- 修复 PING 消息格式:使用小写 'ping'(与官方客户端保持一致)
- 添加 outcomeIndex 字段支持:优先使用消息中的 outcomeIndex,fallback 到从 outcome 解析
- 添加 connection_id 字段到 DTO
- 改进日志记录:增加 INFO 级别日志以便调试
代码重构:
- JsonUtils 重构:将 fromJson 和 toJson 改为扩展方法
- 更新后端开发规范:JSON 解析和 Data Class 规范
前端修复:
- 修复 InputNumber parser 类型错误:返回 number 而不是 string
文档:
- 添加双重监听方案文档
- 添加 Polymarket Activity WebSocket API 格式文档
|
2026-01-09 10:41:15 +08:00 |
|
WrBug
|
a16b6fce54
|
feat: 支持同一用户创建多个相同 leader 的跟单配置
- 删除 copy_trading 表的唯一约束 uk_account_leader
- 移除实体类 CopyTrading 的唯一约束注解
- 移除创建跟单时的重复检查逻辑
- 修改 Repository 方法 findByAccountIdAndLeaderId 返回列表而非单个对象
- 更新查询逻辑以支持返回多个跟单配置
现在允许同一用户对同一个 leader 创建多个不同配置的跟单关系。
|
2026-01-09 08:56:14 +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
|
b13aef944c
|
refactor: 统一使用 MarketService 并改用 LRU 缓存
主要改进:
1. 将 MarketService 缓存从 ConcurrentHashMap 改为 Caffeine LRU 缓存
- 最多缓存 200 条市场记录
- 自动淘汰最近最少使用的记录
- 提高缓存命中率和性能
2. 添加 Caffeine 依赖 (com.github.ben-manes.caffeine:caffeine:3.1.8)
3. 重构以下服务,统一使用 MarketService 获取市场信息:
- OrderPushService: 删除 fetchMarketInfo() 方法,直接使用 MarketService
- CopyOrderTrackingService: 移除直接调用 Gamma API 的代码
- AccountService: 订单通知中使用 MarketService
- OrderStatusUpdateService: 买入/卖出订单通知使用 MarketService
优势:
- 减少重复的 API 调用,利用三级缓存(内存 → 数据库 → API)
- 提高代码一致性和可维护性
- 统一市场数据获取逻辑,便于后续扩展
|
2026-01-08 18:33:49 +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
|
3008cbcb50
|
Merge pull request #17 from WrBug/release/v1.1.7
Release v1.1.7
|
2026-01-07 12:57:12 +08:00 |
|
WrBug
|
e75c93ddf4
|
Merge pull request #16 from WrBug/release/v1.1.7
Release v1.1.7
|
2026-01-07 12:53:27 +08:00 |
|
WrBug
|
018697935a
|
docs: 添加 v1.1.7 release notes
v1.1.7
|
2026-01-07 12:41:59 +08:00 |
|
WrBug
|
53ec252609
|
更新 Telegram 群链接并添加 Docker 版本徽章
- 将所有 Telegram 群链接统一更新为 t.me/polyhermes
- 在 README 和 README_EN.md 中添加动态 Docker 版本徽章,自动显示最新版本
- 更新 Layout.tsx、RELEASE.md 中的 Telegram 链接
|
2026-01-07 12:37:23 +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 |
|