fix(import): Task 5 code-review — final-класс CsvLeadsParser + self::EXPECTED_COLUMNS

Code-review Task 5 (non-blocking 🟡): CsvLeadsParser объявлен final (симметрия
с DTO ParsedLeadRow/CsvParseResult, утилитарный класс без наследования);
строка ошибки про число колонок использует self::EXPECTED_COLUMNS вместо
литерала 9.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-16 17:51:27 +03:00
parent 8f2b82405a
commit 29a4d01ff4
+2 -2
View File
@@ -17,7 +17,7 @@ use Throwable;
* Невалидные строки не роняют парсинг собираются в errors[].
* Файл целиком загружается в память (MVP: ожидаемый объём единицы тысяч строк).
*/
class CsvLeadsParser
final class CsvLeadsParser
{
private const EXPECTED_COLUMNS = 9;
@@ -45,7 +45,7 @@ class CsvLeadsParser
$cells = str_getcsv($rawLine);
if (count($cells) < self::EXPECTED_COLUMNS) {
$errors[] = ['line' => $dataLine, 'message' => 'Ожидалось 9 колонок, получено '.count($cells)];
$errors[] = ['line' => $dataLine, 'message' => 'Ожидалось '.self::EXPECTED_COLUMNS.' колонок, получено '.count($cells)];
continue;
}