优化ai小班长
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user