From e29f38280e1db54bb229f715ec8bcdc0d11167ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Sun, 17 May 2026 18:27:56 +0300 Subject: [PATCH] =?UTF-8?q?chore(deals):=20post-review=20cleanup=20?= =?UTF-8?q?=E2=80=94=20refresh=20stale=20=C2=A76.4=20docs=20+=20mapper=20c?= =?UTF-8?q?ount=20assertion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app/Services/Import/HistoricalImportService.php | 2 +- app/app/Services/Import/StatusRuToSlugMapper.php | 6 ++++-- app/tests/Unit/Import/StatusRuToSlugMapperTest.php | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/app/Services/Import/HistoricalImportService.php b/app/app/Services/Import/HistoricalImportService.php index 54986945..72d7ad5d 100644 --- a/app/app/Services/Import/HistoricalImportService.php +++ b/app/app/Services/Import/HistoricalImportService.php @@ -105,7 +105,7 @@ final class HistoricalImportService } /** - * Маппит статус: каноническая таблица §6.4 → tenant-override → fallback 'new'. + * Маппит статус: StatusRuToSlugMapper → tenant-override → fallback 'new'. * Неизвестный статус инкрементит счётчик в $unknown по ссылке. * * @param array $overrides diff --git a/app/app/Services/Import/StatusRuToSlugMapper.php b/app/app/Services/Import/StatusRuToSlugMapper.php index 56111256..1235f698 100644 --- a/app/app/Services/Import/StatusRuToSlugMapper.php +++ b/app/app/Services/Import/StatusRuToSlugMapper.php @@ -5,7 +5,8 @@ declare(strict_types=1); namespace App\Services\Import; /** - * Маппинг русских названий статусов воронки в slug (ТЗ §6.4). + * Маппинг русских названий статусов (старые 14 названий поставщика + новые 5) + * в slug 5-статусной воронки (редизайн 2026-05-17). * * Чистый сервис без зависимостей. Tenant-специфичные переопределения * неизвестных статусов накладываются вызывающим кодом (HistoricalImportService). @@ -45,7 +46,8 @@ class StatusRuToSlugMapper } /** - * Полная каноническая таблица — для UI wizard'а (показать варианты). + * Полная таблица соответствия: русское название → slug 5-статусной воронки + * (18 ключей — старые и новые названия схлопываются в 5 slug'ов). * * @return array */ diff --git a/app/tests/Unit/Import/StatusRuToSlugMapperTest.php b/app/tests/Unit/Import/StatusRuToSlugMapperTest.php index 0a291664..ef0e123b 100644 --- a/app/tests/Unit/Import/StatusRuToSlugMapperTest.php +++ b/app/tests/Unit/Import/StatusRuToSlugMapperTest.php @@ -22,7 +22,8 @@ test('новые русские названия 5-статусной ворон expect($m->toSlug('Новая сделка'))->toBe('new') ->and($m->toSlug('В работе'))->toBe('in_progress') ->and($m->toSlug('Сделка'))->toBe('won') - ->and($m->toSlug('Не реализовано'))->toBe('lost'); + ->and($m->toSlug('Не реализовано'))->toBe('lost') + ->and($m->map())->toHaveCount(18); // 5 новых + 13 старых RU-названий }); test('тримит пробелы вокруг значения', function (): void {