今天主要在完善商城的智能客服模块。
之前的客服页面虽然已经有了基本样式,也能展示工单和聊天记录,但不少功能还停留在“看起来能用”的阶段。比如客服回答不了用户自己的订单问题、发送消息会刷新整个页面、买家回复一句话后商家又要重新接单,这些问题实际使用时都比较明显。
所以今天没有继续堆页面,而是集中把客服的数据、权限和会话流程重新梳理了一遍。
一、把买家客服和商家客服彻底分开
商城里的买家和商家关注点完全不同,客服自然也不能共用同一套数据权限。
买家比较关心的是:
- 自己有哪些订单
- 哪些订单还没有发货
- 一共消费了多少钱
- 优惠券、积分和售后进度
- 商品、物流和支付问题
商家关心的则是:
- 本店订单数量
- 待发货订单
- 商品库存
- 店铺活动和结算
- 售后与投诉处理
- 店铺资质和经营情况
这次给两端客服划分了独立的数据范围。买家客服只能读取当前买家的数据,商家客服只能读取当前店铺的数据。
权限判断放在后端业务代码中处理,而不是只在提示词里写一句“不能访问”。这样即使用户故意追问其他买家订单、商家成本或者其他店铺数据,后端也会直接拦截。
同时补充了项目级的 Agent 约束、Skill 使用范围和运行策略,后续再增加新的智能体能力时,可以继续沿用这套边界。
二、让客服能够查询真实业务数据
之前客服面对“我有哪些订单”“我一共花了多少钱”这类问题时,只能给出比较笼统的回答。
今天把客服和商城现有订单数据接了起来。
现在买家可以直接询问:
- 查询我的订单
- 我有哪些待发货订单
- 我的订单编号是什么
- 我在商城一共消费了多少钱
商家也可以查询本店的订单概况,不再返回固定的演示内容。
这里最重要的不是让客服多说几句话,而是让回答有真实数据作为依据。查询前会先校验当前登录账号,再按照买家编号或商家编号限制数据范围,避免把不属于当前用户的数据带出来。
三、客服消息改成无刷新发送
原来的消息回复使用普通表单提交。每发送一次消息,浏览器都会重新加载整个页面,聊天体验比较割裂。
今天把买家端和商家端都改成了异步发送。
现在点击发送后:
整个过程不会刷新页面,输入框也会在发送成功后自动清空。
另外增加了发送状态和错误提示。请求处理中按钮会暂时禁用,避免连续点击产生重复消息;如果登录失效或发送失败,也会在当前页面提示,而不是直接跳到一个莫名其妙的错误页面。
四、增加双方消息自动同步
只解决“不刷新发送”还不够。
如果买家发送消息后,商家页面仍然需要手动刷新才能看到,那还是算不上实时聊天。
目前买家端和商家端会每隔3秒检查一次当前工单的新消息。发现消息列表发生变化后,只更新聊天区域,不重新加载其他内容。
同时处理了几个细节:
- 页面切到后台时暂停无意义的请求;
- 回到页面后立即同步一次;
- 新消息出现后自动滚动到最新位置;
- 只在消息发生变化时重新渲染,避免页面闪烁;
- 旧请求不会覆盖刚发送的新消息;
- 聊天记录区域独立滚动,不再无限拉长整个页面。
如果以后商城访问量增加,可以再把轮询升级成 WebSocket 或 SSE。目前这个方案实现简单,也足够支撑项目现阶段的使用和演示。
五、修复商家重复接单的问题
今天遇到一个比较明显的状态问题。
商家第一次接单后已经进入人工会话,买家只是回复了一句“ok”,工单却又变成了“待商家接单”。商家想继续回复,还得再点一次接单。
问题出在工单状态更新逻辑上:买家每次发消息,后端都把状态重新设置成了待接单。
修改后,工单状态分成了两种情况:
- 新工单尚未接待:保持待接单;
- 商家已经接单:买家后续回复时继续保持处理中。
也就是说,新工单只需要接一次。后面不管买家和商家来回回复多少次,都属于同一次人工会话,不会反复生成“客服已接单”的系统记录。
六、增加人工会话超时结束
人工客服也不能一直挂着。
现在商家回复后,如果买家连续3分钟没有继续回应,后端会自动写入一条结束消息:
您好,连续3分钟没有收到您的进一步回复,本次人工会话已自动结束。如仍需帮助,可重新打开工单继续咨询。
随后工单状态会变成已关闭。
这个超时不是前端做出来的假效果,而是由后端判断并写入 Redis。买家和商家重新进入页面时,看到的状态和消息都是一致的。
3分钟主要是为了当前开发和演示方便。正式使用时,更合适的做法是把超时时间改成配置项,例如15分钟或30分钟,并在结束前增加一次提醒。
今天的收获
今天做的事情看起来都集中在客服页面,但实际上涉及了几个比较关键的问题:
- 多角色数据权限如何划分
- Agent 如何读取真实业务数据
- 前端如何在不刷新页面的情况下更新消息
- 工单状态如何避免重复流转
- 自动操作如何在后端留下真实记录
- 智能客服如何在回答能力和数据安全之间做限制
这次调整之后,客服模块不再只是一个聊天框,而是开始具备真实的订单查询、角色隔离、人工接待、消息同步和工单闭环能力。
下一步准备继续补充物流、售后、优惠券等业务查询,同时完善客服会话的评价、转人工、超时提醒和异常重连。这样客服模块才能真正覆盖商城里的常见问题,而不是只回答几条提前写好的演示内容。




