chore: initialize qiming workspace repository

This commit is contained in:
Codex
2026-05-29 14:22:48 +08:00
commit bfd67a0f2c
10750 changed files with 1885711 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
import { nextTick } from 'vue'
import { MessageInfo } from '@/types/interfaces/conversationInfo'
import { MessageTypeEnum } from '@/types/enums/agent'
import { MessageStatusEnum } from '@/types/enums/common'
import AgentDetailData from './AgentDetailData.uts'
import AgentDetailUtils from './AgentDetailUtils.uts'
/**
* 组件管理层:负责组件的引用管理和更新
*/
export default class ComponentManager {
private data: AgentDetailData
constructor(private data: AgentDetailData) {
this.data = data
}
/**
* 设置消息组件引用
*/
setMessageRef(el: any, messageId: string): void {
if (el) {
this.data.messageRefs.value[messageId] = el
}
}
/**
* 移除消息组件引用
*/
removeMessageRef(messageId: string): void {
if (this.data.messageRefs.value[messageId]) {
delete this.data.messageRefs.value[messageId]
}
}
/**
* 更新消息组件
*/
async updateMessageComponent(messageId: string, newData: any): Promise<void> {
const messageRef = this.data.messageRefs.value[messageId]
if (messageRef) {
try {
if (typeof messageRef.updateMessage === 'function') {
await messageRef.updateMessage(newData)
} else {
// 备用方案:强制触发组件更新
await nextTick()
const message = this.data.messageList.value.find(msg => msg.id === messageId)
if (message) {
message.lastUpdateTime = Date.now()
this.data.messageList.value = [...this.data.messageList.value]
}
}
} catch (error) {
console.error(`更新消息组件 ${messageId} 失败:`, error)
// 错误恢复:使用备用方案
try {
await nextTick()
const message = this.data.messageList.value.find(msg => msg.id === messageId)
if (message) {
message.lastUpdateTime = Date.now()
this.data.messageList.value = [...this.data.messageList.value]
}
} catch (backupError) {
console.error('备用方案也失败了:', backupError)
}
}
}
}
/**
* 根据状态枚举确定状态
*/
determineState(status: MessageStatusEnum): number {
switch (status) {
case MessageStatusEnum.Loading:
return 1
case MessageStatusEnum.Incomplete:
return 2
case MessageStatusEnum.Complete:
return 3
case MessageStatusEnum.Error:
return 4
default:
return 3
}
}
/**
* 将MessageInfo转换为MsgItem格式
*/
convertMessageInfoToMsgItem(messageInfo: MessageInfo): any {
return {
_id: messageInfo.id?.toString() || '',
from_uid: messageInfo.messageType === MessageTypeEnum.ASSISTANT ? 'uni-ai' : 'user',
// thinkContent: messageInfo.text || messageInfo.think || '',
// body: messageInfo.text || messageInfo.think || '',
thinkContent: messageInfo.think || '',
body: messageInfo.text || '',
create_time: new Date(messageInfo.time || Date.now()).getTime(),
state: this.determineState(messageInfo.status),
chat_id: 'chat-' + this.data.conversationId.value,
// markdownElList: [],
// markdownElList: messageInfo.markdownElList || [],
rendered: false,
// 传递processingList用于自定义组件渲染历史消息的工具调用等
processingList: messageInfo.processingList || []
} as any
}
}