diff --git a/openspec/changes/aurora-1843-svod2-server-paging/design.md b/openspec/changes/aurora-1843-svod2-server-paging/design.md index b45a5c2..ded9b81 100644 --- a/openspec/changes/aurora-1843-svod2-server-paging/design.md +++ b/openspec/changes/aurora-1843-svod2-server-paging/design.md @@ -692,17 +692,17 @@ PR создаются по готовности, merge — по команде Цена ошибки: нет. 42. **2026-10-28 (контроллер, R-8) — M-4 (символ NUL в `search`/фильтре даёт ошибку типа `text` PostgreSQL, вероятно 5xx) не правится в этой задаче, `deferred`; с экрана такой символ не вводится.** Цена ошибки: 5xx на искусственном запросе; правка — ранний возврат пустой страницы. -43. **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). +43. **2026-11-08 (R-23, перенос на 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». -44. **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). +44. **2026-11-08 (R-24) — `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'`. -45. **2026-11-08 (R-13) — режим без параметров свода 2 идёт по быстрому JSON-пути test (`get_svod2_json`, `list_json_response`, `jsonb_strip_nulls`); постраничный режим остался на кортежах и `Svod2PageResponse`: `view=full` отдаёт `data` с null-полями, `view=compact` - без них.** +45. **2026-11-08 (R-25) — режим без параметров свода 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. -46. **2026-11-08 (R-14) — эталон `svod2_legacy_golden.json` перезаписан на ответе test-кода (без null-полей, порядок ключей `success, message, result, count`).** Содержимое сверено с прежним эталоном после удаления null-полей: совпало для всех 10 случаев. Перезапись сделана на БД до миграции 0057, затем проверка пройдена с 0057. +46. **2026-11-08 (R-26) — эталон `svod2_legacy_golden.json` перезаписан на ответе test-кода (без null-полей, порядок ключей `success, message, result, count`).** Содержимое сверено с прежним эталоном после удаления null-полей: совпало для всех 10 случаев. Перезапись сделана на БД до миграции 0057, затем проверка пройдена с 0057. Цена ошибки: эталон перестаёт ловить регрессию, если перезаписан на сломанном коде; снижено сверкой с прежним эталоном. -47. **2026-11-08 (R-15) — `legacy_full` в тестах оракулов строится прямым вызовом `v_svod2_go/rf` (с null-полями), а не GET без параметров.** После AURORA-1848 GET отдаёт `data` без null-полей, и пустая секция `contract_detail` перестаёт затирать поля `contract_summary` значением null, как это делал экран «до» и как реализован серверный поиск. +47. **2026-11-08 (R-27) — `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). -48. **2026-11-08 (R-16) — `svod2_paging_check.py` перед сверкой склейки `view=full` с прежним ответом убирает null-поля.** Иначе проверка всегда расходилась бы с ответом без null-полей. +48. **2026-11-08 (R-28) — `svod2_paging_check.py` перед сверкой склейки `view=full` с прежним ответом убирает null-поля.** Иначе проверка всегда расходилась бы с ответом без null-полей. Цена ошибки: проверка не видит расхождений только в null-полях. -49. **2026-11-08 (R-17) — на фронте (PR 2) измерение высоты строки `offsetHeight` заменено фиксированной высотой `2.75rem` (AURORA-1836); px для окна страниц считается из `getRootFontSizePx()`, заглушки получают высоту в rem.** +49. **2026-11-08 (R-29) — на фронте (PR 2) измерение высоты строки `offsetHeight` заменено фиксированной высотой `2.75rem` (AURORA-1836); px для окна страниц считается из `getRootFontSizePx()`, заглушки получают высоту в rem.** Цена ошибки: если реальная высота строки с данными отличается от 2.75rem (длинный перенос), окно страниц рассчитается неточно; в test строки так же имеют фиксированную высоту.