(low) EgrnPropertyTable/formatDate: невалидная дата ЕГРН рендерится как «Invalid Date» — мёртвый try/catch #1471

Closed
opened 2026-06-15 05:56:52 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: parsing · Файл: frontend/src/components/site-finder/analysis/EgrnPropertyTable.tsx:19-26

EgrnPropertyTable.tsx:19-26. formatDate оборачивает new Date(raw).toLocaleDateString('ru-RU') в try/catch с fallback return raw. Проверено в Node: new Date('garbage').toLocaleDateString('ru-RU') === 'Invalid Date' БЕЗ throw; new Date('15.03.2024').toLocaleDateString('ru-RU') тоже даёт 'Invalid Date'. Значит catch-ветка недостижима. Импакт: при непарсибельной registration_date / last_updated из ЕГРН (например формат DD.MM.YYYY от Росреестра) в полях «Дата регистрации»/«Обновлено» пользователь увидит буквальное «Invalid Date» вместо raw или «—». Как чинить: проверять Number.isNaN(d.getTime()) после new Date(raw) и возвращать raw (или «—») при невалидной дате, вместо опоры на try/catch.

Почему баг: catch-ветка недостижима, поэтому при непарсибельной registration_date / last_updated из ЕГРН в клиентскую таблицу попадёт буквальное «Invalid Date» вместо исходного значения или «—». Источник (Росреестр/ЕГРН) может отдать дату в нестандартном формате (например DD.MM.YYYY), которую Date не парсит — и пользователь увидит «Invalid Date» в полях «Дата регистрации»/«Обновлено».

Как чинить: Проверять Number.isNaN(new Date(raw).getTime()) и при NaN возвращать raw (или «—»), а не полагаться на try/catch вокруг toLocaleDateString.


deep-audit «армия ботов 2» · verify+harden, confidence 0.9 · unit U100

**Severity:** low · **Категория:** parsing · **Файл:** `frontend/src/components/site-finder/analysis/EgrnPropertyTable.tsx:19-26` EgrnPropertyTable.tsx:19-26. formatDate оборачивает new Date(raw).toLocaleDateString('ru-RU') в try/catch с fallback `return raw`. Проверено в Node: new Date('garbage').toLocaleDateString('ru-RU') === 'Invalid Date' БЕЗ throw; new Date('15.03.2024').toLocaleDateString('ru-RU') тоже даёт 'Invalid Date'. Значит catch-ветка недостижима. Импакт: при непарсибельной registration_date / last_updated из ЕГРН (например формат DD.MM.YYYY от Росреестра) в полях «Дата регистрации»/«Обновлено» пользователь увидит буквальное «Invalid Date» вместо raw или «—». Как чинить: проверять Number.isNaN(d.getTime()) после new Date(raw) и возвращать raw (или «—») при невалидной дате, вместо опоры на try/catch. **Почему баг:** catch-ветка недостижима, поэтому при непарсибельной registration_date / last_updated из ЕГРН в клиентскую таблицу попадёт буквальное «Invalid Date» вместо исходного значения или «—». Источник (Росреестр/ЕГРН) может отдать дату в нестандартном формате (например DD.MM.YYYY), которую Date не парсит — и пользователь увидит «Invalid Date» в полях «Дата регистрации»/«Обновлено». **Как чинить:** Проверять Number.isNaN(new Date(raw).getTime()) и при NaN возвращать raw (или «—»), а не полагаться на try/catch вокруг toLocaleDateString. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.9 · unit U100</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:56:52 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:10 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1471
No description provided.