# V-IM-PC Pro 项目介绍
## 项目概览
V-IM Pro 是一款基于 Electron + Vue3 + TypeScript 构建的跨平台即时通讯桌面应用,可通过 `yarn dev` 以桌面模式运行,也支持 `yarn build` 纯 Web 模式。项目采用主进程、预加载层与渲染进程的分层架构,结合 Pinia 状态管理与 Element Plus 组件库,为企业/团队提供从实时消息、音视频沟通到文件协同的完整体验。
核心目标是提供稳定、安全、易扩展的 IM 能力,配合插件化机制与多端适配,快速响应业务定制需求。
## 面向场景
- **企业内部沟通**:支持单聊、群聊、部门组织架构,覆盖办公协同常见需求。
- **远程/混合办公**:内置音视频通话、会议、屏幕截图等桌面能力,提升远程协作效率。
- **文件协同与知识沉淀**:云盘、聊天文件中心、收藏夹等模块帮助团队沉淀资料。
- **平台生态扩展**:插件体系提供 OAuth2 应用中心、邮件中心、信息收集接龙等扩展,便于形成统一入口。
## 核心功能
### 即时通讯能力
- **会话中心**:`src/renderer/src/views/chat/ChatBox.vue` 提供持续的单聊/群聊窗口,支持消息历史抽屉、未读定位、引用、多选转发、消息已读状态等细粒度体验。
- **富媒体消息**:聊天输入区内置表情(`VimFaces`)、截图上传、图片/文件/视频发送,支持语音消息 `MessageVoice.vue` 和转发消息展示。
- **通知提醒**:`NotificationService.ts` 结合免打扰列表、@提醒、声音提示,保障关键消息可视化。
- **实时通信内核**:`WsApi.ts` 管理心跳、断线重连、批量 ACK,配合 `MessageBuilder` 和 Store 服务类确保状态一致。
### 联系人与组织
- **好友管理**:`views/friend/Index.vue` 提供搜索、好友请求审核、右键快捷操作等。
- **群组管理**:`views/group/Index.vue` 支持新建群、邀请、群信息查看,未审核入群请求在左侧实时提示。
- **组织架构**:`views/dept/Index.vue` 加载树形部门数据,便于快速定位成员。
### 文件与内容沉淀
- **收藏中心**:`views/collect/Index.vue` 分类管理文本、图片、文件、语音、转发消息,可直接预览或下载。
- **聊天文件中心**:`plugins/files/views/Index.vue` 按好友、群组、文件类型聚合历史文件,并支持分页搜索。
- **云盘**:`plugins/cloud-disk` 模块提供个人/团队双工作区,覆盖上传、文件夹管理、容量进度、批量删除、下载与分享等操作。
### 音视频与会议
- **音视频通话**:`plugins/user-video` 利用 LiveKit 进行点对点语音/视频,支持状态同步、忙线处理、房间事件监听。
- **视频会议**:`plugins/meeting/views/Index.vue` 提供多方会议界面,操控远端/本地媒体、屏幕共享、参会者邀请等功能,桌面模式下通过 IPC 与主进程协同。
- **屏幕截取**:`plugins/screen-capture` 使用 Electron 截图能力(快捷键 `Ctrl+B`),并结合统一上传流程插入聊天。
### 插件生态亮点
- **自动注册机制**:`plugins/index.ts` 使用 `import.meta.glob` 自动收集插件导出的视图/消息监听器,`router/index.ts` 动态合并插件路由,实现开箱即用。
- **扩展插件**:
- 云盘入口(`cloud-disk`)与应用中心(`oauth2`)在 `Home` 侧边栏动态渲染。
- 邮件中心 `plugins/vmail` 集成收件箱、发件箱、草稿箱,支持附件预览与批量删除。
- 接龙插件 `plugins/solitaire` 通过消息扩展实现群内信息收集。
- 会议、音视频、截图等插件均在聊天工具栏按需显示,实现按会话类型/系统配置动态控制。
### 系统设置与个性化
- **主题与配色**:`ThemeUtils.ts` 管理亮/暗/跟随系统三种模式,支持自定义色板,`views/sys/theme/Index.vue` 提供可视化配置,并同步 Element Plus 变量。
- **个人与安全配置**:`views/sys/setting/Index.vue` 支持好友验证、私聊开关、声音提醒等;`views/sys/pwd`、`views/sys/info` 提供密码更新与缓存清理。
- **多端窗口控制**:`useWindowControl.ts` 与 `useWebControl.ts` 抽象统一窗口 API,通过 `windowControl` 注入到各组件,在 Electron/Web 两种模式下复用业务层代码。
## 技术架构亮点
### 三层结构
- **主进程 (`src/main`)**:`WindowManager` 负责窗口生命周期,`SystemTrayManager` 管理托盘闪烁与菜单,`FileDownloadService`/`FileOperationService` 处理文件读取、校验与下载进度上报,`PluginManager` 负责加载插件的 Electron 端模块。
- **预加载层 (`src/preload/index.ts`)**:通过 `contextBridge` 暴露受控 API,保障渲染进程安全访问 IPC。
- **渲染层 (`src/renderer`)**:Vue 3 + Pinia + Vue Router 构建 SPA,结合 Element Plus、Less 样式与自定义图标,实现桌面端体验。
### 状态与业务抽象
- **Store 服务化**:`store/services` 中的 `MessageService`、`UnreadMessageService`、`ChatRoomService` 等封装复杂逻辑,提升模块内聚性。
- **持久化策略**:Pinia 使用 `pinia-plugin-persist` 细粒度缓存用户信息、聊天未读、系统配置等关键状态。
- **配置中心**:`SysConfigApi` 拉取后端配置,控制部门显示、音视频开关、上传限制等,相关插件通过 `useSysConfigStore` 实时判断。
### 构建与发布
- 开发阶段使用 Electron-Vite,支持桌面与 Web 双模式。
- `yarn build:win|mac|linux` 结合 `electron-builder.yml` 生成多平台发行包。
- 资源目录区分运行时资源 (`resources/`)、构建图标 (`build/`)、输出目录 (`dist/`/`out/`),保证打包流程清晰。
## 体验亮点总结
- **桌面级体验**:无边框窗口、托盘闪烁、通知中心、快捷键截图,贴合桌面办公场景。
- **实时可靠**:WebSocket 心跳、批量 ACK、免打扰与提醒策略结合,确保消息送达与提示可控。
- **强扩展性**:插件自动发现、路由/Store/视图统一装配,支持业务快速叠加。
- **协同一体化**:即聊即用的文件中心、云盘、邮件、会议与音视频,实现团队沟通与协作闭环。
- **多端适配**:统一窗口控制抽象让 Web 模式保持一致逻辑,降低多端维护成本。
通过上述架构与功能,V-IM Pro 已具备作为企业即时通讯基础平台的核心要素,并预留了丰富的二次扩展空间,可根据业务需求继续拓展插件、集成第三方服务或定制 UI/主题风格。