优化ai小班长

This commit is contained in:
2026-04-12 22:42:32 +08:00
parent d739fc7028
commit 353aaaf6ce
6 changed files with 36 additions and 36 deletions
+15 -15
View File
@@ -5,7 +5,7 @@
*
* 在每局百家乐开启时延迟调度执行:
* 1. 检查是否存在连输休息惩罚(1小时)
* 2. 检查可用金币,确保留存底金
* 2. 检查可用金币与活动时间窗,确定本局下注额度
* 3. 调用 AI 接口预测路单走势决定下注方向(AI 不可用时回退本地决策)
* 4. 提交下注
*
@@ -87,10 +87,10 @@ class AiBaccaratBetJob implements ShouldQueue
// 5. 查询当前是否命中“你玩游戏我买单”活动窗口。
$lossCoverService = app(BaccaratLossCoverService::class);
$lossCoverEvent = $lossCoverService->findEventForBetTime(now());
$hasActiveLossCover = $lossCoverEvent?->status === 'active';
$isInLossCoverWindow = $lossCoverEvent !== null;
// 买单活动进行中时允许 AI 全仓下注;平时只动用当前手上的 jjb,不再强制保留 100 万
$bettableGold = $hasActiveLossCover
// 买单活动进行中时允许 AI 统筹“手上 + 银行”总资产;平时只动用当前手上的 jjb。
$bettableGold = $isInLossCoverWindow
? $aiFinance->getTotalGoldAssets($user)
: $aiFinance->getSpendableGold($user);
if ($bettableGold < $minBet) {
@@ -129,7 +129,7 @@ class AiBaccaratBetJob implements ShouldQueue
'recent_results' => $recentResults,
'available_gold' => $bettableGold,
'historical_bets' => $historicalBets,
'loss_cover_active' => $hasActiveLossCover,
'loss_cover_active' => $isInLossCoverWindow,
];
$aiPrediction = $predictionService->predict($context);
@@ -145,10 +145,10 @@ class AiBaccaratBetJob implements ShouldQueue
$reason = $aiPrediction['reason'];
if ($betType !== 'pass') {
if ($hasActiveLossCover) {
// 买单活动进行中时,AI 可放心动用全部总资产,因为本局若输可返还
$amount = $bettableGold;
$reason = trim($reason.' 买单活动进行中,本局采用总资产全额下注策略。');
if ($isInLossCoverWindow) {
// 买单活动进行中且金币足够时,直接按百家乐单局最高限额下注
$amount = min($bettableGold, $maxBet);
$reason = trim($reason.' 买单活动进行中,本局按百家乐最高限额下注。');
} else {
// 非买单活动期间,限定单局最高下注不超过手头金币的 5% 以防止 AI 破产。
$percent = min(5, max(0, $percent));
@@ -177,10 +177,10 @@ class AiBaccaratBetJob implements ShouldQueue
}
if ($betType !== 'pass') {
if ($hasActiveLossCover) {
// 本地兜底策略命中买单活动时,同样执行总资产全额下注。
$amount = $bettableGold;
$reason = '买单活动进行中,采用本地总资产全额下注兜底策略。';
if ($isInLossCoverWindow) {
// 本地兜底策略命中买单活动时,同样优先按百家乐最高限额下注。
$amount = min($bettableGold, $maxBet);
$reason = '买单活动进行中,采用本地最高限额下注兜底策略。';
} else {
$percent = rand(2, 5) / 100.0;
$amount = (int) round($bettableGold * $percent);
@@ -207,8 +207,8 @@ class AiBaccaratBetJob implements ShouldQueue
return;
}
// 买单活动期间允许全仓下注;非活动期间只检查当前手上金币是否够本次下注。
$isReadyToSpend = $hasActiveLossCover
// 买单活动期间允许为本次高额下注从银行调拨;非活动期间只检查当前手上金币是否够本次下注。
$isReadyToSpend = $isInLossCoverWindow
? $aiFinance->prepareAllInSpend($user, $amount)
: $aiFinance->prepareSpend($user, $amount);
if (! $isReadyToSpend) {