@@ -0,0 +1,301 @@
import { api } from '@/api/index'
import type { ResultDomain , PageRequest } from '@/types'
import type { TbChat , TbChatMessage , ChatPrepareData } from '@/types/ai'
import type { TbWorkcaseDTO } from '@/types/workcase/workcase'
import type {
TbChatRoomDTO ,
TbChatRoomMemberDTO ,
TbChatRoomMessageDTO ,
TbCustomerServiceDTO ,
TbWordCloudDTO ,
ChatRoomVO ,
ChatMemberVO ,
ChatRoomMessageVO ,
CustomerServiceVO
} from '@/types/workcase/chatRoom'
/**
* @description 工单对话相关接口
* @filename workcaseChat.ts
* @author cascade
* @copyright xyzh
* @since 2025-12-22
*/
export const workcaseChatAPI = {
baseUrl : '/urban-lifeline/workcase/chat' ,
// ====================== AI对话管理 ======================
/**
* 创建对话
*/
async createChat ( chat : TbChat ) : Promise < ResultDomain < TbChat > > {
const response = await api . post < TbChat > ( ` ${ this . baseUrl } ` , chat )
return response . data
} ,
/**
* 更新对话
*/
async updateChat ( chat : TbChat ) : Promise < ResultDomain < TbChat > > {
const response = await api . put < TbChat > ( ` ${ this . baseUrl } ` , chat )
return response . data
} ,
/**
* 查询对话列表
*/
async getChatList ( filter : TbChat ) : Promise < ResultDomain < TbChat > > {
const response = await api . post < TbChat > ( ` ${ this . baseUrl } /list ` , filter )
return response . data
} ,
/**
* 获取对话消息列表
*/
async getChatMessageList ( filter : TbChat ) : Promise < ResultDomain < TbChatMessage > > {
const response = await api . post < TbChatMessage > ( ` ${ this . baseUrl } /message/list ` , filter )
return response . data
} ,
/**
* 准备对话会话
*/
async prepareChatMessageSession ( prepareData : ChatPrepareData ) : Promise < ResultDomain < string > > {
const response = await api . post < string > ( ` ${ this . baseUrl } /prepare ` , prepareData )
return response . data
} ,
/**
* 流式对话( SSE) - 返回EventSource URL
*/
getStreamUrl ( sessionId : string ) : string {
return ` ${ this . baseUrl } /stream/ ${ sessionId } `
} ,
/**
* 停止对话
*/
async stopChat ( filter : TbChat , taskId : string ) : Promise < ResultDomain < boolean > > {
const response = await api . post < boolean > ( ` ${ this . baseUrl } /stop/ ${ taskId } ` , filter )
return response . data
} ,
/**
* 评论对话消息
*/
async commentChatMessage ( filter : TbChat , messageId : string , comment : string ) : Promise < ResultDomain < boolean > > {
const response = await api . post < boolean > ( ` ${ this . baseUrl } /comment ` , filter , {
params : { messageId , comment }
} )
return response . data
} ,
// ====================== 对话分析 ======================
/**
* 分析对话( AI预填工单信息)
*/
async analyzeChat ( chatId : string ) : Promise < ResultDomain < TbWorkcaseDTO > > {
const response = await api . get < TbWorkcaseDTO > ( ` ${ this . baseUrl } /analyze/ ${ chatId } ` )
return response . data
} ,
/**
* 总结对话
*/
async summaryChat ( chatId : string ) : Promise < ResultDomain < TbWorkcaseDTO > > {
const response = await api . post < TbWorkcaseDTO > ( ` ${ this . baseUrl } /summary/ ${ chatId } ` )
return response . data
} ,
// ====================== ChatRoom聊天室管理 ======================
/**
* 创建聊天室
*/
async createChatRoom ( chatRoom : TbChatRoomDTO ) : Promise < ResultDomain < TbChatRoomDTO > > {
const response = await api . post < TbChatRoomDTO > ( ` ${ this . baseUrl } /room ` , chatRoom )
return response . data
} ,
/**
* 更新聊天室
*/
async updateChatRoom ( chatRoom : TbChatRoomDTO ) : Promise < ResultDomain < TbChatRoomDTO > > {
const response = await api . put < TbChatRoomDTO > ( ` ${ this . baseUrl } /room ` , chatRoom )
return response . data
} ,
/**
* 关闭聊天室
*/
async closeChatRoom ( roomId : string , closedBy : string ) : Promise < ResultDomain < boolean > > {
const response = await api . post < boolean > ( ` ${ this . baseUrl } /room/ ${ roomId } /close ` , null , {
params : { closedBy }
} )
return response . data
} ,
/**
* 获取聊天室详情
*/
async getChatRoomById ( roomId : string ) : Promise < ResultDomain < TbChatRoomDTO > > {
const response = await api . get < TbChatRoomDTO > ( ` ${ this . baseUrl } /room/ ${ roomId } ` )
return response . data
} ,
/**
* 分页查询聊天室
*/
async getChatRoomPage ( pageRequest : PageRequest < TbChatRoomDTO > ) : Promise < ResultDomain < ChatRoomVO > > {
const response = await api . post < ChatRoomVO > ( ` ${ this . baseUrl } /room/page ` , pageRequest )
return response . data
} ,
// ====================== ChatRoom成员管理 ======================
/**
* 添加聊天室成员
*/
async addChatRoomMember ( member : TbChatRoomMemberDTO ) : Promise < ResultDomain < TbChatRoomMemberDTO > > {
const response = await api . post < TbChatRoomMemberDTO > ( ` ${ this . baseUrl } /room/member ` , member )
return response . data
} ,
/**
* 移除聊天室成员
*/
async removeChatRoomMember ( memberId : string ) : Promise < ResultDomain < boolean > > {
const response = await api . delete < boolean > ( ` ${ this . baseUrl } /room/member/ ${ memberId } ` )
return response . data
} ,
/**
* 获取聊天室成员列表
*/
async getChatRoomMemberList ( roomId : string ) : Promise < ResultDomain < ChatMemberVO > > {
const response = await api . get < ChatMemberVO > ( ` ${ this . baseUrl } /room/ ${ roomId } /members ` )
return response . data
} ,
// ====================== ChatRoom消息管理 ======================
/**
* 发送聊天室消息
*/
async sendMessage ( message : TbChatRoomMessageDTO ) : Promise < ResultDomain < TbChatRoomMessageDTO > > {
const response = await api . post < TbChatRoomMessageDTO > ( ` ${ this . baseUrl } /room/message ` , message )
return response . data
} ,
/**
* 分页查询聊天室消息
*/
async getChatMessagePage ( pageRequest : PageRequest < TbChatRoomMessageDTO > ) : Promise < ResultDomain < ChatRoomMessageVO > > {
const response = await api . post < ChatRoomMessageVO > ( ` ${ this . baseUrl } /room/message/page ` , pageRequest )
return response . data
} ,
/**
* 删除聊天室消息
*/
async deleteMessage ( messageId : string ) : Promise < ResultDomain < boolean > > {
const response = await api . delete < boolean > ( ` ${ this . baseUrl } /room/message/ ${ messageId } ` )
return response . data
} ,
// ====================== 客服人员管理 ======================
/**
* 添加客服人员
*/
async addCustomerService ( customerService : TbCustomerServiceDTO ) : Promise < ResultDomain < TbCustomerServiceDTO > > {
const response = await api . post < TbCustomerServiceDTO > ( ` ${ this . baseUrl } /customer-service ` , customerService )
return response . data
} ,
/**
* 更新客服人员
*/
async updateCustomerService ( customerService : TbCustomerServiceDTO ) : Promise < ResultDomain < TbCustomerServiceDTO > > {
const response = await api . put < TbCustomerServiceDTO > ( ` ${ this . baseUrl } /customer-service ` , customerService )
return response . data
} ,
/**
* 删除客服人员
*/
async deleteCustomerService ( userId : string ) : Promise < ResultDomain < boolean > > {
const response = await api . delete < boolean > ( ` ${ this . baseUrl } /customer-service/ ${ userId } ` )
return response . data
} ,
/**
* 分页查询客服人员
*/
async getCustomerServicePage ( pageRequest : PageRequest < TbCustomerServiceDTO > ) : Promise < ResultDomain < CustomerServiceVO > > {
const response = await api . post < CustomerServiceVO > ( ` ${ this . baseUrl } /customer-service/page ` , pageRequest )
return response . data
} ,
/**
* 更新客服在线状态
*/
async updateCustomerServiceStatus ( userId : string , status : string ) : Promise < ResultDomain < boolean > > {
const response = await api . post < boolean > ( ` ${ this . baseUrl } /customer-service/ ${ userId } /status ` , null , {
params : { status }
} )
return response . data
} ,
/**
* 获取可接待客服列表
*/
async getAvailableCustomerServices ( ) : Promise < ResultDomain < CustomerServiceVO > > {
const response = await api . get < CustomerServiceVO > ( ` ${ this . baseUrl } /customer-service/available ` )
return response . data
} ,
/**
* 自动分配客服
*/
async assignCustomerService ( roomId : string ) : Promise < ResultDomain < CustomerServiceVO > > {
const response = await api . post < CustomerServiceVO > ( ` ${ this . baseUrl } /room/ ${ roomId } /assign ` )
return response . data
} ,
// ====================== 词云管理 ======================
/**
* 添加词云
*/
async addWordCloud ( wordCloud : TbWordCloudDTO ) : Promise < ResultDomain < TbWordCloudDTO > > {
const response = await api . post < TbWordCloudDTO > ( ` ${ this . baseUrl } /wordcloud ` , wordCloud )
return response . data
} ,
/**
* 更新词云
*/
async updateWordCloud ( wordCloud : TbWordCloudDTO ) : Promise < ResultDomain < TbWordCloudDTO > > {
const response = await api . put < TbWordCloudDTO > ( ` ${ this . baseUrl } /wordcloud ` , wordCloud )
return response . data
} ,
/**
* 查询词云列表
*/
async getWordCloudList ( filter : TbWordCloudDTO ) : Promise < ResultDomain < TbWordCloudDTO > > {
const response = await api . post < TbWordCloudDTO > ( ` ${ this . baseUrl } /wordcloud/list ` , filter )
return response . data
} ,
/**
* 分页查询词云
*/
async getWordCloudPage ( pageRequest : PageRequest < TbWordCloudDTO > ) : Promise < ResultDomain < TbWordCloudDTO > > {
const response = await api . post < TbWordCloudDTO > ( ` ${ this . baseUrl } /wordcloud/page ` , pageRequest )
return response . data
}
}