Service Layer high complexity backend
0
Dependencies
0
Dependents
6
Entities
0
Integrations

Description

Server-side service that evaluates a candidate activity record against existing activities for the same peer mentor within a configurable time window. Computes a confidence score using indexed primary signals (user_id, activity_date, activity_type_id) and fuzzy secondary signals (duration within 15 minutes, contact_id match) to determine whether the submission is likely a duplicate.

Feature: Duplicate Activity Detection

duplicate-detection-service

Responsibilities

  • Run similarity query against existing activities using indexed columns for performance
  • Apply fuzzy matching on duration (±15 minutes) and contact_id as secondary signals
  • Compute and return a confidence score for duplicate likelihood
  • Support per-record checks for bulk registration flows
  • Accept configurable time window (default: same day) for duplicate comparison

Interfaces

checkForDuplicates(candidateActivity): DuplicateCheckResult
checkBulkForDuplicates(candidateActivities[]): DuplicateCheckResult[]
computeConfidenceScore(candidate, existing): number
setTimeWindowConfig(windowHours)
setConfidenceThreshold(threshold)
getConflictingRecord(userId, activityDate, activityTypeId): Activity | null