AURORA-1844: upd_form_cells возвращает строки целиком #231
Open
aep
wants to merge 2 commits from
feat/215-aurora-1844-upd-form-cells-full-rows into test
pull from: feat/215-aurora-1844-upd-form-cells-full-rows
merge into: RSHB:test
RSHB:main
RSHB:feat/246-aurora-1944-wheel-scroll-step
RSHB:feat/236-aurora-1843-svod2-server-paging-perf
RSHB:feat/236-aurora-1843-svod2-server-paging-web
RSHB:feat/236-aurora-1843-svod2-server-paging
RSHB:feat/214-aurora-1841-dict-vsp-virtual
RSHB:feat/220-aurora-1842-svod2-column-virtual
RSHB:feat/216-aurora-1846-form4-sheet-sum
RSHB:feat/235-aurora-1850-upd-form-cells-subtree
RSHB:feat/233-aurora-1848-sheet-json-no-pydantic-b
RSHB:feat/234-aurora-1839-cell-memo
RSHB:feat/233-aurora-1848-sheet-json-no-pydantic
RSHB:feat/237-aurora-1845-ws-connection-cache
RSHB:feat/226-aurora-1837-cell-styles-css
RSHB:feat/207-aurora-1831-project-tn-race
RSHB:feat/208-aurora-1832-phase-dates-tz
RSHB:feat/209-aurora-1833-greenlet-dev
RSHB:feat/206-aurora-1830-users-me-local-email
RSHB:feat/212-aurora-1838-ws-immutable-update
RSHB:feat/211-aurora-1836-row-measure
RSHB:feat/205-aurora-1922-pg15-migration-0012
RSHB:feat/213-aurora-1840-sheet-modals
RSHB:feat/210-aurora-1835-svod1-formatter
RSHB:test
RSHB:svod2-filter-fix2
RSHB:indent-export
RSHB:export-hierarchy
RSHB:svod2-filter-fix
RSHB:fix-id-column
RSHB:export-year-fix
RSHB:form3-source
RSHB:columns-svod-2
RSHB:export-optimize-refresh
RSHB:last-column
RSHB:svod-fix
RSHB:fix-columns
RSHB:form3-expense
RSHB:sattelite-fix
RSHB:delete-sattelite-rows
RSHB:form3-pages
RSHB:form1-sub_sub-fix
RSHB:sort-fix
RSHB:fixes-form
RSHB:new-expenses
RSHB:new-rows
RSHB:fix-style
RSHB:phase-template-edit
RSHB:fixes
RSHB:add-btn-reset-filter
RSHB:vsp-choice-fix
RSHB:project-filters-fix
RSHB:width-column-header-name
RSHB:task-filter-navigation
RSHB:auth
RSHB:icons-program-project
RSHB:export-optimize
RSHB:org-unit-limits
RSHB:auth-v2
RSHB:tasks-filters
RSHB:insert-row-fix
RSHB:svod-roles
RSHB:new-role-fix
RSHB:phase-edit-fix
RSHB:new-role
RSHB:delete-from-cell
RSHB:svod-cahe-and-table-direction
RSHB:direction-stage-fix
RSHB:backslash-fix
RSHB:svod
RSHB:front-svod-form-1
RSHB:projects-filters
RSHB:remove-row-fix
RSHB:computed-fix
RSHB:modal-add-year-project
RSHB:name-fix
RSHB:audit-logs-projects
RSHB:meta-form-3
RSHB:project-back-fix
RSHB:fix-sticky-columns
RSHB:fixies-3-form
RSHB:tech-num-fix
RSHB:fix-logic-limitation
RSHB:projects-fix
RSHB:3-form-project
RSHB:project-add-year-handler
RSHB:projects-summary-handler
RSHB:AURORA-1247
RSHB:projects-handlers
RSHB:vsp-choose-form2-2
RSHB:directions-fix
RSHB:add-validation
RSHB:add-checkbox-export-vsp
RSHB:fix-update-column-config
RSHB:fix-editable-columns
RSHB:add-biome-front
RSHB:vsp-choose-form2
RSHB:export-form-4
RSHB:booking-fix
RSHB:fix-front-tables
RSHB:phase-directions
RSHB:AURORA-1225
RSHB:fix-mapping-form-2-oper
RSHB:AURORA-1076-fix
RSHB:fix-add-row-program-4-form
RSHB:form2-limit-migrations
RSHB:delete-projects
RSHB:AURORA-1076
RSHB:form-4-add-row
RSHB:fix-logs
RSHB:AURORA-1206
RSHB:AURORA-894
RSHB:add-line-log-hotfix
RSHB:form-export-fix
RSHB:form-4-sql
RSHB:table-optimization-fix
RSHB:header_forms
RSHB:form-4-expense-item-filters
RSHB:entity-type-hotfix
RSHB:form-3-phases-timezones
RSHB:form-4-handlers
RSHB:export-fix
RSHB:close-date-vsp-fix
RSHB:deleted-user-auth-fix
RSHB:smeta-fix
RSHB:front-fixes
RSHB:line_id_code_full
RSHB:line_id_code
RSHB:timezones
RSHB:filenames-fix
RSHB:AURORA-1174-73
RSHB:project-sheets
RSHB:AURORA-1166
RSHB:websocket-projects
RSHB:project-front
RSHB:form3-permissions
RSHB:location_from_to_placement_type
RSHB:fix-vsp-filters
RSHB:fix-tests-and-functions
RSHB:mig2-fix
RSHB:vsp_fixes
RSHB:fix-ssp-title
RSHB:AURORA-1148
RSHB:fix-vsp-form-edit
RSHB:sql-funcs2-fix
RSHB:AURORA-1132
RSHB:logs
RSHB:AURORA-1147
RSHB:export-optimization
RSHB:AURORA-1131
RSHB:sql-funcs-fix
RSHB:vsp-dropdown-form
RSHB:form_2-back
RSHB:migrations
RSHB:websocket-self-flag
RSHB:reload-fix
RSHB:test-stand-fix
RSHB:excel-empty-fix
RSHB:requirements-fix
RSHB:AURORA-1096-back
RSHB:AURORA-1098
RSHB:AURORA-1096
RSHB:ws-user-id-fix
RSHB:expense-item-handler
RSHB:fix-date-phase
RSHB:excel-fix
RSHB:vsp-edit-field-fix
RSHB:vsp-fix-back
RSHB:vsp-back
RSHB:create-form-back
RSHB:export-direction-fix
RSHB:change-role-fix
RSHB:org-unit-users-fix
RSHB:audit-fix
RSHB:org-archive
RSHB:del_row_fix
RSHB:websocket_locks
RSHB:new_line_id
RSHB:admin-back
RSHB:form-fix
RSHB:ws
RSHB:ssp-fix
RSHB:stages-back
RSHB:form_124_write
RSHB:form_124
RSHB:new-model
RSHB:test-tsygankov
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "feat/215-aurora-1844-upd-form-cells-full-rows"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #215
Jira: AURORA-1844
Что сделано
upd_form_cells_full_rows:v3.upd_form_cells(p_form_id, p_sheet, p_changes, p_direction, p_sections)без снимка «до» и_jsonb_diff; после применения правок один вызов выборки, ответ - строки целиком (изменённые INPUT и все предки-агрегаты, включая неизменившиеся). Обёртка сp_user_id(0031) не тронута.v3._form_affected_rows(p_form_id, p_sheet, p_ids int[], p_direction, p_sections)- выборка затронутых строк (её перепишет AURORA-1850, AURORA-1845 будет звать отдельно).p_sections: убираются ключи верхнего уровня исключённых разделов; вложенные null сохраняются (очистка ячейки доходит до клиента).Тесты
tests/integration/test_upd_form_cells_full_rows.py(10 тестов) и переиспользуемыйtests/integration/sheet_contract.py(assert_patch_rows_match_sheet: строка ответа == строка GET по (row_type, depth, sort_order), для AURORA-1850): FORM_1 Support, FORM_2 AHR/CAP/OPER, FORM_4 (только своя программа/проект), AHR_RENT (+ сумма в GET AHR), неизменившийся предок, очистка уменьшает суммы, PATCH /cells с плохой колонкой - ошибка и ничего не применено,?sections=plan.Проверить руками
Замер до/после
Будет добавлен после ночного прогона на стенде perf/. Сценарий: coauthor на FORM_2/AHR до grow (
PERF_TARGETS='FORM_2/AHR/*',scroll-coauthor.spec.ts), метрикаmean_exec_timeupd_form_cellвsql/coauthor/sql_top.json: ~630 -> <=350 мс, вложенныхv_form2_viewна правку 1 вместо 2.Rulings I made
sectionsключей включены такжеfact_q1..fact_q4,sequestration,reserve,contract_detail(union списков FORM_1/2/4);headerне удаляется. Цена ошибки: лишний/недостающий ключ в ответе при sections.expense_item_idиз пути изменённых статей (программа может встречаться в нескольких разделах). Цена ошибки: пропущенная или лишняя строка GROUP/ITEM.unknown_columnсейчас даёт 400, как в существующем тесте).🤖 Generated with Claude Code
Проверка на PostgreSQL 15.12 (контроллер, 28.10): ветка + коммиты AURORA-1922 (PR #221), пустая БД, --init_db — миграция 0050 проходит; полный pytest: 212 passed, 4 skipped, 3 failed (исходные падения test). Новых падений нет.
Ночной замер на стенде perf/ (29.10, масштаб 1, D0 без grow, CPU 1x, arm-ka-* остановлены)
Сборки: «до» —
test2a28748(БД на 0049); «после» — этот PRf0cac30(D0 +alembic upgrade→ 0050). Фронт в обоих — prod-сборкаtest.Команда:
PERF_SQLSTATS_TAG=coauthor PERF_TARGETS='FORM_2/AHR/*' PERF_COAUTHOR_RATES=1,5 PERF_REPEATS=3 npx playwright test scenarios/scroll-coauthor.spec.ts(perf/results/<run>/sql/coauthor/sql_top.json).test)upd_form_cellv_form2_viewна правкуtools/get_vs_upd.py)Корректность ответа (на стенде): снимок GET всех 56 тяжёлых запросов на 1844 совпал байт в байт со снимком на 1850 (см. #244); отдельной сверки 1844 против
testя не делал — контракт ответа на правку покрыт контрактным тестом PR.Наблюдение O-1 (инструмент, не PR): на
testпрогон rate 5 упал во всех 3 повторах —coauthor_echoed=0 (sent=0, код бота null): бот не завершается за 10 с после SIGTERM (очередь правок при ~0,5 с на правку), его итог теряется. На 1844/1850 rate 5 проходит. Поэтому «до» для rate 5 нет.Файлы:
/private/tmp/claude-501/-Users-andrey-epifancev-projects-fomichev-claude/6fa9c75e-eb11-4e5d-98c1-05eb590ab14f/scratchpad/night/1850/(getupd-*.txt, api-1844-co.log), прогоныperf/results/n-base-co,n-p1844-coиperf/report-data/<run>/summary.mdв worktree perf-bench.🤖 Generated with Claude Code
Ночной замер — часть 2 (итог)
Сборки как в части 1 («до» — 1844
f0cac30, D0 + 0050). Добавлено: поведение в combo (все 14 PR волны 1, бэк combo без 1850; соавтор FORM_2/AHR rate 1 и 5, 2 повтора без trace).upd_form_cell(sql_top, D0)v_form2_viewза правку (вызовов / правок)page_ws_updates21.5 (rate 1) и 103.5 (rate 5) > 0, эхо доходит.v_form2_viewна правку — выполнен (310.9; 1 на правку)./private/tmp/claude-501/-Users-andrey-epifancev-projects-fomichev-claude/6fa9c75e-eb11-4e5d-98c1-05eb590ab14f/scratchpad/night/, прогонperf/results/n-combo-co/sql/coauthor/sql_top.json.Checkout
From your project repository, check out a new branch and test the changes.