AURORA-1978: удаление пустой программы и проекта на форме 4 #304
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/303-aurora-1978-pd-delete-program-project"
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 #303 (Jira AURORA-1978).
Проблема
«Удалить строку» на строке программы (GROUP) или проекта (ITEM) проектной деятельности ничего не делала: у этих строк нет
line_id,getRowIdвозвращалnull, окно подтверждения не открывалось. Сервер событияprogram_deleted/project_deletedуже поддерживает (проверка доступа,v3.del_form4_program/v3.del_form4_projectс запретом удалять непустые), но фронт их не отправлял и не обрабатывал.Что сделано (только web/)
rowUtils.getDeleteTarget— по выделенной строке выбирает программу / проект / строку бюджета. Для программы с проектами или расходами и проекта с расходами сразу показывает причину запрета, без запроса.RealtimeContext—deleteProgram/deleteProject, обработка ответов (subscribeToNodeDeletes).useRealtimeData— строка убирается из дерева (deleteProgramRow/deleteProjectRow), пересчёт ROOT/GROUP из ответа вливается черезalignNodeRows: сопоставление поsection_code/program_id/project_id, а не поsort_order.ConfirmDeleteRowModal— заголовок и текст по типу: «Удалить программу «X»?».getWsErrorMessageсрезает префикс<class 'asyncpg.exceptions.…'>:.Проверка
node --test src/components/RealtimeTable/utils/*.test.js— 171/171 (новые тесты: getDeleteTarget, deleteProgramRow/deleteProjectRow/deleteRow, alignNodeRows, префикс класса исключения).npx rsbuild build— ок. Biome: новых замечаний нет (остальные — в существующем коде).alignNodeRows.Rulings I made
<class 'asyncpg…'>:срезается на фронте вgetWsErrorMessage, бэкенд (map_sqlalchemy_error) не трогаю — bounded-задача фронта; цена ошибки — префикс остаётся в REST-ответах и мешаетVALIDATION_PREFIXESна бэке (см. O-3).subRows; сервер остаётся источником истины для устаревшего клиента.program_deleted/project_deletedне добавлял — бэкенд не менялся; проверено вживую.Отложено (deferred)
row_deleted/updateCellsсопоставляет строки поsort_orderи уязвим к той же перенумерации — deferred.api/tests/unit/test_export_service_query_params.py::test_export_full_form_ignores_non_applicable_params_for_other_sheetsпадает на базеtest(бэкенд в PR не менялся) — deferred.map_sqlalchemy_errorотдаётstr(exc.orig)с префиксом класса asyncpg, из-за чегоstartswith(VALIDATION_PREFIXES)для RAISE из PL/pgSQL, похоже, не срабатывает (закреплено вtest_heavy_get_json.py) — deferred.1aec5d21aec5d21aec5d2🤖 Generated with Claude Code