94 lines
2.4 KiB
Plaintext
94 lines
2.4 KiB
Plaintext
import {
|
|
MessageInfo,
|
|
ProcessingInfo,
|
|
} from "@/types/interfaces/conversationInfo";
|
|
import { BindConfigWithSub } from "@/types/interfaces/common";
|
|
import { MessageStatusEnum } from "@/types/enums/common";
|
|
import AgentDetailData from "./AgentDetailData.uts";
|
|
|
|
/**
|
|
* 工具层:提供通用的工具函数
|
|
*/
|
|
export default class AgentDetailUtils {
|
|
/**
|
|
* 根据datasList内容动态确定type类型
|
|
*/
|
|
static determineTypeFromData(dataList: any[][]): string {
|
|
if (!dataList || dataList.length === 0) return "text";
|
|
|
|
const firstToken = dataList[0]?.[0];
|
|
if (firstToken) {
|
|
switch (firstToken.type) {
|
|
case "code":
|
|
return "code";
|
|
case "table":
|
|
return "table";
|
|
case "list":
|
|
return "list";
|
|
case "heading":
|
|
return "heading";
|
|
case "blockquote":
|
|
return "quote";
|
|
case "hr":
|
|
return "divider";
|
|
case "math":
|
|
return "math";
|
|
case "paragraph":
|
|
return "paragraph";
|
|
default:
|
|
return "text";
|
|
}
|
|
}
|
|
return "text";
|
|
}
|
|
|
|
/**
|
|
* 生成唯一的uniqueId
|
|
*/
|
|
static generateUniqueId(): string {
|
|
const timestamp = Date.now();
|
|
const random = Math.random().toString(36).substring(2, 15);
|
|
return `markdown_${timestamp}_${random}`;
|
|
}
|
|
|
|
/**
|
|
* 检查会话是否正在进行中
|
|
*/
|
|
static checkConversationActive(
|
|
messages: MessageInfo[],
|
|
data: AgentDetailData,
|
|
): void {
|
|
const hasActiveMessage =
|
|
(messages?.length &&
|
|
messages.some(
|
|
(message) =>
|
|
message.status === MessageStatusEnum.Loading ||
|
|
message.status === MessageStatusEnum.Incomplete,
|
|
)) ||
|
|
false;
|
|
data.isConversationActive.value = hasActiveMessage;
|
|
}
|
|
|
|
/**
|
|
* 处理处理中的消息列表
|
|
*/
|
|
// static handleChatProcessingList(_processingList: ProcessingInfo[], data: AgentDetailData): void {
|
|
// const processedMap = new Map<string, ProcessingInfo>()
|
|
|
|
// _processingList.forEach((item) => {
|
|
// const key = item.executeId || ''
|
|
// const existing = processedMap.get(key)
|
|
|
|
// if (!existing) {
|
|
// processedMap.set(key, item)
|
|
// }
|
|
// })
|
|
|
|
// const newProcessingList: ProcessingInfo[] = []
|
|
// processedMap.forEach((value) => {
|
|
// newProcessingList.push(value)
|
|
// })
|
|
// data.processingList.value = newProcessingList
|
|
// }
|
|
}
|