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