72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
// Environment variables for SpamShield
|
|
const envSchema = z.object({
|
|
HIYA_API_KEY: z.string(),
|
|
HIYA_API_URL: z.string().default('https://api.hiya.com/v1'),
|
|
TRUECALLER_API_KEY: z.string().optional(),
|
|
BERT_MODEL_PATH: z.string().default('./models/spam-classifier'),
|
|
SPAM_THRESHOLD_AUTO_BLOCK: z.string().transform(Number).default(0.85),
|
|
SPAM_THRESHOLD_FLAG: z.string().transform(Number).default(0.6),
|
|
CALL_ANALYSIS_TIMEOUT_MS: z.string().transform(Number).default(200),
|
|
});
|
|
|
|
export const spamShieldEnv = envSchema.parse({
|
|
HIYA_API_KEY: process.env.HIYA_API_KEY,
|
|
HIYA_API_URL: process.env.HIYA_API_URL,
|
|
TRUECALLER_API_KEY: process.env.TRUECALLER_API_KEY,
|
|
BERT_MODEL_PATH: process.env.BERT_MODEL_PATH,
|
|
SPAM_THRESHOLD_AUTO_BLOCK: process.env.SPAM_THRESHOLD_AUTO_BLOCK,
|
|
SPAM_THRESHOLD_FLAG: process.env.SPAM_THRESHOLD_FLAG,
|
|
CALL_ANALYSIS_TIMEOUT_MS: process.env.CALL_ANALYSIS_TIMEOUT_MS,
|
|
});
|
|
|
|
// Spam detection layers
|
|
export enum SpamLayer {
|
|
NUMBER_REPUTATION = 'number_reputation',
|
|
CONTENT_CLASSIFICATION = 'content_classification',
|
|
BEHAVIORAL_ANALYSIS = 'behavioral_analysis',
|
|
COMMUNITY_INTELLIGENCE = 'community_intelligence',
|
|
}
|
|
|
|
// Spam decision types
|
|
export enum SpamDecision {
|
|
ALLOW = 'allow',
|
|
FLAG = 'flag',
|
|
BLOCK = 'block',
|
|
CHALLENGE = 'challenge',
|
|
}
|
|
|
|
// Confidence levels
|
|
export enum ConfidenceLevel {
|
|
LOW = 'low',
|
|
MEDIUM = 'medium',
|
|
HIGH = 'high',
|
|
VERY_HIGH = 'very_high',
|
|
}
|
|
|
|
// Feature flags for spam detection
|
|
export const spamFeatureFlags = {
|
|
enableNumberReputation: true,
|
|
enableContentClassification: true,
|
|
enableBehavioralAnalysis: true,
|
|
enableCommunityIntelligence: true,
|
|
enableRealTimeBlocking: true,
|
|
};
|
|
|
|
// Rate limits for spam analysis
|
|
export const spamRateLimits = {
|
|
basic: {
|
|
analysesPerMinute: 10,
|
|
analysesPerDay: 100,
|
|
},
|
|
plus: {
|
|
analysesPerMinute: 50,
|
|
analysesPerDay: 1000,
|
|
},
|
|
premium: {
|
|
analysesPerMinute: 200,
|
|
analysesPerDay: 10000,
|
|
},
|
|
};
|