• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/ml/model/base.php
  • Класс: Bitrix\Crm\Ml\Model\Base
  • Вызов: Base::getCurrentTraining
public function getCurrentTraining(): array
{
	$row = ModelTrainingTable::getList([
		'filter' => [
			'=MODEL_NAME' => $this->getName(),
		],
		'order' => ['ID' => 'desc'],
		'limit' => 1
	])->fetch();

	if (!$row)
	{
		return [];
	}

	[$successfulRecords, $failedRecords] = $this->getTrainingSetSize();

	if ($row['DATE_FINISH'] instanceof DateTime)
	{
		$now = time();
		$daysSinceTrain = round(($now - $row['DATE_FINISH']->getTimestamp()) / 86400 );
		$daysToTrain = Scoring::RETRAIN_PERIOD - $daysSinceTrain;
		if ($daysToTrain < 0)
		{
			$daysToTrain = 0;
		}
	}
	else
	{
		$daysToTrain = Scoring::RETRAIN_PERIOD;
	}

	if ($row['DATE_FINISH'] instanceof DateTime)
	{
		$nextDate = clone $row['DATE_FINISH'];
		$nextDate->add(Scoring::RETRAIN_PERIOD . ' day');
	}

	return [
		'ID' => (int)$row['ID'],
		'MODEL_NAME' => $this->getName(),
		'AREA_UNDER_CURVE' => (float)$row['AREA_UNDER_CURVE'],
		'DATE_START' => $row['DATE_START'],
		'DATE_FINISH' => $row['DATE_FINISH'],
		'LAST_ID' => (int)$row['LAST_ID'],
		'RECORDS_SUCCESS' => (int)$row['RECORDS_SUCCESS'],
		'RECORDS_FAILED' => (int)$row['RECORDS_FAILED'],
		'STATE' => $row['STATE'],
		'RECORDS_SUCCESS_DELTA' => $successfulRecords - $row['RECORDS_SUCCESS'],
		'RECORDS_FAILED_DELTA' => $failedRecords - $row['RECORDS_FAILED'],
		'DAYS_TO_TRAIN' => $daysToTrain,
		'NEXT_DATE' => $nextDate ?? null,
	];
}