# IM **Repository Path**: merry1314/im ## Basic Information - **Project Name**: IM - **Description**: 基于 Go + Gin + WebSocket + Kafka + MySQL + Redis + Vue 3 的即时通讯系统,包含普通聊天端、后台管理端、AI 助手、版本化数据库迁移和运维健康检查。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-09-28 - **Last Updated**: 2026-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IM 即时通讯系统 基于 **Go + Gin + WebSocket + Kafka + MySQL + Redis + Vue 3** 的即时通讯系统,包含普通聊天端、后台管理端、AI 助手、版本化数据库迁移和运维健康检查。 ## 功能特性 - 普通用户:注册登录、个人资料、修改密码、好友申请、好友列表、单聊、群聊、群成员管理。 - 消息系统:WebSocket 长连接、Kafka 异步投递、`client_msg_id` 幂等、离线消息回放、多设备同步、发送失败重试。 - 群聊能力:建群、群公告、成员邀请/移除、群角色、群文件、群消息搜索和撤回。 - 文件上传:基础类型校验、鉴权访问 `/api/files/*path`、群文件统一管理、过期未引用文件清理命令。 - 后台管理:后台登录、用户管理、群组管理、消息审计、RBAC 角色权限、管理员操作日志。 - AI 助手:系统用户 `AI助手`、单聊直接触发、群聊 `@AI助手` 触发、OpenAI-Compatible 供应商配置、流式输出。 - 运维能力:版本化 SQL migration、启动自检、后台健康检查页、MySQL/Redis/Kafka/AI 可用性告警、邮箱通知。 ## 技术栈 - 后端:Go 1.24、Gin、GORM、Gorilla WebSocket、Kafka Go、Redis、Zap。 - 前端:Vue 3、Vite、Pinia、Axios。 - 基础设施:MySQL 8、Redis 7、Kafka 3、Docker Compose。 ## 目录结构 ```text IM/ ├── new/ # Go 后端 │ ├── cmd/api # API 服务入口 │ ├── cmd/migrate # SQL 迁移执行命令 │ ├── cmd/cleanup_uploads # 上传文件清理命令 │ ├── config # 配置文件 │ ├── internal # handler/service/repository/model/middleware/router │ ├── migrations # 版本化数据库迁移 │ ├── pkg # cache/mq/ws/logger/utils │ └── DEPLOYMENT.md # 部署说明 ├── frontend/ # Vue 前端 │ ├── src/views # 登录、聊天、后台页面 │ ├── src/components # 聊天和后台组件 │ ├── src/api # API 封装 │ └── src/store # Pinia 状态 ├── docker-compose.yml # 本地依赖服务 └── README.md ``` ## 本地启动 启动依赖服务: ```bash docker compose up -d mysql redis kafka ``` 执行数据库迁移: ```bash cd new go run ./cmd/migrate ``` 启动后端: ```bash cd new go run ./cmd/api ``` 启动前端: ```bash cd frontend npm install npm run dev ``` 默认地址: - 前端:http://localhost:5173 - 后端:http://localhost:8080 - 后台入口:`/admin/login` 默认后台管理员: - 用户名:`admin` - 密码:`admin123456` ## 生产部署要点 生产环境建议先阅读 [new/DEPLOYMENT.md](new/DEPLOYMENT.md)。 - 生产关闭 `server.auto_migrate`,上线前执行 `go run ./cmd/migrate`。 - 修改 JWT secret、默认管理员密码、MySQL/Redis/Kafka 地址。 - 前端构建后用 Nginx 托管,并代理 `/api` 和 `/ws` 到后端。 - 上传文件目录默认是 `new/uploads`,可定期执行 `cmd/cleanup_uploads` 清理未引用文件。 ## 后台运维 后台包含以下管理模块: - 用户管理:新增、编辑、删除、重置密码、禁用用户。 - 群组管理:查看群主、成员数、消息数、文件数。 - 消息审计:检索单聊/群聊消息,支持软删除。 - RBAC 权限:管理员、角色、权限点管理。 - AI 管理:供应商配置、启用模型、测试连接、系统提示词。 - 操作日志:记录删除消息、用户管理、AI 配置等管理员动作。 - 健康检查:查看 MySQL、Redis、Kafka、AI 供应商状态和后台告警,支持 SMTP 邮箱通知和恢复通知。 ## 常用命令 后端测试: ```bash cd new go test ./... ``` 前端构建: ```bash cd frontend npm run build ``` 清理上传文件: ```bash cd new go run ./cmd/cleanup_uploads -days=30 -dry-run=true go run ./cmd/cleanup_uploads -days=30 -dry-run=false ``` ## 简历亮点 - 使用 WebSocket + Kafka 实现 IM 消息异步投递和多端同步。 - 使用 `client_msg_id` 做消息幂等,支持失败重试和离线消息回放。 - 后台实现 RBAC、操作日志、消息审计、用户管理等管理闭环。 - 接入 OpenAI-Compatible AI 助手,支持单聊和群聊 @ 触发以及流式输出。 - 使用版本化 SQL migration 替代生产环境 AutoMigrate。 - 增加健康检查和后台告警,覆盖 MySQL、Redis、Kafka、AI 供应商。