fix: 修复移动端跟单配置管理和重试订单日志

- 移动端跟单配置管理添加Switch开关,支持开启/停用跟单
  - 在移动端卡片布局中添加Switch组件
  - 与桌面端功能保持一致

- 优化重试订单的日志记录逻辑
  - 第一次失败时不记录日志,静默重试
  - 只在重试后仍然失败时才记录日志
  - 减少不必要的日志输出,提高日志质量
This commit is contained in:
WrBug
2025-12-03 23:38:01 +08:00
parent a855a226e9
commit 88be178cde
2 changed files with 17 additions and 4 deletions
@@ -661,10 +661,12 @@ class CopyOrderTrackingService(
if (!orderResponse.isSuccessful || orderResponse.body() == null) {
lastError = Exception("创建订单失败: code=${orderResponse.code()}, message=${orderResponse.message()}")
if (attempt < 2) {
logger.warn("创建订单失败,准备重试(重新签名): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt")
// 第一次失败不记录日志,静默重试
delay(1000) // 重试前等待1秒
continue
}
// 重试后仍然失败,记录日志
logger.warn("创建订单失败(重试后仍失败): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt, code=${orderResponse.code()}, message=${orderResponse.message()}")
return Result.failure(lastError!!)
}
@@ -672,10 +674,12 @@ class CopyOrderTrackingService(
if (!response.success || response.orderId == null) {
lastError = Exception("创建订单失败: errorMsg=${response.errorMsg}")
if (attempt < 2) {
logger.warn("创建订单失败,准备重试(重新签名): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt, errorMsg=${response.errorMsg}")
// 第一次失败不记录日志,静默重试
delay(1000) // 重试前等待1秒
continue
}
// 重试后仍然失败,记录日志
logger.warn("创建订单失败(重试后仍失败): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt, errorMsg=${response.errorMsg}")
return Result.failure(lastError!!)
}
@@ -684,10 +688,12 @@ class CopyOrderTrackingService(
} catch (e: Exception) {
lastError = e
if (attempt < 2) {
logger.warn("调用创建订单API异常,准备重试(重新签名): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt", e)
// 第一次失败不记录日志,静默重试
delay(1000) // 重试前等待1秒
continue
}
// 重试后仍然失败,记录日志
logger.warn("调用创建订单API异常(重试后仍失败): copyTradingId=$copyTradingId, tradeId=$tradeId, attempt=$attempt", e)
return Result.failure(e)
}
}
+8 -1
View File
@@ -464,10 +464,17 @@ const CopyTradingList: React.FC = () => {
}}>
{record.templateName}
</div>
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '6px', alignItems: 'center' }}>
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '6px', alignItems: 'center', justifyContent: 'space-between' }}>
<Tag color={record.enabled ? 'green' : 'red'}>
{record.enabled ? '启用' : '禁用'}
</Tag>
<Switch
checked={record.enabled}
onChange={() => handleToggleStatus(record)}
checkedChildren="开启"
unCheckedChildren="停止"
size="small"
/>
</div>
</div>