Merge remote-tracking branch 'origin/feat/236-aurora-1843-svod2-server-paging' into feat/236-aurora-1843-svod2-server-paging-web

# Conflicts:
#	openspec/changes/aurora-1843-svod2-server-paging/design.md
This commit is contained in:
Andrey Epifancev 2026-11-08 11:06:54 +04:00
commit 15957a3ba3

View File

@ -697,3 +697,17 @@ PR создаются по готовности, merge — по команде
Цена ошибки: дрожание высоты при первом измерении; ручная проверка контроллером на стенде; после влития AURORA-1836 источник заменить на её константу.
44. **2026-10-29 (контроллер, R-10) — приняты как отступления (deferred): окно страниц запрашивается после ответа первой страницы (T12.1); при сужающем refine глубоко внизу уходит лишний запрос `offset ≥ total` (T12.2); после ошибки смена поиска запускает refine без ожидания «Повторить» (T12.4); на границе страниц после refine/«Обновить» на один ответ видны заглушки (T12.5).**
Цена ошибки: лишний запрос или кратковременные заглушки; проверяет главный контроллер вручную.
51. **2026-11-08 (R-11, перенос на test) — миграция переименована из `0053_svod2_server_paging` в `0057_svod2_server_paging`, `down_revision = "0056"`.** Номера 0053-0056 заняты test (source_sheet, hide_satellite_rows, transfer_econ_calc, budget_line_delete_owner_guard).
Цена ошибки: нет, номер «голова + 1» предусмотрен «Совместимостью и порядком PR».
50. **2026-11-08 (R-12) — `v3.svod2_lines` (общий отбор страниц и фасетов) пересобран с поправкой AURORA-1906 (0050): для ГО строка аренды заполнена и при `rent_detail.actual_spod <> 0`, для РФ условие не добавляется (0050 правил только `v_svod2_go`).** Тело `v_svod2_go` в 0057 берётся от 0049; других отличий 0050 от 0049 в теле `v_svod2_go` нет (проверено diff).
Цена ошибки: если СПОД должен учитываться и в РФ, `svod2_lines` для RF вернёт на строки аренды только со СПОД меньше, чем нужно; правка - снять условие `p_sheet = 'GO'`.
51. **2026-11-08 (R-13) — режим без параметров свода 2 идёт по быстрому JSON-пути test (`get_svod2_json`, `list_json_response`, `jsonb_strip_nulls`); постраничный режим остался на кортежах и `Svod2PageResponse`: `view=full` отдаёт `data` с null-полями, `view=compact` - без них.**
Цена ошибки: форма `data` в `view=full` и в прежнем ответе различается только null-полями; фронт PR 2 использует compact. Исправление - `jsonb_strip_nulls` и в full.
50. **2026-11-08 (R-14) — эталон `svod2_legacy_golden.json` перезаписан на ответе test-кода (без null-полей, порядок ключей `success, message, result, count`).** Содержимое сверено с прежним эталоном после удаления null-полей: совпало для всех 10 случаев. Перезапись сделана на БД до миграции 0057, затем проверка пройдена с 0057.
Цена ошибки: эталон перестаёт ловить регрессию, если перезаписан на сломанном коде; снижено сверкой с прежним эталоном.
51. **2026-11-08 (R-15) — `legacy_full` в тестах оракулов строится прямым вызовом `v_svod2_go/rf` (с null-полями), а не GET без параметров.** После AURORA-1848 GET отдаёт `data` без null-полей, и пустая секция `contract_detail` перестаёт затирать поля `contract_summary` значением null, как это делал экран «до» и как реализован серверный поиск.
Цена ошибки: семантика поиска «пустой contract_detail затирает contract_summary» остаётся от экрана «до», живой экран test (на данных без null) её уже не воспроизводит; решение за человеком (deferred).
50. **2026-11-08 (R-16) — `svod2_paging_check.py` перед сверкой склейки `view=full` с прежним ответом убирает null-поля.** Иначе проверка всегда расходилась бы с ответом без null-полей.
Цена ошибки: проверка не видит расхождений только в null-полях.
51. **2026-11-08 (R-17) — на фронте (PR 2) измерение высоты строки `offsetHeight` заменено фиксированной высотой `2.75rem` (AURORA-1836); px для окна страниц считается из `getRootFontSizePx()`, заглушки получают высоту в rem.**
Цена ошибки: если реальная высота строки с данными отличается от 2.75rem (длинный перенос), окно страниц рассчитается неточно; в test строки так же имеют фиксированную высоту.