From 56d85e417be58365d9c5554f9673562c74bea9c5 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Tue, 2 Jun 2026 23:37:49 +0200 Subject: [PATCH] yasd --- modules/mining-checker/assets/js/app.js | 24 +++++++++++++++++-- .../mining-checker/src/Domain/OcrService.php | 13 ++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/modules/mining-checker/assets/js/app.js b/modules/mining-checker/assets/js/app.js index 57acb19..5302a80 100644 --- a/modules/mining-checker/assets/js/app.js +++ b/modules/mining-checker/assets/js/app.js @@ -1949,9 +1949,11 @@ function renderSharedOcrPanel() { const preview = normalizeOcrPreview(ocrPreview); const isWalletPreview = preview.kind === 'wallet'; + const hasMiningSuggestion = preview.suggested.coins_total !== '' && preview.suggested.coins_total !== null; + const hasWalletSuggestion = preview.suggested_wallet.wallet_balance !== '' && preview.suggested_wallet.wallet_balance !== null; const hasUsableOcrSuggestion = isWalletPreview - ? (preview.suggested_wallet.wallet_balance !== '' && preview.suggested_wallet.wallet_balance !== null) - : (preview.suggested.coins_total !== '' && preview.suggested.coins_total !== null); + ? hasWalletSuggestion + : hasMiningSuggestion; const ocrStatus = getOcrStatusMessage(preview); return panel('OCR Upload', 'Screenshot auswaehlen, Ergebnis direkt pruefen und speichern.', [ @@ -2014,6 +2016,24 @@ onClick: () => isWalletPreview ? submitWalletSnapshotFromPreview() : submitMeasurement(true), disabled: saving || !hasUsableOcrSuggestion, }, saving ? 'Speichert …' : 'Ergebnis speichern'), + isWalletPreview && hasMiningSuggestion + ? h('button', { + key: 'force-mining', + type: 'button', + className: 'mc-button mc-button--ghost', + onClick: () => submitMeasurement(true), + disabled: saving, + }, 'Als Mining speichern') + : null, + !isWalletPreview && hasWalletSuggestion + ? h('button', { + key: 'force-wallet', + type: 'button', + className: 'mc-button mc-button--ghost', + onClick: () => submitWalletSnapshotFromPreview(), + disabled: saving, + }, 'Als Wallet speichern') + : null, ]) : h('div', { key: 'ocr-empty', className: 'mc-empty' }, 'Noch kein Screenshot ausgewaehlt.'), diff --git a/modules/mining-checker/src/Domain/OcrService.php b/modules/mining-checker/src/Domain/OcrService.php index 2e8bc3d..10dae3e 100644 --- a/modules/mining-checker/src/Domain/OcrService.php +++ b/modules/mining-checker/src/Domain/OcrService.php @@ -437,6 +437,14 @@ final class OcrService } } + $measurementIndicators = 0; + $normalizedLower = strtolower($normalizedText); + foreach (['mining-guthaben', 'mining guthaben', 'mining-balance', 'mining balance', 'doge /', 'bonus', 'verlauf'] as $indicator) { + if (str_contains($normalizedLower, $indicator)) { + $measurementIndicators++; + } + } + $matchedFields = 0; foreach ([$coinsTotal, $price, $currency] as $field) { if ($field !== null) { @@ -444,7 +452,8 @@ final class OcrService } } - $confidence = max(0.05, min(0.99, ($matchedFields / 3) - (count($flags) * 0.04))); + $score = $matchedFields + min(3, $measurementIndicators); + $confidence = max(0.05, min(0.99, ($matchedFields / 3) + (min(3, $measurementIndicators) * 0.08) - (count($flags) * 0.04))); return [ 'suggested' => [ @@ -457,7 +466,7 @@ final class OcrService ], 'confidence' => round($confidence, 4), 'flags' => $flags, - 'score' => $matchedFields, + 'score' => $score, ]; }