微信修改

This commit is contained in:
2025-12-22 19:16:53 +08:00
parent ae16757984
commit cfb160cf09
70 changed files with 4697 additions and 1839 deletions

View File

@@ -161,12 +161,11 @@ public class WorkcaseChatContorller {
// ========================= ChatRoom聊天室管理实时IM =========================
@Operation(summary = "创建聊天室")
@Operation(summary = "创建聊天室(转人工时调用)")
@PreAuthorize("hasAuthority('workcase:room:create')")
@PostMapping("/room")
public ResultDomain<TbChatRoomDTO> createChatRoom(@RequestBody TbChatRoomDTO chatRoom) {
ValidationResult vr = ValidationUtils.validate(chatRoom, Arrays.asList(
ValidationUtils.requiredString("workcaseId", "工单ID"),
ValidationUtils.requiredString("guestId", "来客ID")
));
if (!vr.isValid()) {
@@ -202,6 +201,16 @@ public class WorkcaseChatContorller {
return chatRoomService.getChatRoomById(roomId);
}
@Operation(summary = "绑定工单到聊天室")
@PreAuthorize("hasAuthority('workcase:room:update')")
@PostMapping("/room/{roomId}/bind-workcase")
public ResultDomain<TbChatRoomDTO> bindWorkcaseToRoom(@PathVariable String roomId, @RequestParam String workcaseId) {
TbChatRoomDTO chatRoom = new TbChatRoomDTO();
chatRoom.setRoomId(roomId);
chatRoom.setWorkcaseId(workcaseId);
return chatRoomService.updateChatRoom(chatRoom);
}
@Operation(summary = "分页查询聊天室")
@PreAuthorize("hasAuthority('workcase:room:view')")
@PostMapping("/room/page")

View File

@@ -61,9 +61,9 @@ public class ChatRoomServiceImpl implements ChatRoomService {
@Override
@Transactional
public ResultDomain<TbChatRoomDTO> createChatRoom(TbChatRoomDTO chatRoom) {
logger.info("创建聊天室: workcaseId={}, roomType={}", chatRoom.getWorkcaseId(), chatRoom.getRoomType());
logger.info("创建聊天室: guestId={}, aiSessionId={}", chatRoom.getGuestId(), chatRoom.getAiSessionId());
// 一个工单只能创建一个聊天室
// 如果关联工单,检查工单是否已有聊天室
if (chatRoom.getWorkcaseId() != null && !chatRoom.getWorkcaseId().isEmpty()) {
TbChatRoomDTO filter = new TbChatRoomDTO();
filter.setWorkcaseId(chatRoom.getWorkcaseId());

View File

@@ -17,26 +17,24 @@
```
用户进入小程序
AI客服对话默认
AI客服对话默认,存储在 ai.tb_chat 表
连续3次AI对话后询问是否转人工
用户触发转人工
AI自动生成工单信息预填表单
用户创建工单
用户触发转人工(可能一开始就手动触发,没有聊天记录)
【核心变更】创建IM聊天室取代微信客服
同步AI对话记录到聊天室
同步 ai.tb_chat 对话记录到聊天室
客服人员加入聊天室
客服人员加入聊天室AI退出
客服与客户IM对话
客服与客户IM对话员工续接AI对话
【可选】发起Jitsi Meet视频会议
【可选】用户/员工在聊天室内创建工单也可在web管理端
工单处理和状态更新
工单完成/撤销,生成总结和词云
@@ -44,6 +42,11 @@ AI自动生成工单信息预填表单
### 关键改动点
**AI对话 → 转人工 → 创建聊天室**
- AI对话存储在 `ai.tb_chat`通过WorkcaseChatService调用AI接口
- 转人工时创建IM聊天室同步AI对话记录
- 工单和会议没有前置关系,可在聊天室内随时创建
**取消微信客服 → 使用自建IM + Jitsi Meet**
- IM聊天室文字、图片、文件、语音消息
- 视频会议通过iframe嵌入Jitsi Meet最简实现
@@ -57,11 +60,11 @@ AI自动生成工单信息预填表单
#### 1. **tb_chat_room** - 聊天室表 ⭐核心表
**用途**一个工单对应一个聊天室
**用途**转人工时创建的聊天室,可关联工单
```sql
room_id -- 聊天室ID主键
workcase_id -- 关联工单ID唯一
workcase_id -- 关联工单ID可选,可后续绑定
room_name -- 聊天室名称
status -- 状态active-活跃 closed-已关闭 archived-已归档
guest_id -- 来客ID
@@ -76,8 +79,9 @@ last_message -- 最后消息内容(列表展示用)
```
**业务规则**
- 创建工单时自动创建聊天室
- 聊天室状态随工单状态变化
- 转人工时创建聊天室,同步 ai.tb_chat 对话记录
- 用户/员工可在聊天室内创建工单,绑定 workcase_id
- 聊天室可独立存在,无需绑定工单
- 工单完成后聊天室归档
---

View File

@@ -1,23 +1,20 @@
# 小程序用户聊天和工单的产生逻辑
接口实现方式:
0. 用户进行微信小程序,1个IM聊天室默认回复人员是ai
1. WorkcaseChatServiceImpl通过ai接口进行ai回复对话人员是来客和ai
1. 用户进行微信小程序,进行AI问答默认回复人员是ai在ai.tb_chat表
2. 当连续3次ai聊天后询问是否转人工
3. 用户触发转人工(可能是一开始,就手动触发,没有聊天记录)
4. 用户跳转前,必须创建工单
5. ai根据聊天对话自动生成部分工单信息预填入小程序的工单创建的表单
6. 创建工单后同步工单到CRM
7. 创建一个IM聊天室同步ai.tb_chat的聊天信息
8. 员工进入聊天室和客户聊天ai退出聊天室的聊天记录同步到tb_chat表里面对话人员是来客和客服。把ai替换成员工进行对话的续接
9. 可以开启jitsi会议
10. 员工自己更新工单状态如果在CRM更新工单状态会触发receiveWorkcaseFromCrm如果在本系统更新工单会触发工单同步到CRM
11. 在工单是完成、撤销后,工单、对话进行总结,并更新词云
4. 创建一个IM聊天室同步ai.tb_chat的聊天信息
5. 员工进入聊天室和客户聊天ai退出聊天室的聊天记录同步到tb_chat表里面对话人员是来客和客服。把ai替换成员工进行对话的续接
6. 可以开启jitsi会议
7. 用户、员工在聊天室内创建工单也可在web的管理端
# 聊天室的实现改造Jitsi Meet
包含jitsiMeet所有功能
对创建会议的人员需要校验1.是当前工单聊天室内的成员
对加入会议的人员需要校验1.是当前工单聊天室内的成员
jitsiMeet要避免任何人都能创建会议的问题,只有存在指定工单时才能创建
jitsiMeet要避免任何人都能创建会议的问题
有视频会议的需求
有视频会议的需求
总体内容变化交互逻辑改变工单和会议没有前置关系。用户先ai对话然后创建聊天室可以随时在聊天室内创建工单员工可以在聊天室和web端创建工单并更新状态。