FRE-4510: Implement feature flag checks for spam classification

- Create centralized feature flag management system (feature-flags.ts)
- Add 15 feature flags across SpamShield, VoicePrint, and Platform categories
- Update spamshield.config.ts to use checkFlag() for all flags
- Add feature flag checks to all spamshield.service.ts methods:
  * NumberReputationService.checkReputation()
  * NumberReputationService.checkMultiSource()
  * SMSClassifierService.classify()
  * CallAnalysisService.analyzeCall()
  * SpamFeedbackService.recordFeedback()
- Update index.ts exports to include feature flag utilities
- Flags support runtime updates via FLAG_<KEY> environment variables

Flags implemented:
- SpamShield: enableNumberReputation, enableContentClassification,
  enableBehavioralAnalysis, enableCommunityIntelligence,
  enableRealTimeBlocking, enableMultipleSources, enableMLClassifier
- VoicePrint: enableMLService, enableFAISSIndex, enableBatchAnalysis,
  enableRealtimeAnalysis, enableMockModel
- Platform: enableAuditLogs, enableKPITracking
This commit is contained in:
2026-04-29 18:16:47 -04:00
parent 29303799ed
commit ece783713e
6 changed files with 333 additions and 41 deletions

View File

@@ -8,8 +8,12 @@ export {
audioPreprocessingConfig,
voicePrintFeatureFlags,
voicePrintRateLimits,
checkFlag,
isFeatureEnabled,
} from './voiceprint.config';
// Services
export {
AudioPreprocessor,

View File

@@ -72,13 +72,13 @@ export const audioPreprocessingConfig = {
maxSilenceDurationMs: 500,
};
// Feature flags
// Feature flags - use centralized system
export const voicePrintFeatureFlags = {
enableMLService: false,
enableFAISSIndex: true,
enableBatchAnalysis: true,
enableRealtimeAnalysis: false,
enableMockModel: true,
enableMLService: checkFlag('voiceprint.enable.ml.service', false),
enableFAISSIndex: checkFlag('voiceprint.enable.faiss.index', true),
enableBatchAnalysis: checkFlag('voiceprint.enable.batch.analysis', true),
enableRealtimeAnalysis: checkFlag('voiceprint.enable.realtime.analysis', false),
enableMockModel: checkFlag('voiceprint.enable.mock.model', true),
};
// Rate limits for voice analysis