Ver Fonte

Ticket #4711 - Automations.

AntonLV há 2 anos atrás
pai
commit
11e45d1f1e

+ 1 - 1
install/sql/system.sql

@@ -200,7 +200,7 @@ CREATE TABLE `sys_objects_cmts` (
 );
 );
 
 
 INSERT INTO `sys_objects_cmts` (`Name`, `Module`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Html`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES
 INSERT INTO `sys_objects_cmts` (`Name`, `Module`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Html`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES
-('sys_agents_automators', 'system', 'sys_agents_automators_messages', 1, 5000, 1000, 0, 5, 3, 'tail', 1, 'bottom', 1, 1, 1, -3, 1, 'cmt', 'agents.php?page=automators&id={object_id}', '', 'sys_agents_automators', 'id', '', '', 'messages', 'BxDolStudioAgentsAutomatorsCmts', '');
+('sys_agents_automators', 'system', 'sys_agents_automators_messages', 1, 5000, 1000, 0, 9999, 3, 'tail', 1, 'bottom', 1, 1, 1, -3, 1, 'cmt', 'agents.php?page=automators&id={object_id}', '', 'sys_agents_automators', 'id', '', '', 'messages', 'BxDolStudioAgentsAutomatorsCmts', '');
 
 
 -- --------------------------------------------------------
 -- --------------------------------------------------------
 
 

+ 4 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -2128,10 +2128,14 @@
 
 
         <string name="_sys_agents_automators_txt_active"><![CDATA[Active]]></string>
         <string name="_sys_agents_automators_txt_active"><![CDATA[Active]]></string>
         <string name="_sys_agents_automators_txt_type"><![CDATA[Type]]></string>
         <string name="_sys_agents_automators_txt_type"><![CDATA[Type]]></string>
+        <string name="_sys_agents_automators_txt_alert_unit"><![CDATA[Unit]]></string>
+        <string name="_sys_agents_automators_txt_alert_action"><![CDATA[Action]]></string>
+        <string name="_sys_agents_automators_txt_scheduler_time"><![CDATA[Time]]></string>
         <string name="_sys_agents_automators_txt_model_id"><![CDATA[Model]]></string>
         <string name="_sys_agents_automators_txt_model_id"><![CDATA[Model]]></string>
         <string name="_sys_agents_automators_txt_profile_id"><![CDATA[Profile]]></string>
         <string name="_sys_agents_automators_txt_profile_id"><![CDATA[Profile]]></string>
         <string name="_sys_agents_automators_txt_message_id"><![CDATA[Prompt]]></string>
         <string name="_sys_agents_automators_txt_message_id"><![CDATA[Prompt]]></string>
         <string name="_sys_agents_automators_txt_messages"><![CDATA[Messages]]></string>
         <string name="_sys_agents_automators_txt_messages"><![CDATA[Messages]]></string>
+        <string name="_sys_agents_automators_txt_code"><![CDATA[Code]]></string>
         <string name="_sys_agents_automators_txt_added"><![CDATA[Added]]></string>
         <string name="_sys_agents_automators_txt_added"><![CDATA[Added]]></string>
         <string name="_sys_agents_automators_txt_status"><![CDATA[Status]]></string>
         <string name="_sys_agents_automators_txt_status"><![CDATA[Status]]></string>
         <string name="_sys_agents_automators_btn_add"><![CDATA[Add]]></string>
         <string name="_sys_agents_automators_btn_add"><![CDATA[Add]]></string>

+ 4 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -2103,10 +2103,14 @@
 
 
         <string name="_sys_agents_automators_txt_active"><![CDATA[Активный]]></string>
         <string name="_sys_agents_automators_txt_active"><![CDATA[Активный]]></string>
         <string name="_sys_agents_automators_txt_type"><![CDATA[Тип]]></string>
         <string name="_sys_agents_automators_txt_type"><![CDATA[Тип]]></string>
+        <string name="_sys_agents_automators_txt_alert_unit"><![CDATA[Тип события]]></string>
+        <string name="_sys_agents_automators_txt_alert_action"><![CDATA[Действие события]]></string>
+        <string name="_sys_agents_automators_txt_scheduler_time"><![CDATA[Время для планировщика]]></string>
         <string name="_sys_agents_automators_txt_model_id"><![CDATA[Модель]]></string>
         <string name="_sys_agents_automators_txt_model_id"><![CDATA[Модель]]></string>
         <string name="_sys_agents_automators_txt_profile_id"><![CDATA[Профиль]]></string>
         <string name="_sys_agents_automators_txt_profile_id"><![CDATA[Профиль]]></string>
         <string name="_sys_agents_automators_txt_message_id"><![CDATA[Инструкции]]></string>
         <string name="_sys_agents_automators_txt_message_id"><![CDATA[Инструкции]]></string>
         <string name="_sys_agents_automators_txt_messages"><![CDATA[Сообщения]]></string>
         <string name="_sys_agents_automators_txt_messages"><![CDATA[Сообщения]]></string>
+        <string name="_sys_agents_automators_txt_code"><![CDATA[Код]]></string>
         <string name="_sys_agents_automators_txt_added"><![CDATA[Добавлено]]></string>
         <string name="_sys_agents_automators_txt_added"><![CDATA[Добавлено]]></string>
         <string name="_sys_agents_automators_txt_status"><![CDATA[Статус]]></string>
         <string name="_sys_agents_automators_txt_status"><![CDATA[Статус]]></string>
         <string name="_sys_agents_automators_btn_add"><![CDATA[Добавить]]></string>
         <string name="_sys_agents_automators_btn_add"><![CDATA[Добавить]]></string>

+ 28 - 5
studio/classes/BxDolStudioAgentsAutomatorsCmts.php

@@ -17,6 +17,7 @@ class BxDolStudioAgentsAutomatorsCmts extends BxTemplCmts
     {
     {
         parent::__construct($sSystem, $iId, $iInit, $oTemplate);
         parent::__construct($sSystem, $iId, $iInit, $oTemplate);
 
 
+        $this->_sTmplNameItemContent = 'agents_comment_content.html';
         $this->_bLiveUpdates = false;
         $this->_bLiveUpdates = false;
 
 
         $this->_oQueryAgents = new BxDolStudioAgentsQuery();
         $this->_oQueryAgents = new BxDolStudioAgentsQuery();
@@ -145,11 +146,14 @@ class BxDolStudioAgentsAutomatorsCmts extends BxTemplCmts
         if($aAutomator['type'] == BX_DOL_AI_AUTOMATOR_EVENT && !empty($aAutomator['params']['trigger']))
         if($aAutomator['type'] == BX_DOL_AI_AUTOMATOR_EVENT && !empty($aAutomator['params']['trigger']))
             $aComments[0]['cmt_text'] .= $aAutomator['params']['trigger'];
             $aComments[0]['cmt_text'] .= $aAutomator['params']['trigger'];
 
 
-        foreach($aComments as $aComment)
+        foreach($aComments as $aComment) {
+            $bAuthorAi = (int)$aComment['cmt_author_id'] == $this->_iProfileIdAi;
+
             $aMessages[] = [
             $aMessages[] = [
-                'role' => (int)$aComment['cmt_author_id'] == $this->_iProfileIdAi ? 'assistant' : 'user',
-                'content' => $aComment['cmt_text']
+                'role' => $bAuthorAi ? 'assistant' : 'user',
+                'content' => $aComment['cmt_text'] . ($bAuthorAi ? '' : ' return only function, without explanation or false if you havn`t enougth data')
             ];
             ];
+        }
 
 
         $sResponse = $oAI->chat($aAutomator['model_url'], $aAutomator['model_model'], $aAutomator['model_key'], $aAutomator['model_params'], $aMessages);
         $sResponse = $oAI->chat($aAutomator['model_url'], $aAutomator['model_model'], $aAutomator['model_key'], $aAutomator['model_params'], $aMessages);
         if($sResponse != 'false') {
         if($sResponse != 'false') {
@@ -168,13 +172,32 @@ class BxDolStudioAgentsAutomatorsCmts extends BxTemplCmts
 
 
     protected function _getActionsBox(&$aCmt, $aBp = [], $aDp = [])
     protected function _getActionsBox(&$aCmt, $aBp = [], $aDp = [])
     {
     {
-        return parent::_getActionsBox($aCmt, $aBp, array_merge($aDp, ['view_only' => true]));
+        if((int)$aCmt['cmt_author_id'] != $this->_iProfileIdAi)
+            return parent::_getActionsBox($aCmt, $aBp, array_merge($aDp, ['view_only' => true]));
+
+        return '<a class="bx-btn bx-btn-small" onclick="alert(\'Under construction\')">Approve</a>';
+    }
+
+    protected function _getCountersBox(&$aCmt, $aBp = [], $aDp = [])
+    {
+        return '';
     }
     }
-    
+
     protected function _getFormBox($sType, $aBp, $aDp)
     protected function _getFormBox($sType, $aBp, $aDp)
     {
     {
         return parent::_getFormBox($sType, $aBp, array_merge($aDp, ['min_post_form' => false]));
         return parent::_getFormBox($sType, $aBp, array_merge($aDp, ['min_post_form' => false]));
     }
     }
+
+    protected function _getTmplVarsText($aCmt)
+    {
+        $aResult = parent::_getTmplVarsText($aCmt);
+
+        //TODO: Custom template for AI responces.
+        if((int)$aCmt['cmt_author_id'] == $this->_iProfileIdAi)
+            $aResult['text'] = '<pre>' . $aResult['text'] . '</pre>';
+
+        return $aResult;
+    }
 }
 }
 
 
 /** @} */
 /** @} */

+ 20 - 5
studio/template/agents_automator_info.html

@@ -1,11 +1,26 @@
 <div>
 <div>
-    <div class="flex gap-2"><div>Type:</div><div>__type__</div></div>
+    <div class="flex gap-2">
+        <div class="w-20 font-semibold"><bx_text:_sys_agents_automators_txt_type /></div>
+        <div>__type__</div>
+    </div>
     <bx_if:show_event>
     <bx_if:show_event>
-        <div class="flex gap-2"><div>Unit:</div><div>__unit__</div></div>
-        <div class="flex gap-2"><div>Action:</div><div>__action__</div></div>
+        <div class="flex gap-2">
+            <div class="w-20 font-semibold"><bx_text:_sys_agents_automators_txt_alert_unit /></div>
+            <div>__unit__</div>
+        </div>
+        <div class="flex gap-2">
+            <div class="w-20 font-semibold"><bx_text:_sys_agents_automators_txt_alert_action /></div>
+            <div>__action__</div>
+        </div>
     </bx_if:show_event>
     </bx_if:show_event>
     <bx_if:show_scheduler>
     <bx_if:show_scheduler>
-        <div class="flex gap-2"><div>Time:</div><div>__time__</div></div>
+        <div class="flex gap-2">
+            <div class="w-20 font-semibold"><bx_text:_sys_agents_automators_txt_scheduler_time /></div>
+            <div>__time__</div>
+        </div>
     </bx_if:show_scheduler>
     </bx_if:show_scheduler>
-    <div class="flex gap-2"><div>Code:</div><div>__code__</div></div>
+    <div class="flex gap-2">
+        <div class="w-20 font-semibold"><bx_text:_sys_agents_automators_txt_code /></div>
+        <div><pre>__code__</pre></div>
+    </div>
 </div>
 </div>

+ 8 - 0
studio/template/agents_comment_content.html

@@ -0,0 +1,8 @@
+<div class="__style_prefix__-body bx-def-vanilla-html bx-def-vh-sm relative mt-2 max-w-none text-clip">
+    __text__
+    <div class="__style_prefix__-body-overflow bx-def-color-bg-box-overflow absolute bottom-0 w-full h-1/5"></div>
+</div>
+<bx_if:show_attached>
+    <div class="__style_prefix__-attached bx-clearfix -mx-1 -mb-1">__attached__</div>
+</bx_if:show_attached>
+<div class="__style_prefix__-counters -mx-1 mt-1">__counters__</div>

+ 14 - 7
template/scripts/BxBaseCmts.php

@@ -1083,6 +1083,19 @@ class BxBaseCmts extends BxDolCmts
         ));
         ));
     }
     }
 
 
+    protected function _getCountersBox(&$aCmt, $aBp = [], $aDp = [])
+    {
+        $bDynamicMode = isset($aDp['dynamic_mode']) && $aDp['dynamic_mode'] === true;
+
+        $oMenuCounters = BxDolMenu::getObjectInstance($this->_sMenuObjCounters);
+        if(!$oMenuCounters)
+            return '';
+
+        $oMenuCounters->setCmtsData($this, $aCmt['cmt_id'], $aBp, $aDp);
+        $oMenuCounters->setDynamicMode($bDynamicMode);
+        return $oMenuCounters->getCode();
+    }
+
     protected function _getFormBox($sType, $aBp, $aDp)
     protected function _getFormBox($sType, $aBp, $aDp)
     {
     {
         $iCmtParentId = isset($aBp['parent_id']) ? (int)$aBp['parent_id'] : 0;
         $iCmtParentId = isset($aBp['parent_id']) ? (int)$aBp['parent_id'] : 0;
@@ -1432,14 +1445,8 @@ class BxBaseCmts extends BxDolCmts
 
 
     protected function _getContent($aCmt, $aBp = [], $aDp = [])
     protected function _getContent($aCmt, $aBp = [], $aDp = [])
     {
     {
-        $bDynamicMode = isset($aDp['dynamic_mode']) && $aDp['dynamic_mode'] === true;
-
         $sAttachments = $this->_getAttachments($aCmt);
         $sAttachments = $this->_getAttachments($aCmt);
 
 
-        $oMenuCounters = BxDolMenu::getObjectInstance($this->_sMenuObjCounters);
-        $oMenuCounters->setCmtsData($this, $aCmt['cmt_id'], $aBp, $aDp);
-        $oMenuCounters->setDynamicMode($bDynamicMode);
-
         return $this->_oTemplate->parseHtmlByName($this->_sTmplNameItemContent, array_merge(array(
         return $this->_oTemplate->parseHtmlByName($this->_sTmplNameItemContent, array_merge(array(
             'style_prefix' => $this->_sStylePrefix,
             'style_prefix' => $this->_sStylePrefix,
             'js_object' => $this->_sJsObjName,
             'js_object' => $this->_sJsObjName,
@@ -1450,7 +1457,7 @@ class BxBaseCmts extends BxDolCmts
                     'attached' => $sAttachments
                     'attached' => $sAttachments
                 )
                 )
             ),
             ),
-            'counters' => $oMenuCounters->getCode(),
+            'counters' => $this->_getCountersBox($aCmt, $aBp, $aDp),
         ), $this->_getTmplVarsText($aCmt)));
         ), $this->_getTmplVarsText($aCmt)));
     }
     }