IM 系统定位与发展规划
本文档基于 FreeKit.IM 项目当前实现,对标飞书(Feishu)即时通讯(IM)功能,梳理已实现、缺失及待实现的特性,并给出实现优先级与路线图。
1. 功能对比概览
| 功能模块 | 飞书 (Feishu) 支持 | FreeKit.IM 当前实现 | 差距描述 |
|---|---|---|---|
| 实时消息 | ✅ 文本、图片、文件、视频、音频、表情、富文本、卡片等 | ✅ 文本、图片(待 UI)、文件(待实现) | 缺少富文本、卡片、音视频等多媒体支持 |
| 消息回复 (Thread) | ✅ 支持回复、子回复、聚合展示 | ✅ 基础 ParentId 支持 | 缺少聚合查询接口、子回复 UI |
| 消息表情回应 (Reactions) | ✅ Emoji 表情回应、删除 | ✅ 已实现后端 API 与实体 | 前端 UI 待实现 |
| 消息撤回 | ✅ 2 分钟内撤回 | ✅ 已实现 | ✅ |
| 已读回执 | ✅ 私聊已读、群聊已读列表 | ✅ 已实现 | ✅ |
| 消息搜索 | ✅ 多维度关键字搜索 | ✅ 已实现 | ✅ |
| 离线消息 | ✅ 拉取、确认、统计 | ✅ 已实现 | ✅ |
| 群组管理 | ✅ 创建、成员管理、公告、禁言、全员禁言、群昵称、免打扰、搜索成员 | ✅ 已实现大部分功能 | 缺少群公告 UI |
| 群公告 | ✅ 发布、更新、置顶、删除 | ✅ 已实现后端 API | 前端 UI 待实现 |
| 好友管理 | ✅ 添加、删除、备注、分组、拉黑、状态检查 | ✅ 已实现 | ✅ |
| 文件/图片上传 | ✅ 支持上传并在消息中引用 | ❌ 未实现 | 需要文件存储服务与前端上传组件 |
| 消息表情 (Emoji) 发送 | ✅ 支持发送 Emoji 消息 | ❌ 未实现 | 需要前端 UI 与后端 API(已实现 Reactions) |
| 消息置顶 (Pin) | ✅ 置顶重要消息 | ❌ 未实现 | 需要 PinnedMessage 实体与 API |
| 富文本 (Post) | ✅ 支持标题、图片、段落混排 | ❌ 未实现 | 需要 MsgType.Post 结构与渲染逻辑 |
| 加急/Buzz | ✅ 加急提醒、优先展示 | ❌ 未实现 | 需要标记字段与推送机制 |
| 安全机制 | ✅ JWT、权限校验、加密传输 | ✅ 已实现主要安全检查 | ✅ |
2. 已完成的关键里程碑
- 消息发送/接收、历史、撤回、已读 ✅
- 群组 CRUD、成员管理、禁言、免打扰 ✅
- 好友管理、黑名单、在线状态 ✅
- 离线消息处理 ✅
- 消息表情回应 (Reactions) 后端 ✅ (2025‑11‑29)
3. 待实现的核心功能(按优先级)
| 优先级 | 功能 | 说明 | 预计实现工作量 |
|---|---|---|---|
| P0 | 文件/图片上传 | 提供统一文件服务、前端上传组件、消息引用 | 中等(后端存储 + 前端 UI) |
| P0 | 消息表情 (Emoji) 发送 | 前端表情面板、调用 Reactions API | 低(UI + 调用) |
| P1 | 消息置顶 (Pin) | PinnedMessage 实体、API、前端标记 | 中等 |
| P1 | 富文本 (Post) | 定义 JSON 结构、解析渲染、编辑器 | 高(涉及编辑器) |
| P2 | 加急/Buzz | 消息标记字段、推送优先级、UI 高亮 | 中等 |
| P2 | 群公告 UI | 前端展示、编辑、置顶功能 | 低 |
| P3 | 多媒体消息 (音视频) | 文件存储、播放组件、API 扩展 | 高 |
4. 实现路线图 (Next 3 Months)
| 时间 | 里程碑 |
|---|---|
| 第 1 周 | 完成文件/图片上传后端接口 (/api/im/files) 并集成到前端上传组件 |
| 第 2‑3 周 | 实现 Emoji 表情发送 UI,调用 ChatMessageReactionController,完成前端交互 |
| 第 4‑5 周 | 设计并实现 PinnedMessage 实体、对应 API (/api/im/chat-messages/{id}/pin) |
| 第 6‑8 周 | 定义 MsgType.Post JSON schema,后端解析并提供渲染数据;前端实现富文本编辑器(可使用开源编辑器) |
| 第 9‑10 周 | 加急/Buzz 标记字段与推送逻辑,实现 UI 高亮与提醒 |
| 第 11‑12 周 | 完善群公告 UI,支持置顶、编辑、删除;进行整体功能回归测试 |
5. 风险与依赖
- 文件存储:需要可靠的对象存储(如 OSS、MinIO),当前项目暂无集成。
- 前端编辑器:富文本实现依赖第三方编辑器,需评估兼容性与样式统一。
- 实时推送:消息置顶、加急等需要在 WebSocket 推送层做额外标记,需在
ImHelper中扩展。
6. 结论
FreeKit.IM 已实现核心即时通讯功能,距离飞书的完整特性还有若干关键点。通过上述路线图的分阶段实现,预计在 3 个月 内可以覆盖大部分高价值功能(文件上传、表情发送、消息置顶、富文本),为后续的高级特性(加急、音视频)奠定基础。
文档最后更新: 2025‑11‑29