1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
EventHandler.php
См. документацию.
1<?php
2declare(strict_types=1);
3
4namespace Bitrix\Landing\Copilot;
5
6use Bitrix\AI;
7use Bitrix\AI\Tuning;
8use Bitrix\AI\Quality;
9use Bitrix\AI\Engine;
10use Bitrix\AI\Engine\IEngine;
11use Bitrix\Landing\Copilot\Generation\Error;
12use Bitrix\Landing\Copilot\Generation\Request;
13use Bitrix\Landing\Copilot\Generation\Type\Errors;
14use Bitrix\Main\ArgumentException;
15use Bitrix\Main\EventResult;
16use Bitrix\Main\Event;
17use Bitrix\Main\Entity;
18use Bitrix\Main\Localization\Loc;
19use Bitrix\Main\Web\Json;
20use Bitrix\Main;
21use Exception;
22
27{
28 public static function onQueueJobExecute(Event $event): EventResult
29 {
33 $result = $event->getParameter('result');
34 if (!$result instanceof AI\Result)
35 {
36 return new EventResult(EventResult::SUCCESS);
37 }
38
39 $engine = $event->getParameter('engine');
40 if (!$engine instanceof IEngine)
41 {
42 return new EventResult(EventResult::SUCCESS);
43 }
44
45 $hash = $event->getParameter('queue');
46 $request = Request::getByHash($hash);
47 if (!$request)
48 {
49 return new EventResult(EventResult::SUCCESS);
50 }
51
52 $error = null;
53
54 $jsonData = $result->getPrettifiedData();
55 if (!$jsonData)
56 {
57 $error = Error::createError(Errors::requestEmpty);
58 }
59 else
60 {
61 try
62 {
63 $data = Json::decode(Converter\Json::expandJsonString($jsonData));
64 if (!$data || isset($data['error']))
65 {
66 $error = Error::createError(Errors::requestError);
67 $error->message .= $data['error'] ? ': ' . $data['error'] : '';
68 }
69 }
70 catch (ArgumentException)
71 {
72 $error = Error::createError(Errors::requestInvalid);
73 }
74 }
75
76 if (!isset($data) && !isset($error))
77 {
78 return new EventResult(EventResult::SUCCESS);
79 }
80
81 if (isset($error))
82 {
83 $request->saveError($error);
84 }
85 else
86 {
87 $request->saveResult($data);
88 }
89
90 $generation = new Generation();
91 $generationId = $request->getGenerationId();
92 if ($generation->initById($generationId))
93 {
94 $generation->execute();
95 }
96
97 return new EventResult(EventResult::SUCCESS);
98 }
99
100 public static function onQueueJobFail(Event $event): EventResult
101 {
102 $hash = $event->getParameter('queue');
103 $request = Request::getByHash($hash);
104 if (!$request)
105 {
106 return new EventResult(EventResult::SUCCESS);
107 }
108
109 $error = Error::createError(Errors::requestFail);
113 $errorParam = $event->getParameter('error');
114 if ($errorParam)
115 {
116 $error->message .= ': ' . $errorParam->getCode() . ': ' . $errorParam->getMessage();
117 }
118
119 if ($request->getResult() === null)
120 {
121 $request->saveError($error);
122 }
123
124 $generation = new Generation();
125 $generationId = $request->getGenerationId();
126 if ($generation->initById($generationId))
127 {
128 $generation->execute();
129 }
130
131 return new EventResult(EventResult::SUCCESS);
132 }
133}
$hash
Определения ajax_redirector.php:8
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
Определения result.php:20
$data['IS_AVAILABLE']
Определения .description.php:13
$result
Определения get_property_values.php:14
Определения iengine.php:11
Определения buffer.php:3
$event
Определения prolog_after.php:141
$engine
Определения options.php:121
$error
Определения subscription_card_product.php:20