feat(chat): 实现登录时自动初始化Zulip客户端

范围: src/business/chat/
涉及文件:
- chat.module.ts
- chat.service.ts

主要功能:
- 添加ZulipAccountsModule依赖,支持查询用户Zulip账号
- 实现initializeZulipClientForUser方法,登录时自动初始化Zulip客户端
- 从数据库获取用户Zulip账号信息和API Key
- 优化会话创建流程,使用已创建的Zulip客户端队列ID
- 移除登出时的API Key删除逻辑,保持持久化
- 支持基于目标地图的消息发送(mapId参数)

技术改进:
- 分离Zulip客户端初始化逻辑,提高代码可维护性
- 添加完整的错误处理和日志记录
- 支持用户没有Zulip账号的场景(优雅降级)
This commit is contained in:
moyin
2026-01-19 18:29:53 +08:00
parent 1849415b11
commit cf1b37af78
2 changed files with 158 additions and 33 deletions

View File

@@ -12,17 +12,19 @@
* - 依赖 ZulipCoreModule核心层提供Zulip技术服务
* - 依赖 RedisModule核心层提供缓存服务
* - 依赖 LoginCoreModule核心层提供Token验证
* - 依赖 ZulipAccountsModule核心层提供Zulip账号数据访问
*
* 导出接口:
* - SESSION_QUERY_SERVICE: 会话查询接口(供其他 Business 模块使用)
*
* 最近修改:
* - 2026-01-15: 功能完善 - 添加ZulipAccountsModule依赖支持登录时初始化Zulip客户端 (修改者: AI)
* - 2026-01-14: 代码规范优化 - 完善文件头注释规范 (修改者: moyin)
*
* @author moyin
* @version 1.1.1
* @version 1.2.0
* @since 2026-01-14
* @lastModified 2026-01-14
* @lastModified 2026-01-15
*/
import { Module } from '@nestjs/common';
@@ -33,6 +35,7 @@ import { ChatCleanupService } from './services/chat_cleanup.service';
import { ZulipCoreModule } from '../../core/zulip_core/zulip_core.module';
import { RedisModule } from '../../core/redis/redis.module';
import { LoginCoreModule } from '../../core/login_core/login_core.module';
import { ZulipAccountsModule } from '../../core/db/zulip_accounts/zulip_accounts.module';
import { SESSION_QUERY_SERVICE } from '../../core/session_core/session_core.interfaces';
@Module({
@@ -43,6 +46,8 @@ import { SESSION_QUERY_SERVICE } from '../../core/session_core/session_core.inte
RedisModule,
// 登录核心模块
LoginCoreModule,
// Zulip账号数据库模块
ZulipAccountsModule.forRoot(),
],
providers: [
// 主聊天服务