/**
 * AppModule - student-bff 根模块.
 *
 * 仲裁依据:
 *   - coord-final-decisions §2 B1 (GraphQL Yoga + DataLoader)
 *   - coord-final-decisions §2 B8 (DownstreamClient 抽象复用)
 *   - coord-final-decisions §1 G8 (GlobalErrorFilter)
 *
 * 模块装配:
 *   - CacheModule (Global): Redis 缓存
 *   - DownstreamModule (Global): gRPC 下游客户端
 *   - CircuitBreakerModule (Global): opossum 熔断器 (P6)
 *   - HealthModule: /healthz + /readyz
 *   - StudentModule: GraphQL Yoga + Resolver
 *   - DataLoaderModule: DataLoader 工厂
 *   - EventModule: Kafka 事件订阅 + push-gateway 推送 (P5)
 */
import { Module } from "@nestjs/common";
import { CacheModule } from "./shared/cache/cache.module.js";
import { DownstreamModule } from "./shared/downstream/downstream.module.js";
import { HealthModule } from "./shared/health/health.module.js";
import { StudentModule } from "./student/student.module.js";
import { DataLoaderModule } from "./student/dataloaders/data-loader.module.js";
import { EventModule } from "./student/events/event.module.js";
import { CircuitBreakerModule } from "./shared/circuit-breaker/circuit-breaker.module.js";

@Module({
  imports: [
    CacheModule,
    DownstreamModule,
    CircuitBreakerModule,
    HealthModule,
    DataLoaderModule,
    StudentModule,
    EventModule,
  ],
})
export class AppModule {}
