251126:1700 1.4.4
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// File: src/app.module.ts
|
||||
// บันทึกการแก้ไข: เพิ่ม CacheModule (Redis), Config สำหรับ Idempotency และ Maintenance Mode (T1.1)
|
||||
// บันทึกการแก้ไข: เพิ่ม MonitoringModule และ WinstonModule (T6.3)
|
||||
// เพิ่ม MasterModule
|
||||
|
||||
import { Module } from '@nestjs/common';
|
||||
import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
|
||||
@@ -9,26 +10,28 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { BullModule } from '@nestjs/bullmq';
|
||||
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
|
||||
import { CacheModule } from '@nestjs/cache-manager';
|
||||
import { WinstonModule } from 'nest-winston'; // ✅ Import WinstonModule
|
||||
import { WinstonModule } from 'nest-winston';
|
||||
import { redisStore } from 'cache-manager-redis-yet';
|
||||
import { RedisModule } from '@nestjs-modules/ioredis';
|
||||
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { envValidationSchema } from './common/config/env.validation.js';
|
||||
import redisConfig from './common/config/redis.config';
|
||||
import { winstonConfig } from './modules/monitoring/logger/winston.config'; // ✅ Import Config
|
||||
import { winstonConfig } from './modules/monitoring/logger/winston.config';
|
||||
|
||||
// Entities & Interceptors
|
||||
import { AuditLog } from './common/entities/audit-log.entity';
|
||||
import { AuditLogInterceptor } from './common/interceptors/audit-log.interceptor';
|
||||
import { MaintenanceModeGuard } from './common/guards/maintenance-mode.guard';
|
||||
// import { IdempotencyInterceptor } from './common/interceptors/idempotency.interceptor';
|
||||
|
||||
// Modules
|
||||
import { AuthModule } from './common/auth/auth.module.js';
|
||||
import { UserModule } from './modules/user/user.module';
|
||||
import { ProjectModule } from './modules/project/project.module';
|
||||
import { MasterModule } from './modules/master/master.module'; // [NEW] ✅ เพิ่ม MasterModule
|
||||
import { FileStorageModule } from './common/file-storage/file-storage.module.js';
|
||||
import { DocumentNumberingModule } from './modules/document-numbering/document-numbering.module';
|
||||
import { AuthModule } from './common/auth/auth.module.js';
|
||||
import { JsonSchemaModule } from './modules/json-schema/json-schema.module.js';
|
||||
import { WorkflowEngineModule } from './modules/workflow-engine/workflow-engine.module';
|
||||
import { CorrespondenceModule } from './modules/correspondence/correspondence.module';
|
||||
@@ -37,12 +40,10 @@ import { DrawingModule } from './modules/drawing/drawing.module';
|
||||
import { TransmittalModule } from './modules/transmittal/transmittal.module';
|
||||
import { CirculationModule } from './modules/circulation/circulation.module';
|
||||
import { NotificationModule } from './modules/notification/notification.module';
|
||||
// ✅ Import Monitoring Module
|
||||
import { MonitoringModule } from './modules/monitoring/monitoring.module';
|
||||
import { ResilienceModule } from './common/resilience/resilience.module'; // ✅ Import
|
||||
// ... imports
|
||||
import { SearchModule } from './modules/search/search.module'; // ✅ Import
|
||||
import { RedisModule } from '@nestjs-modules/ioredis'; // [NEW]
|
||||
import { ResilienceModule } from './common/resilience/resilience.module';
|
||||
import { SearchModule } from './modules/search/search.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
// 1. Setup Config Module พร้อม Validation
|
||||
@@ -80,7 +81,7 @@ import { RedisModule } from '@nestjs-modules/ioredis'; // [NEW]
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
|
||||
// 📝 Setup Winston Logger (Structured Logging) [Req 6.10]
|
||||
// 📝 Setup Winston Logger
|
||||
WinstonModule.forRoot(winstonConfig),
|
||||
|
||||
// 2. Setup TypeORM (MariaDB)
|
||||
@@ -114,7 +115,8 @@ import { RedisModule } from '@nestjs-modules/ioredis'; // [NEW]
|
||||
},
|
||||
}),
|
||||
}),
|
||||
// [NEW] Setup Redis Module (สำหรับ InjectRedis)
|
||||
|
||||
// Setup Redis Module (for InjectRedis)
|
||||
RedisModule.forRootAsync({
|
||||
imports: [ConfigModule],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
@@ -126,25 +128,27 @@ import { RedisModule } from '@nestjs-modules/ioredis'; // [NEW]
|
||||
}),
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
// 📊 Register Monitoring Module (Health & Metrics) [Req 6.10]
|
||||
MonitoringModule,
|
||||
|
||||
// Feature Modules
|
||||
// 📊 Monitoring & Resilience
|
||||
MonitoringModule,
|
||||
ResilienceModule,
|
||||
|
||||
// 📦 Feature Modules
|
||||
AuthModule,
|
||||
UserModule,
|
||||
ProjectModule,
|
||||
MasterModule, // ✅ [NEW] Register MasterModule here
|
||||
FileStorageModule,
|
||||
DocumentNumberingModule,
|
||||
JsonSchemaModule,
|
||||
WorkflowEngineModule,
|
||||
CorrespondenceModule,
|
||||
RfaModule, // 👈 ต้องมี
|
||||
DrawingModule, // 👈 ต้องมี
|
||||
TransmittalModule, // 👈 ต้องมี
|
||||
CirculationModule, // 👈 ต้องมี
|
||||
SearchModule, // ✅ Register Module
|
||||
NotificationModule, // 👈 ต้องมี
|
||||
ResilienceModule, // ✅ Register Module
|
||||
RfaModule,
|
||||
DrawingModule,
|
||||
TransmittalModule,
|
||||
CirculationModule,
|
||||
SearchModule,
|
||||
NotificationModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [
|
||||
@@ -164,17 +168,6 @@ import { RedisModule } from '@nestjs-modules/ioredis'; // [NEW]
|
||||
provide: APP_INTERCEPTOR,
|
||||
useClass: AuditLogInterceptor,
|
||||
},
|
||||
// 🔄 4. Register Idempotency (ถ้าต้องการ Global)
|
||||
// {
|
||||
// provide: APP_INTERCEPTOR,
|
||||
// useClass: IdempotencyInterceptor,
|
||||
// },
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
/*วิธีใช้งาน
|
||||
เมื่อต้องการเปิด Maintenance Mode ให้ Admin (หรือคุณ) ยิงคำสั่งเข้า Redis หรือสร้าง API เพื่อ Set ค่า: SET system:maintenance_mode true (หรือ "true")
|
||||
|
||||
ระบบจะตอบกลับด้วย 503 Service Unavailable ทันที ยกเว้น Controller ที่คุณใส่ @BypassMaintenance() ไว้ครับ
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user