domrf_catalog scrape_one_flat: success=True даже при updated=False / 0 извлечённых полей — ложь в статистике батча #1610

Closed
opened 2026-06-16 17:19:49 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: reporting · Файл: backend/app/services/scrapers/domrf_catalog.py:484-486, 550-552

Файл: backend/app/services/scrapers/domrf_catalog.py:484-486 и 550-552. После успешных fetch+parse success всегда ставится True (строка 486), независимо от того, что upsert_catalog_data вернул False (ods_id не найден — строки 432-434) или что fields_extracted==0 (пустой парс). В scrape_catalog_batch такие исходы инкрементят stats['success'] и stats['fields_total'] (нулём), хотя в БД ничего не записано. Импакт: итоговая статистика батча перестаёт отражать число реально обновлённых строк — прогон с массово ненайденными ods_id или регрессией структуры страницы (0 полей у всех) рапортует высокий success, маскируя проблему. Severity low: данные в БД корректны (UPDATE просто не затрагивает строки), искажается только отчётность. Фикс: success = bool(outcome['updated']) либо отдельный счётчик stats['updated'] на основе outcome['updated'], и логировать кейс fields_extracted==0 как warn.

Почему баг: Итоговая статистика батча (success/failed) перестаёт отражать фактическое число обновлённых строк: прогон, где половина ods_id не найдена или страницы отдают пустой парс, рапортует высокий success. Маскирует регрессию (например смену структуры страницы → 0 полей у всех) под 'успех'.

Как чинить: Считать success только при outcome['updated'] is True и fields_extracted>0 (или ввести отдельные счётчики updated/empty/not_found), чтобы метрики батча отражали реальные записи в БД.


deep-audit backend v2 (после PR #1543) · verify+harden, confidence 0.82 · unit B33

**Severity:** low · **Категория:** reporting · **Файл:** `backend/app/services/scrapers/domrf_catalog.py:484-486, 550-552` Файл: backend/app/services/scrapers/domrf_catalog.py:484-486 и 550-552. После успешных fetch+parse success всегда ставится True (строка 486), независимо от того, что upsert_catalog_data вернул False (ods_id не найден — строки 432-434) или что fields_extracted==0 (пустой парс). В scrape_catalog_batch такие исходы инкрементят stats['success'] и stats['fields_total'] (нулём), хотя в БД ничего не записано. Импакт: итоговая статистика батча перестаёт отражать число реально обновлённых строк — прогон с массово ненайденными ods_id или регрессией структуры страницы (0 полей у всех) рапортует высокий success, маскируя проблему. Severity low: данные в БД корректны (UPDATE просто не затрагивает строки), искажается только отчётность. Фикс: success = bool(outcome['updated']) либо отдельный счётчик stats['updated'] на основе outcome['updated'], и логировать кейс fields_extracted==0 как warn. **Почему баг:** Итоговая статистика батча (success/failed) перестаёт отражать фактическое число обновлённых строк: прогон, где половина ods_id не найдена или страницы отдают пустой парс, рапортует высокий success. Маскирует регрессию (например смену структуры страницы → 0 полей у всех) под 'успех'. **Как чинить:** Считать success только при outcome['updated'] is True и fields_extracted>0 (или ввести отдельные счётчики updated/empty/not_found), чтобы метрики батча отражали реальные записи в БД. --- <sub>deep-audit backend v2 (после PR #1543) · verify+harden, confidence 0.82 · unit B33</sub>
bot-backend added the
week ревью 1
label 2026-06-16 17:19:49 +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#1610
No description provided.