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>
29 lines
610 B
PHP
29 lines
610 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Enums;
|
|
|
|
enum IdentityMatchStatus: string
|
|
{
|
|
case PENDING = 'pending';
|
|
case CONFIRMED = 'confirmed';
|
|
case DISMISSED = 'dismissed';
|
|
case REVERTED = 'reverted';
|
|
|
|
public function isTerminal(): bool
|
|
{
|
|
return in_array($this, [self::DISMISSED, self::REVERTED]);
|
|
}
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::PENDING => 'In afwachting',
|
|
self::CONFIRMED => 'Bevestigd',
|
|
self::DISMISSED => 'Afgewezen',
|
|
self::REVERTED => 'Ontkoppeld',
|
|
};
|
|
}
|
|
}
|