From b12b9168800a9b388d822fbf8c49fb5b60784a0c Mon Sep 17 00:00:00 2001 From: liwenrui Date: Mon, 24 Jul 2023 15:11:01 +0800 Subject: [PATCH] * return empty when unable to find object. --- module/ai/control.php | 8 +++++++- module/ai/model.php | 15 +++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/module/ai/control.php b/module/ai/control.php index 75a88f00dc..75b0761331 100644 --- a/module/ai/control.php +++ b/module/ai/control.php @@ -466,7 +466,13 @@ class ai extends control $this->sendSuccess($response); } - list($objectData, $object) = $this->ai->getObjectForPromptById($prompt, $objectId); + $objectForPrompt = $this->ai->getObjectForPromptById($prompt, $objectId); + if(empty($objectForPrompt)) + { + // TODO(chenjianyu): handle empty object. + } + + list($objectData, $object) = $objectForPrompt; $this->view->prompt = $prompt; $this->view->object = $object; diff --git a/module/ai/model.php b/module/ai/model.php index 1fa81a91d5..b83847393b 100644 --- a/module/ai/model.php +++ b/module/ai/model.php @@ -516,6 +516,8 @@ class aiModel extends model */ public function serializeDataToPrompt($module, $sources, $data) { + if(empty($data)) return ''; + /* Handle object data. */ if(is_object($data)) $data = (array)$data; @@ -645,10 +647,10 @@ class aiModel extends model /** * Get object data for prompt by id. * - * @param object $prompt - * @param int $objectId + * @param object $prompt prompt object + * @param int $objectId object id * @access public - * @return object + * @return array|false array of object data and object, or false if error. */ public function getObjectForPromptById($prompt, $objectId) { @@ -680,6 +682,8 @@ class aiModel extends model if(isset($sourceGroups['tasks'])) $object->tasks = $this->loadModel('task')->getExecutionTasks($objectId); } + if(empty(get_object_vars($object))) return false; + /* Format data as per data source definitions. */ foreach($sourceGroups as $objectName => $objectKeys) { @@ -771,7 +775,10 @@ class aiModel extends model if(is_numeric($prompt)) $prompt = $this->getPromptById($prompt); if(empty($prompt)) return false; - list($objectData) = $this->getObjectForPromptById($prompt, $objectId); + $objectForPrompt = $this->getObjectForPromptById($prompt, $objectId); + if(empty($objectForPrompt)) return false; + + list($objectData) = $objectForPrompt; $dataPrompt = $this->serializeDataToPrompt($prompt->module, $prompt->source, $objectData); $wholePrompt = $this->assemblePrompt($prompt, $dataPrompt);