feat: complete person identity matching system with fuzzy detection, revert, and manual link
Implements the full identity matching engine: email matching (HIGH confidence), fuzzy name matching with Levenshtein distance (MEDIUM confidence, upgradable to HIGH with DOB tiebreaker), manual link/unlink, revert confirmed matches, and automatic detection via PersonObserver. Includes 33 comprehensive tests, frontend integration with confirm/dismiss/unlink UI, and match indicators in the persons list. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -121,7 +121,15 @@ final class Person extends Model
|
||||
public function pendingIdentityMatch(): HasOne
|
||||
{
|
||||
return $this->hasOne(PersonIdentityMatch::class)
|
||||
->where('status', IdentityMatchStatus::PENDING);
|
||||
->where('status', IdentityMatchStatus::PENDING)
|
||||
->latest();
|
||||
}
|
||||
|
||||
public function confirmedIdentityMatch(): HasOne
|
||||
{
|
||||
return $this->hasOne(PersonIdentityMatch::class)
|
||||
->where('status', IdentityMatchStatus::CONFIRMED)
|
||||
->latest();
|
||||
}
|
||||
|
||||
public function scopeApproved(Builder $query): Builder
|
||||
|
||||
Reference in New Issue
Block a user