34 lines
1.2 KiB
PHP
34 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Services\Mne\LegacyBusinessRepository;
|
|
use App\Services\Mne\MneBusinessRepository;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Queue\Queueable;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
final class CompareMneBusiness implements ShouldQueue
|
|
{
|
|
use Queueable;
|
|
|
|
public int $tries = 1;
|
|
|
|
public function __construct(public string $businessId) {}
|
|
|
|
public function handle(LegacyBusinessRepository $legacy, MneBusinessRepository $canonical): void
|
|
{
|
|
$start = hrtime(true);
|
|
try {
|
|
$source = $legacy->find($this->businessId);
|
|
$comparison = $canonical->comparison($this->businessId);
|
|
$expected = $source->only(['code', 'modality', 'status', 'classification', 'version_no']);
|
|
$outcome = $comparison === null ? 'unmapped' : ($expected == $comparison ? 'core_match' : 'divergence');
|
|
} catch (\Throwable) {
|
|
$outcome = 'comparison_error';
|
|
}
|
|
// No payloads, query parameters, identifiers or exception messages in telemetry.
|
|
Log::info('mne.compatibility.shadow', ['outcome' => $outcome, 'latency_ms' => (hrtime(true) - $start) / 1000000]);
|
|
}
|
|
}
|