From 8b07d1f00ceeee8beac622eb21357170782ec672 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Tue, 9 Jun 2026 01:59:48 +0200 Subject: [PATCH] sfdsf --- .../mining-checker/src/Domain/AnalyticsService.php | 13 +++++++++++++ modules/mining-checker/src/Domain/OcrService.php | 14 +++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/modules/mining-checker/src/Domain/AnalyticsService.php b/modules/mining-checker/src/Domain/AnalyticsService.php index 7329252..36525ce 100644 --- a/modules/mining-checker/src/Domain/AnalyticsService.php +++ b/modules/mining-checker/src/Domain/AnalyticsService.php @@ -1380,6 +1380,19 @@ final class AnalyticsService return null; } + $reportedTotal = is_numeric($snapshot['total_value_amount'] ?? null) + ? (float) $snapshot['total_value_amount'] + : null; + $reportedCurrency = strtoupper(trim((string) ($snapshot['total_value_currency'] ?? ''))); + if ($reportedTotal !== null && $reportedTotal >= 0 && $reportedCurrency !== '') { + $convertedTotal = $reportedCurrency === $target + ? $reportedTotal + : $this->convertAmount($reportedTotal, $reportedCurrency, $target, $fxContext); + if ($convertedTotal !== null) { + return $convertedTotal; + } + } + $balances = is_array($snapshot['balances_json'] ?? null) ? $snapshot['balances_json'] : []; if ($balances === []) { return null; diff --git a/modules/mining-checker/src/Domain/OcrService.php b/modules/mining-checker/src/Domain/OcrService.php index 10dae3e..256e1ca 100644 --- a/modules/mining-checker/src/Domain/OcrService.php +++ b/modules/mining-checker/src/Domain/OcrService.php @@ -538,7 +538,11 @@ final class OcrService } } - $priceAmount = $this->pickWalletUnitPrice($balanceAmount, $usdCandidates); + $priceAmount = $this->pickWalletUnitPrice( + $balanceAmount, + $usdCandidates, + $totalValueCurrency === 'USD' ? $totalValueAmount : null + ); $balances[$currency] = [ 'balance' => $balanceAmount, 'price_amount' => $priceAmount, @@ -613,7 +617,7 @@ final class OcrService /** * @param list $candidates */ - private function pickWalletUnitPrice(float $balance, array $candidates): ?float + private function pickWalletUnitPrice(float $balance, array $candidates, ?float $walletTotal = null): ?float { $candidates = array_values(array_filter(array_map( static fn (mixed $value): float => round((float) $value, 8), @@ -624,7 +628,11 @@ final class OcrService return null; } if (count($candidates) === 1) { - return $candidates[0]; + $candidate = $candidates[0]; + if ($walletTotal !== null && $walletTotal > 0 && ($balance * $candidate) > ($walletTotal * 1.5)) { + return round($candidate / $balance, 8); + } + return $candidate; } $bestPrice = null;