Files
CKB-Touchkebao/TouchVueThree/CHAT_MIGRATION_PROGRESS.md

6.1 KiB
Raw Blame History

聊天页面迁移进度

第一阶段:基础架构(已完成)

1. 目录结构

  • 创建 stores/modules/wechat/ 目录
  • 创建 composables/business/wechat/ 目录
  • 创建 constants/ 目录
  • 创建 views/Chat/components/ 目录结构

2. 类型定义和常量

  • types/wechat.ts - 完整的TypeScript类型定义
    • 微信账号、联系人、会话、消息类型
    • AI配置、WebSocket配置
    • UI相关类型、API响应类型
  • constants/wechat.ts - 常量定义
    • 消息类型、AI类型、文件类型
    • WebSocket命令类型
    • 时间格式、分页参数
    • 防抖/节流时间、正则表达式

3. Pinia Store模块

  • useAccountStore - 微信账号管理
    • 账号列表、当前账号
    • 未读数统计、在线状态
  • useContactStore - 联系人管理
    • 好友列表、群聊列表
    • 联系人搜索、AI类型更新
  • useSessionStore - 会话列表管理
    • 会话列表、当前会话
    • 置顶、静音、未读数
  • useMessageStore - 消息管理
    • 消息列表、消息分组
    • 加载更多、撤回、转发
  • useAIStore - AI功能管理
    • AI配置、生成回复
    • 请求队列、数据处理
  • useUIStore - UI状态管理
    • 侧边栏标签、模态框
    • 消息选择、加载状态

4. API模块

  • api/modules/wechat.ts - 微信相关API
    • 账号、联系人、会话、消息
    • 文件上传、语音转文字
  • api/modules/ai.ts - AI相关API
    • AI聊天、数据处理
    • 配置管理、模型训练

5. 核心Composables

  • useWebSocket - WebSocket连接管理
    • 连接/断开、心跳、重连
    • 消息发送/接收、事件处理
  • useMessageSubscription - 消息订阅管理
    • 事件总线、消息订阅
    • 自动更新Store
  • useAIRequestQueue - AI请求队列
    • 防抖处理、队列管理
    • 批量处理消息
  • useMessageParser - 消息解析
    • 类型判断、内容解析
    • 预览文本生成

6. 基础组件

  • views/Chat/index.vue - 主聊天页面
  • views/Chat/components/EmptyState.vue - 空状态
  • views/Chat/components/AccountList/index.vue - 账号列表
  • views/Chat/components/SidebarMenu/index.vue - 侧边栏
  • views/Chat/components/SidebarMenu/SessionList/index.vue - 会话列表
  • views/Chat/components/SidebarMenu/ContactList/index.vue - 联系人列表
  • views/Chat/components/ChatWindow/index.vue - 聊天窗口(占位)

📋 第二阶段:核心功能(待开发)

1. 消息列表组件 🔄

  • MessageList/index.vue - 消息列表容器
  • MessageList/MessageItem.vue - 消息项
  • 消息类型组件:
    • TextMessage.vue - 文本消息
    • ImageMessage.vue - 图片消息
    • VideoMessage.vue - 视频消息
    • AudioMessage.vue - 语音消息
    • FileMessage.vue - 文件消息
    • LocationMessage.vue - 位置消息
    • SystemMessage.vue - 系统消息

2. 消息输入组件 🔄

  • MessageInput/index.vue - 输入容器
  • MessageInput/Toolbar.vue - 工具栏
  • MessageInput/components/EmojiPicker.vue - 表情选择器
  • MessageInput/components/FileUploader.vue - 文件上传
  • MessageInput/components/AudioRecorder.vue - 语音录制

3. 资料卡组件 🔄

  • ProfileCard/index.vue - 资料卡容器
  • ProfileCard/components/BasicInfo.vue - 基本信息
  • ProfileCard/components/QuickWords.vue - 快捷话术
  • ProfileCard/components/Moments.vue - 朋友圈

4. 虚拟滚动优化 🔄

  • 集成 @vueuse/core 的虚拟滚动
  • 消息高度计算和缓存
  • 滚动位置管理

📋 第三阶段:高级功能(待开发)

1. AI功能集成 🔄

  • AI模式切换UI
  • AI生成回复显示
  • 手动触发AI
  • AI配置管理

2. 文件处理 🔄

  • 图片预览
  • 视频播放
  • 文件下载
  • 语音播放和转文字

3. 聊天记录搜索 🔄

  • 搜索UI
  • 关键词高亮
  • 搜索结果定位

4. 其他功能 🔄

  • 消息转发
  • 消息撤回
  • 跟进提醒
  • 待办事项
  • 朋友圈功能

📋 第四阶段:优化和测试(待开发)

1. 性能优化 🔄

  • 组件懒加载
  • 虚拟滚动优化
  • 图片懒加载
  • 防抖节流优化

2. 错误处理 🔄

  • 网络错误处理
  • WebSocket断线重连
  • 文件上传失败重试
  • 友好的错误提示

3. 测试 🔄

  • 单元测试
  • 组件测试
  • E2E测试

📊 整体进度

  • 第一阶段(基础架构): 100% 完成
  • 第二阶段(核心功能): 0% 完成
  • 第三阶段(高级功能): 0% 完成
  • 第四阶段(优化测试): 0% 完成

总体进度: 25% (1/4 阶段完成)


🎯 下一步计划

  1. 实现消息列表组件(虚拟滚动)
  2. 实现消息输入组件
  3. 实现各种消息类型组件
  4. 集成WebSocket实时通信
  5. 实现AI功能

📝 技术亮点

已实现

  1. 模块化Store设计 - 6个独立的Pinia Store职责清晰
  2. Composable复用 - 独立的WebSocket、消息订阅、AI队列管理
  3. 完整的类型定义 - TypeScript类型安全
  4. 常量管理 - 统一的常量定义,消除魔法数字
  5. 事件总线 - 基于mitt的消息订阅系统
  6. 防抖节流 - lodash-es的防抖处理

待实现

  • 虚拟滚动优化
  • 图片懒加载
  • WebSocket心跳和断线重连
  • AI请求队列和防抖
  • 消息批量处理

🔧 开发环境

  • Vue: 3.5.26
  • Pinia: 2.3.1
  • Element Plus: 2.13.1
  • TypeScript: 5.4.5
  • Vite: 5.1.4
  • @vueuse/core: 10.11.1
  • axios: 1.13.2
  • dayjs: 1.11.19
  • lodash-es: 4.17.21
  • mitt: 3.0.1
  • nanoid: 5.0.4

📚 参考文档