Prechádzať zdrojové kódy

fix: Byreal API 字段类型转换,避免 toFixed 报错

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
zhangchunrui 1 týždeň pred
rodič
commit
ce7ba83d3e
1 zmenil súbory, kde vykonal 15 pridanie a 8 odobranie
  1. 15 8
      src/lib/byreal-sync.ts

+ 15 - 8
src/lib/byreal-sync.ts

@@ -82,22 +82,29 @@ export async function syncFromByrealApi(): Promise<{
 
     if (apiPos) {
       // Position exists in API — sync PNL/APR/bonus/fee data
-      const ageMs = apiPos.positionAgeMs || 0
+      const pnlUsd = Number(apiPos.pnlUsd) || 0
+      const pnlPercent = Number(apiPos.pnlUsdPercent) || 0
+      const bonusUsd = Number(apiPos.bonusUsd) || 0
+      const earnedUsd = Number(apiPos.earnedUsd) || 0
+      const liquidityUsd = Number(apiPos.liquidityUsd) || 0
+      const totalDeposit = Number(apiPos.totalDeposit) || 0
+      const ageMs = Number(apiPos.positionAgeMs) || 0
       const ageDays = ageMs / (1000 * 60 * 60 * 24)
+
       // APR = (earnedUsd / totalDeposit) / ageDays * 365 * 100
       let apr = ''
-      if (apiPos.totalDeposit > 0 && ageDays > 0) {
-        const aprValue = (apiPos.earnedUsd / apiPos.totalDeposit / ageDays) * 365 * 100
+      if (totalDeposit > 0 && ageDays > 0) {
+        const aprValue = (earnedUsd / totalDeposit / ageDays) * 365 * 100
         apr = aprValue.toFixed(2)
       }
 
       updatePositionMappingSyncData(dbPos.our_nft_mint, {
-        pnlUsd: apiPos.pnlUsd?.toFixed(4) || '0',
-        pnlPercent: apiPos.pnlUsdPercent?.toFixed(4) || '0',
+        pnlUsd: pnlUsd.toFixed(4),
+        pnlPercent: pnlPercent.toFixed(4),
         apr,
-        bonusUsd: apiPos.bonusUsd?.toFixed(4) || '0',
-        earnedUsd: apiPos.earnedUsd?.toFixed(4) || '0',
-        liquidityUsd: apiPos.liquidityUsd?.toFixed(2) || '0',
+        bonusUsd: bonusUsd.toFixed(4),
+        earnedUsd: earnedUsd.toFixed(4),
+        liquidityUsd: liquidityUsd.toFixed(2),
       })
       synced++
     } else {