/**
 * 聊天业务模块
 *
 * 功能描述：
 * - 整合聊天相关的业务逻辑服务
 * - 提供会话管理、消息过滤、清理等功能
 * - 通过 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 {}
