Skip to content

feat: 优化构建流程和通知机制#25

Merged
WrBug merged 11 commits intomainfrom
dev
Jan 28, 2026
Merged

feat: 优化构建流程和通知机制#25
WrBug merged 11 commits intomainfrom
dev

Conversation

@WrBug
Copy link
Owner

@WrBug WrBug commented Jan 28, 2026

主要改动

  • 添加 workflow_dispatch 支持手动触发构建
  • Release 事件默认只打包产物(在线升级),不构建 Docker
  • 手动触发可选择构建类型:在线升级或 Docker 升级
  • 优化 Telegram 通知文案,区分构建类型和升级路径
  • 在线升级任务不发送开始通知,只发送完成通知
  • 手动触发时产物上传为 Artifact,Release 事件上传到 Release Assets

相关提交

  • feat(workflow): 优化构建流程和通知机制
  • docs: 添加 v2.0.2 release notes

WrBug added 11 commits January 21, 2026 20:56
- 修复 BUILD_IN_DOCKER=true 时 frontend/dist 不存在的问题
- 当 BUILD_IN_DOCKER=true 时,RUN 已经创建了 dist 目录
- COPY frontend/dist ./dist 现在应该能正常工作
- 移除 Dockerfile 中无效的 COPY frontend/dist 指令
- 改进前端构建逻辑,添加外部产物检查
- 改进后端构建逻辑,支持复制外部构建的 JAR 文件
- 在 deploy.sh 中添加创建占位符目录步骤,避免 COPY 失败
- 保持与 GitHub Actions 构建流程的兼容性(BUILD_IN_DOCKER=false)

修复了本地使用 ./deploy.sh 部署时的构建错误:
"failed to calculate checksum: /frontend/dist: not found"
修复了两个关键问题:

1. 订单金额精度错误
   - 原因:总是强制将金额舍入到 4 位小数,导致精度丢失
   - 问题案例:25.09488 被错误地舍入为 25.0948
   - 修复:只在小数位数超过 roundConfig.amount 时才进行舍入,采用与 clob-client 一致的条件舍入逻辑

2. 价格超出范围错误
   - 原因:价格 0.999 舍入到 2 位小数后变成 1.00,违反了 price < 1 的限制
   - 修复:在舍入后验证价格范围,超出时自动调整到最接近的有效值 (0.01-0.99)

主要变更:
- 对价格进行 roundNormal 舍入(参考 clob-client)
- 实现条件舍入逻辑:先 roundUp(amount + 4),必要时再 roundDown(amount)
- 添加价格范围验证 (MIN_PRICE=0.01, MAX_PRICE=0.99)
- 添加 decimalPlaces() 辅助函数
- 修改 roundNormal/roundDown/roundUp 函数,只有必要时才舍入

参考:clob-client/src/order-builder/helpers.ts 的 getOrderRawAmounts 函数
修复内容:
1. copyTradingOrders 部分:添加 allFullyMatched 和 partiallyMatched(zh-CN、zh-TW)
2. filteredOrdersList 部分:添加 noFilteredOrders(所有语言文件)

影响范围:
- frontend/src/locales/en/common.json
- frontend/src/locales/zh-CN/common.json
- frontend/src/locales/zh-TW/common.json
问题描述:
- 用户在前端禁用节点后,系统仍然使用禁用的节点
- 原因:RetrofitFactory 的 rpcApiCache 未被清理,导致禁用的节点 URL 继续在拦截器中被使用

修复内容:
1. updateNode 方法:添加禁用节点时清理缓存的逻辑
2. deleteNode 方法:添加删除节点时清理缓存的逻辑
3. getAvailableNode 方法:优化逻辑,确保始终返回可用节点
   - 没有启用节点时返回默认节点
   - 所有节点不可用时返回默认节点
   - 异常时返回默认节点作为兜底
4. 新增 createDefaultNodeConfig 辅助方法:创建默认节点配置
5. 简化 getHttpUrl 和 getWsUrl 方法:移除冗余逻辑

影响范围:
- RpcNodeService.kt
优化内容:
1. 新增 DateUtils.formatDuration() 函数:将毫秒转换为可读格式(X天X小时X分钟)
2. 优化市场截止时间过滤原因:使用格式化后的时间显示,避免显示过长的毫秒数
3. 优化所有过滤原因中的 BigDecimal 数值显示:
   - 价格区间检查:去除尾随零
   - 价差检查:去除尾随零
   - 订单深度检查:去除尾随零
   - 仓位金额检查:去除尾随零

优化效果:
- 时间显示:1009163461ms (280小时) -> 11天16小时26分钟
- 数值显示:0.50000000000000000000 -> 0.5

影响范围:
- DateUtils.kt
- CopyTradingFilterService.kt
- 修复订单详情为 null 时缓存清除时机问题,避免计时被重置导致订单无法删除
- 统一部分卖出和未成交订单的删除逻辑,都使用60秒重试窗口(之前部分卖出订单等待1小时)
- 删除未使用的常量 PARTIAL_SOLD_CLEANUP_WINDOW_MS
- 优化日志输出,区分部分卖出和未成交订单的日志信息

修复问题:
- 订单超过60秒不会删除的问题
- 部分卖出订单等待时间过长的问题
- 修复市场买入订单 makerAmount 和 takerAmount 的精度限制
- makerAmount (USDC) 限制为最多 2 位小数
- takerAmount (shares) 限制为最多 4 位小数
- 符合 Polymarket API 的要求,解决 'invalid amounts' 错误
- 添加 workflow_dispatch 支持手动触发构建
- Release 事件默认只打包产物(在线升级),不构建 Docker
- 手动触发可选择构建类型:在线升级或 Docker 升级
- 优化 Telegram 通知文案,区分构建类型和升级路径
- 在线升级任务不发送开始通知,只发送完成通知
- 手动触发时产物上传为 Artifact,Release 事件上传到 Release Assets
@WrBug WrBug merged commit cccc829 into main Jan 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant