• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/ml/scoring.php
  • Класс: Bitrix\Crm\Ml\Scoring
  • Вызов: Scoring::tryCreateFirstPrediction
static function tryCreateFirstPrediction($entityTypeId, $entityId, $isImmediate = false): bool
{
	if (!static::isMlAvailable() || !Loader::includeModule('ml') || !static::isEnabled())
	{
		return false;
	}

	$model = static::getScoringModel($entityTypeId, $entityId);
	if (!$model || $model->getState() !== \Bitrix\Ml\Model::STATE_READY)
	{
		return false;
	}

	$predictionCheck = PredictionHistoryTable::getList([
		'select' => ['ID'],
		'filter' => [
			'=ENTITY_TYPE_ID' => $entityTypeId,
			'=ENTITY_ID' => $entityId
		]
	]);

	if ($predictionCheck->fetch())
	{
		return false;
	}

	$queueCheck = PredictionQueueTable::getList([
		'select' => ['ID'],
		'filter' => [
			'=STATE' => PredictionQueue::STATE_IDLE,
			'=ENTITY_TYPE_ID' => $entityTypeId,
			'=ENTITY_ID' => $entityId
		]
	]);

	if ($row = $queueCheck->fetch())
	{
		PredictionQueue::executeRequest($row['ID']);
	}
	else
	{
		static::queuePredictionUpdate($entityTypeId, $entityId, [
			'TYPE' => $isImmediate ? static::PREDICTION_IMMEDIATE : static::PREDICTION_REAL_TIME,
			'EVENT_TYPE' => static::EVENT_INITIAL_PREDICTION
		]);
	}

	return true;
}