/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/forms/api/RequestModelForm.php
88 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\forms\api; use common\forms\ai\BaseRequestModelForm; use common\helpers\AiHelper; use common\helpers\ArrayHelper; use common\helpers\Utf8Helper; use common\kdf\KPromtFormat; use common\models\ModelAI; use common\models\Task; use common\models\TaskModel; use Yii; use yii\helpers\Json; /** * Запрос к модели * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2024-2025 */ class RequestModelForm extends BaseRequestModelForm { /** * @inheritdoc */ protected function afterSave($result) { parent::afterSave($result); // TODO: Change the autogenerated stub if ($this->promt_format_id == KPromtFormat::T_TEXT) { $response = ArrayHelper::getValue($this->model, 'text'); $items = AiHelper::split($response); } else { $json_list = ArrayHelper::getValue($this->model, 'items'); $items = []; foreach ($json_list as $json) { $data = Json::decode($json); $target = ArrayHelper::getValue($data, 'target'); foreach ((array)$target as $row) { $items[ArrayHelper::getValue($row, 'i')] = ArrayHelper::getValue($row, 't'); } } } array_walk($items, function (&$item) { $item = Utf8Helper::trim($item); }); $this->model['items'] = $items; } /** * @inheritdoc */ public function initOptions($r, $options) { /** @var Task $task */ $task = $r->task; /** @var TaskModel $taskModel */ $taskModel = $task->getTaskModel() ->andWhere(['is_default' => 1]) ->one(); $the_options = $taskModel->getOptions($r); if ($taskModel->promt_format_id == KPromtFormat::T_TEXT) { // текстовый формат $request = $r->getBatchList(['is_batch' => 1]); } else { // json формат $request = $r->getBatchList([ 'is_batch' => 1, 'is_json' => 1, 'source_language' => $r->sourceLanguage->title, 'target_language' => $r->targetLanguage->title ]); } return ArrayHelper::merge($options, $the_options, [ 'promt_format_id' => $taskModel->promt_format_id, 'project_id' => $taskModel->project_id, 'request' => $request, 'is_debug' => $r->is_debug ]); } }