feat: 完善AI助手功能,新增消息提示词整理接口,优化流式消息处理逻辑,移除冗余数据表和相关代码

This commit is contained in:
kuaifan
2025-11-07 22:03:11 +00:00
parent 892ad395a7
commit 69c66053b7
10 changed files with 457 additions and 466 deletions

View File

@@ -43,7 +43,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property \Illuminate\Support\Carbon|null $deleted_at
* @property-read int|mixed $percentage
* @property-read \App\Models\User|null $user
* @property-read \App\Models\WebSocketDialogMsgExtra|null $extra
* @property-read \App\Models\WebSocketDialog|null $webSocketDialog
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelHidden()
@@ -112,14 +111,6 @@ class WebSocketDialogMsg extends AbstractModel
return $this->hasOne(User::class, 'userid', 'userid');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*/
public function extra(): \Illuminate\Database\Eloquent\Relations\HasOne
{
return $this->hasOne(WebSocketDialogMsgExtra::class, 'msg_id', 'id');
}
/**
* 阅读占比
* @return int|mixed
@@ -1242,10 +1233,9 @@ class WebSocketDialogMsg extends AbstractModel
* @param bool|null $push_silence 推送-静默
* - type = [text|file|record|meeting] 默认为false
* @param string|null $search_key 搜索关键词(用于搜索,留空则自动生成)
* @param array|null $extra_data 额外数据(仅在发送消息时有效)
* @return array
*/
public static function sendMsg($action, $dialog_id, $type, $msg, $sender = null, $push_self = false, $push_retry = false, $push_silence = null, $search_key = null, $extra_data = null)
public static function sendMsg($action, $dialog_id, $type, $msg, $sender = null, $push_self = false, $push_retry = false, $push_silence = null, $search_key = null)
{
$link = 0;
$mtype = $type;
@@ -1390,17 +1380,10 @@ class WebSocketDialogMsg extends AbstractModel
'msg' => $msg,
'read' => 0,
]);
AbstractModel::transaction(function () use ($search_key, $dialogMsg, $extra_data) {
AbstractModel::transaction(function () use ($search_key, $dialogMsg) {
$dialogMsg->send = 1;
$dialogMsg->generateKeyAndSave($search_key);
//
if ($extra_data) {
WebSocketDialogMsgExtra::createInstance([
'msg_id' => $dialogMsg->id,
'data' => Base::array2json($extra_data),
])->save();
}
//
WebSocketDialogSession::updateTitle($dialogMsg->session_id, $dialogMsg);
//
if ($dialogMsg->type === 'meeting') {