AURORA-1848: лист и своды без null-полей + фронт (B) #242

Open
aep wants to merge 9 commits from feat/233-aurora-1848-sheet-json-no-pydantic-b into feat/233-aurora-1848-sheet-json-no-pydantic

9 Commits

Author SHA1 Message Date
Andrey Epifancev
c859ca1c59 fix(realtime): getDataRowId возвращает null вместо undefined, тесты M-8/M-9
После jsonb_strip_nulls у групп/позиций нет ключа line_id, getDataRowId
возвращал undefined, и row_id в сообщении удаления сериализовался в {}
(KeyError на сервере). Возвращаем null, как до фазы B.
Добавлены тесты updateCells (глубокое отсутствие блока, два обновления в батче)
и сверка jsonb_strip_nulls с _strip_nulls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:15:23 +04:00
Andrey Epifancev
07f129e934 docs(openspec): aurora-1848 — решения R-6..R-8 без обсуждения
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:13:31 +04:00
Andrey Epifancev
501be971e7 perf(gen): grow не падает на ответах листа без null-полей
form4_ids вычисляет vsp_ids и project_ids из строк FORM_4 через .get
с пропуском отсутствующих ключей, grow_form4_sheet использует её.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:58:39 +04:00
Andrey Epifancev
7efb640425 perf(api): лист и своды без null-полей в data (jsonb_strip_nulls)
row_json_select(strip_nulls) оборачивает data в jsonb_strip_nulls внутри json_build_object;
флаг пробрасывается через get_json/get_svod1_json/get_svod2_json, роутеры листа и сводов
включают его. Проекты, PATCH/POST/DELETE не затронуты.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:56:54 +04:00
Andrey Epifancev
a5282f1c86 fix(realtime): пустая правка уходит как value: null, а не без ключа (AURORA-1848)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:51:09 +04:00
Andrey Epifancev
b0e11d1cd0 test(realtime): правка соавтора по ключу, которого нет в строке (AURORA-1848)
Четыре теста updateCells: вставка отсутствующего блока и поля,
явная запись null, вставка отсутствующего скалярного ключа data.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:49:27 +04:00
Andrey Epifancev
ef6df97f1f Merge AURORA-1838 (#223) в ветку B: updateCells вставляет отсутствующие ключи
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:48:10 +04:00
Andrey Epifancev
4393e964f4 perf(realtime): убрать console.log каждого WebSocket-сообщения
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 18:10:30 +04:00
Andrey Epifancev
17dddc21d3 perf(realtime): updateCells без structuredClone и мутации входа
Копируются только строки на пути к затронутой, остальные сохраняют идентичность;
без изменений возвращается тот же data. Отсутствующие в row.data ключи теперь
вставляются (нужно для AURORA-1844/1848). Тесты с паритетом к прежней реализации.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 18:10:30 +04:00