- Модуль: 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;
}