{error}
+ ) : null} ++ {t('Human verification is required before you can continue.')} +
+ ) : null}+ {t('Recent {{count}} records', { + count: props.group.total, + })} + {props.refreshHint ? ` · ${props.refreshHint}` : null} +
++ {t('Avg latency')} +
++ {props.group.success_count > 0 + ? formatUseTimeSeconds(props.group.avg_use_time) + : '—'} +
++ {t('Availability')} +
++ {formatSuccessRatePercent( + props.group.success_rate, + props.group.total + )} +
++ {t('No recent requests for this group.')} +
+ ) : ( + props.records.map((record) => { + let heightPct = FAIL_HEIGHT_PCT + if (record.ok) { + if (maxUseTime <= 0) { + heightPct = MIN_HEIGHT_PCT + } else { + heightPct = + MIN_HEIGHT_PCT + + (record.use_time / maxUseTime) * + (MAX_HEIGHT_PCT - MIN_HEIGHT_PCT) + } + } + const title = record.ok + ? formatUseTimeSeconds(record.use_time) + : t('Failed') + return ( + + ) + }) + )} ++ {t( + 'Request health by billing group for the latest 100 consume/error logs. Green bars show latency; red bars are failures. Badge uses overall success rate (≥95% normal, ≥80% warning, below 80% abnormal).' + )} +
+ + {query.isPending ? ( ++ {t('No billing groups configured.')} +
+ ) : null} ++ {props.crazyThursday + ? t('Crazy Thursday!') + : t('Lucky Slot Lottery')} +
++ {t( + 'Optional. Max net win is 2x bet; you may also lose balance.' + )} +
++ {t('Allowed: ${{min}} – ${{max}}', { + min: data.min_bet_usd, + max: maxBetAllowed, + })} +
+