118 lines
5.4 KiB
TypeScript
118 lines
5.4 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { JwtStrategy } from './infrastructure/strategies/jwt.strategy';
|
|
|
|
// ─── Domain Entities ───
|
|
import { AmlAlert } from './domain/entities/aml-alert.entity';
|
|
import { OfacScreening } from './domain/entities/ofac-screening.entity';
|
|
import { TravelRuleRecord } from './domain/entities/travel-rule-record.entity';
|
|
import { SarReport } from './domain/entities/sar-report.entity';
|
|
import { Dispute } from './domain/entities/dispute.entity';
|
|
import { AuditLog } from './domain/entities/audit-log.entity';
|
|
import { InsuranceClaim } from './domain/entities/insurance-claim.entity';
|
|
|
|
// ─── Domain Repository Interfaces (Symbols) ───
|
|
import { AML_ALERT_REPOSITORY } from './domain/repositories/aml-alert.repository.interface';
|
|
import { OFAC_SCREENING_REPOSITORY } from './domain/repositories/ofac-screening.repository.interface';
|
|
import { SAR_REPORT_REPOSITORY } from './domain/repositories/sar-report.repository.interface';
|
|
import { TRAVEL_RULE_REPOSITORY } from './domain/repositories/travel-rule.repository.interface';
|
|
import { DISPUTE_REPOSITORY } from './domain/repositories/dispute.repository.interface';
|
|
import { INSURANCE_CLAIM_REPOSITORY } from './domain/repositories/insurance-claim.repository.interface';
|
|
import { AUDIT_LOG_REPOSITORY } from './domain/repositories/audit-log.repository.interface';
|
|
|
|
// ─── Infrastructure Persistence (Concrete Implementations) ───
|
|
import { AmlAlertRepository } from './infrastructure/persistence/aml-alert.repository';
|
|
import { OfacScreeningRepository } from './infrastructure/persistence/ofac-screening.repository';
|
|
import { SarReportRepository } from './infrastructure/persistence/sar-report.repository';
|
|
import { TravelRuleRepository } from './infrastructure/persistence/travel-rule.repository';
|
|
import { DisputeRepository } from './infrastructure/persistence/dispute.repository';
|
|
import { InsuranceClaimRepository } from './infrastructure/persistence/insurance-claim.repository';
|
|
import { AuditLogRepository } from './infrastructure/persistence/audit-log.repository';
|
|
|
|
// ─── Domain Ports ───
|
|
import { AUDIT_LOGGER_SERVICE } from './domain/ports/audit-logger.interface';
|
|
|
|
// ─── Infrastructure Services ───
|
|
import { AuditLoggerService } from './infrastructure/services/audit-logger.service';
|
|
|
|
// ─── Application Services ───
|
|
import { AmlService } from './application/services/aml.service';
|
|
import { OfacService } from './application/services/ofac.service';
|
|
import { TravelRuleService } from './application/services/travel-rule.service';
|
|
import { SarService } from './application/services/sar.service';
|
|
import { AdminRiskService } from './application/services/admin-risk.service';
|
|
import { AdminComplianceService } from './application/services/admin-compliance.service';
|
|
import { AdminDisputeService } from './application/services/admin-dispute.service';
|
|
import { AdminInsuranceService } from './application/services/admin-insurance.service';
|
|
|
|
// ─── Interface Controllers ───
|
|
import { ComplianceController } from './interface/http/controllers/compliance.controller';
|
|
import { AdminRiskController } from './interface/http/controllers/admin-risk.controller';
|
|
import { AdminComplianceController } from './interface/http/controllers/admin-compliance.controller';
|
|
import { AdminDisputeController } from './interface/http/controllers/admin-dispute.controller';
|
|
import { AdminInsuranceController } from './interface/http/controllers/admin-insurance.controller';
|
|
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([
|
|
AmlAlert,
|
|
OfacScreening,
|
|
TravelRuleRecord,
|
|
SarReport,
|
|
Dispute,
|
|
AuditLog,
|
|
InsuranceClaim,
|
|
]),
|
|
PassportModule.register({ defaultStrategy: 'jwt' }),
|
|
JwtModule.register({ secret: process.env.JWT_ACCESS_SECRET || 'dev-access-secret' }),
|
|
],
|
|
controllers: [
|
|
ComplianceController,
|
|
AdminRiskController,
|
|
AdminComplianceController,
|
|
AdminDisputeController,
|
|
AdminInsuranceController,
|
|
],
|
|
providers: [
|
|
JwtStrategy,
|
|
// ─── Repository DI bindings (interface → implementation) ───
|
|
{ provide: AML_ALERT_REPOSITORY, useClass: AmlAlertRepository },
|
|
{ provide: OFAC_SCREENING_REPOSITORY, useClass: OfacScreeningRepository },
|
|
{ provide: SAR_REPORT_REPOSITORY, useClass: SarReportRepository },
|
|
{ provide: TRAVEL_RULE_REPOSITORY, useClass: TravelRuleRepository },
|
|
{ provide: DISPUTE_REPOSITORY, useClass: DisputeRepository },
|
|
{ provide: INSURANCE_CLAIM_REPOSITORY, useClass: InsuranceClaimRepository },
|
|
{ provide: AUDIT_LOG_REPOSITORY, useClass: AuditLogRepository },
|
|
|
|
// ─── Infrastructure services ───
|
|
{ provide: AUDIT_LOGGER_SERVICE, useClass: AuditLoggerService },
|
|
|
|
// ─── Application services ───
|
|
AmlService,
|
|
OfacService,
|
|
TravelRuleService,
|
|
SarService,
|
|
AdminRiskService,
|
|
AdminComplianceService,
|
|
AdminDisputeService,
|
|
AdminInsuranceService,
|
|
],
|
|
exports: [
|
|
// Export application services for potential use by other modules
|
|
AmlService,
|
|
OfacService,
|
|
TravelRuleService,
|
|
SarService,
|
|
AdminRiskService,
|
|
AdminComplianceService,
|
|
AdminDisputeService,
|
|
AdminInsuranceService,
|
|
|
|
// Export infrastructure service symbols for DI in other modules
|
|
AUDIT_LOGGER_SERVICE,
|
|
],
|
|
})
|
|
export class ComplianceModule {}
|