bot-conversation-order.md 1.9 KB

Bot 模式会话列表排序

Web、桌面、iOS、Android 共用以下规则:

  1. pinned 为 true 的会话优先。
  2. 同一置顶分组内,按 lastMessageAt 倒序;缺失时使用 createdAt,数值 0 不算缺失。
  3. 时间相同按会话 ID 升序。服务端 UUID 使用确定性的字符顺序,不使用用户界面语言相关排序。

列表时间也取相同的会话时间,不使用配置修改时间 updatedAt,也不使用本机当前选择的群聊任务时间。任务选择与文字预览仍可保留本地状态。

执行位置

  • 服务端常规列表与首次/重连快照复用 compareWorkspaceConversations。
  • Web 与桌面共享 WorkspaceTranscriptStore,每次替换会话数组均排序;页面读取排序后的数组。
  • iOS 在快照、刷新、会话增量事件三处执行 WebWorkspaceConversation.precedes。
  • Android 在快照、刷新、会话增量事件三处执行 workspaceConversationOrder。
  • 三端刷新期间若游标已因新事件推进,丢弃旧列表响应,避免回退刚同步的置顶或时间。
  • 同步范围仍由服务端与账号决定;本次不修改账号隔离、置顶持久化或事件协议。

验证

  • Web:40 项相关测试通过;服务端测试同时检查列表接口、快照接口和两个独立状态仓库接收置顶/新消息事件后的顺序。客户端覆盖反向初始数组、时间并列、空会话、时间为 0、置顶/取消置顶、新会话与重复事件。
  • iOS:51 项 WorkspaceChatTests 通过,覆盖快照与刷新一致、增量重排、新会话、旧任务时间不影响列表、旧刷新响应不能覆盖新置顶事件。
  • Android:51 项 core:model 测试通过,包含同一组跨端排序数据;app Debug Kotlin 编译通过。
  • Web 生产构建通过。以上为代码、隔离用例和构建验证,未修改线上会话,未发布新版本或安装到真实设备。