diff --git a/openspec/changes/aurora-1843-svod2-server-paging/design.md b/openspec/changes/aurora-1843-svod2-server-paging/design.md index 68f020a..53aeca2 100644 --- a/openspec/changes/aurora-1843-svod2-server-paging/design.md +++ b/openspec/changes/aurora-1843-svod2-server-paging/design.md @@ -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 строки так же имеют фиксированную высоту.