/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
frontend/controllers/data/ReportController.php
114 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace frontend\controllers\data; use common\components\XbenchParserComponent; use common\controllers\base\DataController; use common\forms\user\XBenchAnalysisTaskForm; use common\helpers\ArrayHelper; use common\helpers\FileHelper; use common\helpers\UrlHelper; use frontend\forms\ai\ReportAssistantForm; use http\Env\Url; use Yii; use yii\helpers\VarDumper; use yii\web\BadRequestHttpException; use yii\web\UploadedFile; use function Clue\StreamFilter\remove; /** * Контроллер обработки запросов Xbench * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024 */ class ReportController extends DataController { /** * Загрузка файла и анализ файла * @return mixed */ public function actionUpload() { $upload = UploadedFile::getInstanceByName('xbench_upload_file'); if ($upload->error) { throw new BadRequestHttpException(Yii::t('app', 'Error upload file')); } else { $sig = Yii::$app->security->generateRandomString(); $name = $sig . '.xlsx'; $filename = Yii::getAlias('@root/tmp/upload/' . $name); FileHelper::createDirectory(dirname($filename), 0777); $upload->saveAs($filename); $parser = new XbenchParserComponent(); $parser->params([ 'filename' => $filename ]); if ($parser->execute()) { $result = $parser->getResult(); $status = 'OK'; } else { $result = []; $status = 'Error'; } return $this->asJson([ 'table' => array_values($result), 'sig' => $sig, 'status' => $status ]); } } /** * Проверка файла на анализ в GPT * @return mixed */ public function actionCheck() { $sig = Yii::$app->request->post('sig'); $name = $sig . '.xlsx'; $filename = Yii::getAlias('@root/tmp/upload/' . $name); $status = 'Error'; $parser = new XbenchParserComponent(); $parser->params([ 'filename' => $filename ]); $response = []; if ($parser->execute()) { $result = $parser->getResult(); $input_array = $parser->getInput(); $form = new XBenchAnalysisTaskForm(); $form->input_result = $result; $form->text = $input_array; if ($form->save()) { $response = (array)$form->model; $status = 'OK'; } else { $status = 'Error Second'; } } $id = ArrayHelper::getValue($response, 'id'); $result = ArrayHelper::merge($response, [ 'status' => $status, 'url' => UrlHelper::to_sig('report/download', ['token' => $sig, 'request' => $id]) ]); ArrayHelper::remove($result, 'response'); ArrayHelper::remove($result, 'items'); return $result; } }