import { Module } from '@nestjs/common';
import { PersonaController } from './persona.controller';
import { PersonaService } from './persona.service';
import { PersonaCoverageMonitorService } from './persona-coverage-monitor.service';
import { FeatureRegistry } from './features/feature.registry';
import { EntitlementStatusFeatureExtractor } from './features/entitlement-status.feature';
import { RfmFeatureExtractor } from './features/rfm.feature';
import { AgeBracketFeatureExtractor } from './features/age-bracket.feature';
import { GenderFeatureExtractor } from './features/gender.feature';
import { AcquisitionChannelFeatureExtractor } from './features/acquisition-channel.feature';
import { FamilyStructureFeatureExtractor } from './features/family-structure.feature';
import { ReferralChampionFeatureExtractor } from './features/referral-champion.feature';
import { LifecycleStageFeatureExtractor } from './features/lifecycle-stage.feature';
import { TreatmentHistoryFeatureExtractor } from './features/treatment-history.feature';
import { TimePreferenceFeatureExtractor } from './features/time-preference.feature';
import { DiscountAnchorFeatureExtractor } from './features/discount-anchor.feature';
import { SpecialAttentionFeatureExtractor } from './features/special-attention.feature';
import { TreatmentSensitivityFeatureExtractor } from './features/treatment-sensitivity.feature';
import { ContraindicationFeatureExtractor } from './features/contraindication.feature';
import { PotentialTreatmentFeatureExtractor } from './features/potential-treatment.feature';
import { UrgencyLevelFeatureExtractor } from './features/urgency-level.feature';
import { ClinicalGapModule } from '../clinical-gap/clinical-gap.module';

@Module({
  imports: [ClinicalGapModule],
  controllers: [PersonaController],
  providers: [
    PersonaService,
    PersonaCoverageMonitorService,
    FeatureRegistry,
    // W7:rfm 统一了旧 value/recall_risk/treatment_chain_status,三个旧 extractor 已摘除。
    RfmFeatureExtractor,
    AgeBracketFeatureExtractor,
    GenderFeatureExtractor,
    AcquisitionChannelFeatureExtractor,
    FamilyStructureFeatureExtractor,
    ReferralChampionFeatureExtractor,
    LifecycleStageFeatureExtractor,
    TreatmentHistoryFeatureExtractor,
    TimePreferenceFeatureExtractor,
    DiscountAnchorFeatureExtractor,
    SpecialAttentionFeatureExtractor,
    TreatmentSensitivityFeatureExtractor,
    ContraindicationFeatureExtractor,
    PotentialTreatmentFeatureExtractor,
    UrgencyLevelFeatureExtractor,
    EntitlementStatusFeatureExtractor,
  ],
  exports: [PersonaService],
})
export class PersonaModule {}
