|
|
@@ -31,19 +31,14 @@ class robot{
|
|
|
$operate = utils::_get('operate');
|
|
|
$operate = strtolower($operate);
|
|
|
|
|
|
- /*
|
|
|
- * index page
|
|
|
- */
|
|
|
if (empty($operate)) {
|
|
|
$column = column::getInstance()->getDisplayColumn('Robot_Chat_Search');
|
|
|
- $OperationTableColumns = column::getInstance()->tableColumns('Operation_Search',$column);
|
|
|
+ $OperationTableColumns = column::getInstance()->tableColumns('Robot_Chat_Search',$column);
|
|
|
$data['OperationTableColumns'] = $OperationTableColumns;
|
|
|
common::echo_json_encode(200,$data);
|
|
|
exit();
|
|
|
}
|
|
|
- /*
|
|
|
- * operation_search search
|
|
|
- */
|
|
|
+
|
|
|
if ($operate == "search") {
|
|
|
//$this->_operation_search();
|
|
|
}
|
|
|
@@ -269,14 +264,51 @@ class robot{
|
|
|
$request_content = common::check_input(json_encode($response['data']));
|
|
|
$ai_response_content = common::check_input(json_encode($response['full_response']));
|
|
|
$output_token = common::check_input($output_token);
|
|
|
-
|
|
|
+
|
|
|
+ $answer_template = "";
|
|
|
+ $message = json_decode(common::getChatAimessage($response['message']),true);
|
|
|
+ if($message["can_query"] == "true" && !empty($message["sql"])){
|
|
|
+ $reference = $message["reference"];
|
|
|
+ $answer_template = common::check_input($message["reference"]);
|
|
|
+ $sql = $message["sql"];
|
|
|
+ //拆分sql 存在多条的情况
|
|
|
+ $sqlArr = explode(";", $sql);
|
|
|
+ //给所有sql 拼接用户权限
|
|
|
+ $sqlWhere = ' ' . common::searchExtendHand_KLN("ocean", $_SESSION["ONLINE_USER"]);
|
|
|
+ //先不考虑总数,处理有难度
|
|
|
+ foreach($sqlArr as $_sql){
|
|
|
+ if(empty($_sql)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //根据public.kln_ocean 和 WHERE 的位置关系,带入权限
|
|
|
+ $new_sql = utils::modifyString($_sql,$sqlWhere);
|
|
|
+ //处理limit 超过10 先限制10
|
|
|
+ $new_sql = utils::processLimitClause($new_sql);
|
|
|
+ $rs = common::excuteListSql($new_sql);
|
|
|
+ $reference = utils::replacementsMultiline($rs,$reference);
|
|
|
+ }
|
|
|
+ //有就去掉{{#each hbol_list}}\n {{/each}}
|
|
|
+ $reference = preg_replace([
|
|
|
+ '/\{\{[^}]+\}\}\n/', // 匹配开始标签及换行
|
|
|
+ '/\{\{\/[^}]+\}\}/' // 匹配结束标签
|
|
|
+ ], '', $reference);
|
|
|
+
|
|
|
+ //$reference = $reference.$message["reference"];
|
|
|
+ $answer = $reference;
|
|
|
+ //$response['message'] = json_decode(common::getChatAimessage($response['message']),true);
|
|
|
+ //$answer = $response;
|
|
|
+ }else{
|
|
|
+ $answer = $message["response"];
|
|
|
+ }
|
|
|
+
|
|
|
+ //最后插入数据
|
|
|
$sql = "INSERT INTO public.kln_robot_chat_log( question_id, user_name, user_type, question_type, question_content,
|
|
|
- answer_type, answer, answer_satisfication, answer_duration, question_date,
|
|
|
+ answer_type, answer, answer_satisfication, answer_duration,answer_template, question_date,
|
|
|
question_time, request_id, ai_model, request_content, input_token,
|
|
|
ai_response_content, output_token, request_time, response_time,
|
|
|
response_duration)
|
|
|
VALUES ('$question_id', '$user_name', '$user_type', '$question_type', '$question_content',
|
|
|
- '$answer_type', '$answer', '', '$response_duration', '$request_question_time',
|
|
|
+ '$answer_type', '".common::check_input($answer)."', '', '$response_duration','$answer_template','$request_question_time',
|
|
|
'$question_time', '$request_id', '$ai_model','$request_content', '$input_token',
|
|
|
'$ai_response_content', '$output_token', '$request_question_time', '$response_time',
|
|
|
'$response_duration');";
|
|
|
@@ -285,21 +317,15 @@ class robot{
|
|
|
$data = array("msg" => "AI Chat Save Error");
|
|
|
common::echo_json_encode(200,$data);
|
|
|
exit();
|
|
|
- }
|
|
|
- error_log($response['message']);
|
|
|
- // $sql ="";
|
|
|
- // //用户权限
|
|
|
- // $sqlWhere = ' and ' . common::searchExtendHand_KLN("ocean", $_SESSION["ONLINE_USER"]);
|
|
|
- // $sql .= $sqlWhere;
|
|
|
- // $rs = common::excuteListSql($sql);
|
|
|
- $response['message'] = json_decode(common::getChatAimessage($response['message']),true);
|
|
|
- $rs = $response;
|
|
|
- common::echo_json_encode(200,$rs);
|
|
|
+ }
|
|
|
+
|
|
|
+ $return = array("type"=>"markdown","data" =>$answer);
|
|
|
+ common::echo_json_encode(200,$return);
|
|
|
exit();
|
|
|
}
|
|
|
|
|
|
if ($operate == "download"){
|
|
|
- $sql = common::deCode($_POST ['tmp_search'], 'D');
|
|
|
+ $sql = common::deCode($_REQUEST['tmp_search'], 'D');
|
|
|
if(!empty($sql)){
|
|
|
$rs = common::excuteListSql($sql);
|
|
|
}
|