(low) scheduler.py/import_rosreestr_dkp: substring(floor FROM '[0-9]+') теряет минус — этаж '-1' импортируется как 1 #1525

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

Severity: low · Категория: parsing · Файл: tradein-mvp/backend/app/services/scheduler.py:864-869

scheduler.py:864-869 — floor_num = LEAST(NULLIF(substring(floor FROM '[0-9]+'),'')::int, 100). Исходный floor в gendesign_rosreestr_deals имеет тип text (миграция 072:41 'floor text'). Регексп [0-9]+ матчит только цифры без знака, поэтому подвальные/цокольные значения вида '-1' дают '1' → сделка сохраняется с floor=1 вместо отрицательного/цокольного. Импакт: тихое искажение этажа в deals (используется как фактическая сделка-аналог); затрагивает редкие подвальные ДКП. Для '5/9' поведение корректно (берёт 5). Чинить: расширить регексп до '-?[0-9]+' (или обрабатывать отрицательные/цокольные отдельно), либо нормализовать подвал/цоколь в 0/спец-значение.

Почему баг: Регексп [0-9]+ матчит только цифры, минус игнорируется → '-1' даёт 1. Для значений типа '5/9' поведение корректно (берёт 5), но знак минус теряется однозначно. floor в deals nullable, так что не падает, а тихо пишет неверное число.

Как чинить: Извлекать '-?[0-9]+' и/или явно обрабатывать подвальные обозначения; либо если первый символ '-' — сохранять отрицательный этаж / NULL вместо положительного 1.


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

**Severity:** low · **Категория:** parsing · **Файл:** `tradein-mvp/backend/app/services/scheduler.py:864-869` scheduler.py:864-869 — floor_num = LEAST(NULLIF(substring(floor FROM '[0-9]+'),'')::int, 100). Исходный floor в gendesign_rosreestr_deals имеет тип text (миграция 072:41 'floor text'). Регексп [0-9]+ матчит только цифры без знака, поэтому подвальные/цокольные значения вида '-1' дают '1' → сделка сохраняется с floor=1 вместо отрицательного/цокольного. Импакт: тихое искажение этажа в deals (используется как фактическая сделка-аналог); затрагивает редкие подвальные ДКП. Для '5/9' поведение корректно (берёт 5). Чинить: расширить регексп до '-?[0-9]+' (или обрабатывать отрицательные/цокольные отдельно), либо нормализовать подвал/цоколь в 0/спец-значение. **Почему баг:** Регексп [0-9]+ матчит только цифры, минус игнорируется → '-1' даёт 1. Для значений типа '5/9' поведение корректно (берёт 5), но знак минус теряется однозначно. floor в deals nullable, так что не падает, а тихо пишет неверное число. **Как чинить:** Извлекать '-?[0-9]+' и/или явно обрабатывать подвальные обозначения; либо если первый символ '-' — сохранять отрицательный этаж / NULL вместо положительного 1. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.85 · unit U126</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:59:15 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:18 +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#1525
No description provided.