import { Module, Global } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { NotificationService } from './notification.service';
import { NotificationController } from './notification.controller';
import { EmailAdapter } from './adapters/email.adapter';
import { TemplateService } from './services/template.service';

/**
 * 通知引擎模块
 * 
 * 功能：
 * - 多渠道通知发送（邮件、Teams、短信等）
 * - 模板化管理
 * - 异步发送
 * - 失败重试
 * - 统计分析
 * 
 * 使用方式：
 * 
 * 1. 发送简单通知：
 * ```typescript
 * await notificationService.send({
 *   channel: 'EMAIL',
 *   to: 'user@example.com',
 *   subject: '测试',
 *   content: '<h1>Hello</h1>',
 * });
 * ```
 * 
 * 2. 使用模板：
 * ```typescript
 * await notificationService.send({
 *   channel: 'EMAIL',
 *   to: 'user@example.com',
 *   templateCode: 'APPROVAL_TASK_CREATED',
 *   variables: { userName: '张三', taskName: '审批' },
 * });
 * ```
 */
@Global()
@Module({
  imports: [ConfigModule],
  providers: [
    NotificationService,
    EmailAdapter,
    TemplateService,
  ],
  controllers: [NotificationController],
  exports: [NotificationService, EmailAdapter, TemplateService],
})
export class NotificationModule {}
