Initial WhaleTown V2 backend

This commit is contained in:
2026-07-20 02:00:52 +08:00
commit c995891c1f
265 changed files with 75689 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
/**
* 聊天业务模块
*
* 功能描述:
* - 整合聊天相关的业务逻辑服务
* - 提供会话管理、消息过滤、清理等功能
* - 通过 SESSION_QUERY_SERVICE 接口向其他模块提供会话查询能力
*
* 架构层级Business Layer业务层
*
* 依赖关系:
* - 依赖 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.2.0
* @since 2026-01-14
* @lastModified 2026-01-15
*/
import { Module } from '@nestjs/common';
import { ChatService } from './chat.service';
import { ChatSessionService } from './services/chat_session.service';
import { ChatFilterService } from './services/chat_filter.service';
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';
import { AuthModule } from '../auth/auth.module';
@Module({
imports: [
// Zulip核心服务模块
ZulipCoreModule,
// Redis缓存模块
RedisModule,
// 登录核心模块
LoginCoreModule,
// Zulip账号数据库模块
ZulipAccountsModule.forRoot(),
// 账号资料服务:用于初始化在线 presence 外观
AuthModule,
],
providers: [
// 主聊天服务
ChatService,
// 会话管理服务
ChatSessionService,
// 消息过滤服务
ChatFilterService,
// 会话清理服务
ChatCleanupService,
// 会话查询接口(供其他模块依赖)
{
provide: SESSION_QUERY_SERVICE,
useExisting: ChatSessionService,
},
],
exports: [
ChatService,
ChatSessionService,
ChatFilterService,
ChatCleanupService,
// 导出会话查询接口
SESSION_QUERY_SERVICE,
],
})
export class ChatModule {}