feat(sales): руками введённые телефоны контактов чистятся при сохранении (формат 79…, дубли долой)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-07-19 08:57:02 +03:00
parent 44b892c771
commit 3ab8b2cbff
5 changed files with 72 additions and 16 deletions
@@ -15,3 +15,16 @@ it('normalizes russian phones to +7XXXXXXXXXX', function (string $input, ?string
['+1 202 555 0143', null], // 11 цифр, но начинается не с 7/8
['', null],
]);
it('чистит список контактных телефонов: нормализует к 79…, дубли схлопывает, неизвестное не теряет', function (array $input, array $expected) {
expect(PhoneNormalizer::cleanContactList($input))->toBe($expected);
})->with([
'десять цифр → 79' => [['9135191264'], ['79135191264']],
'одиннадцать с 8 → 79' => [['89135191264'], ['79135191264']],
'форматированный с +7 → 79' => [['+7 913 519-12-64'], ['79135191264']],
'три формы одного номера → один' => [['9135191264', '89135191264', '+7 913 519-12-64'], ['79135191264']],
'порядок первого вхождения сохраняется' => [['9135191264', '9991112233'], ['79135191264', '79991112233']],
'нераспознанное — оставляем как ввёл' => [['12345'], ['12345']],
'пустые строки отбрасываются' => [['', ' ', '9135191264'], ['79135191264']],
'нераспознанное дедуп по цифрам' => [['12345', '12345'], ['12345']],
]);