category_id) { return; } $rule = $transaction->categorized_by_rule_id !== null ? AutomationRule::query()->find($transaction->categorized_by_rule_id) : null; $aiRule = $rule !== null && $rule->origin === RuleOrigin::Ai; $aiDriven = $transaction->category_source === CategorySource::Ai || $aiRule; if (! $aiDriven) { return; } CategoryCorrection::create([ 'user_id' => $transaction->user_id, 'transaction_id' => $transaction->id, 'from_category_id' => $transaction->category_id, 'to_category_id' => $newCategoryId, 'source' => $transaction->category_source ?? CategorySource::Rule, 'confidence' => $transaction->ai_confidence, ]); if ($aiRule) { $this->learner->forget($rule, $transaction); } } }