fix(百家乐AI预测): ai_usage_logs 使用 AI小班长真实 user_id

- 新增 resolveAiUserId() 按 username 查询 AI小班长 ID(惰性/缓存)
- 原先硬编码 null,改为正确关联到 AI小班长用户记录
This commit is contained in:
2026-03-28 21:28:14 +08:00
parent 2e252eb70e
commit aa760b14a2

View File

@@ -37,6 +37,11 @@ class BaccaratPredictionService
*/
private const PREFERRED_MODEL = 'glm-5.1-free';
/**
* AI小班长的用户 ID惰性加载首次使用时查询一次
*/
private ?int $aiUserId = null;
/**
* 调用 AI 接口预测百家乐下注方向
*
@@ -248,7 +253,7 @@ PROMPT;
): void {
try {
AiUsageLog::create([
'user_id' => null, // AI 系统行为,无对应用户
'user_id' => $this->resolveAiUserId(),
'provider' => $config->provider,
'model' => $config->model,
'action' => 'baccarat_predict',
@@ -263,4 +268,19 @@ PROMPT;
Log::error('百家乐 AI 预测日志记录失败', ['error' => $e->getMessage()]);
}
}
/**
* 查询 AI小班长的用户 ID
*
* 加载结果以属性形式缓存,同一个服务实例内只查一次。
* 查不到时返回 null,避免破坏外键约束。
*/
private function resolveAiUserId(): ?int
{
if ($this->aiUserId === null) {
$this->aiUserId = \App\Models\User::where('username', 'AI小班长')->value('id');
}
return $this->aiUserId;
}
}