AURORA-1905: выгрузка форм 1 и 4 — порядок столбцов и заголовки как на экране #260
Open
aep
wants to merge 1 commits from
feat/253-aurora-1905-form1-form4-export-layout into test
pull from: feat/253-aurora-1905-form1-form4-export-layout
merge into: RSHB:test
RSHB:main
RSHB:feat/266-aurora-1897-ahr-limit-period-vat-units
RSHB:feat/265-aurora-1909-ahr-manual-row-capture
RSHB:feat/264-aurora-1895-formula-localstorage
RSHB:feat/254-aurora-1906-spod-column
RSHB:feat/255-aurora-1938-transfer-econ-calc
RSHB:feat/250-aurora-1888-stages-role-filter
RSHB:feat/252-aurora-1902-form2-export-layout
RSHB:feat/251-aurora-1901-smeta-rf-column-order
RSHB:feat/249-aurora-1936-row-delete-confirm
RSHB:feat/248-aurora-1877-token-refresh
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/215-aurora-1844-upd-form-cells-full-rows
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/253-aurora-1905-form1-form4-export-layout"
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 #253.
Проблема
Выгрузка Excel листов АХР/КВ/Операц/Структура форм 1 и 4 расходилась с экраном сразу по нескольким причинам: пропавшие «Факт 1/2/3 кв» в FORM_4, неверный порядок «Комментарий»/«Скорректированный план» во 2-4 кв., перепутанные заголовки групп («Резерв Финансового Комитета» вместо «План {year}», «Факт РСБУ 3 кв» вместо «4 кв»), задвоенный «Платежи в 2027 году» с неверным годом, ЦКК-поля не на своих местах.
Что сделано
_patch_form4_regular_columns()вызывался дважды — второй вызов стирал только что добавленныеactual_rsbu_spod_q1..q3. Убрал второй вызов.q{n}.actual_quarter(как на экране), не всегда пустойq{n}.actual_rsbu_spod.FORM1_DEPTH_COLUMNS(наследуется и формой 4): убраныcollegial.emptyи группыshift(ключsum, SQL не отдаёт); в q2/q3 добавленcomment_correct/adj_commentсразу послеreserve_correct(раньше отсутствовал); в q4 то же поле вынесено изrev_correctв отдельныйcomment_correctна то же место;approved.planпереименован из скопированного «Резерв Финансового Комитета» в «План {year}»; q4quarter_correct— из ошибочного «Факт РСБУ 3 кв» в «Факт РСБУ 4 кв {year_short}».render_column_years: добавлен плейсхолдерyear_plus_2;contract_summaryполучилfuture_y2«Платежи в {year_plus_2} году» (раньше отсутствовал в базе, а патч FORM_4 дублировал его с неверным{next_year}= +1 год вместо +2). На экране «Операц» формы 1 такой колонки нет — новаяFORM1_OPER_DEPTH_COLUMNSбезfuture_y2, подключена в_create_xlsxwriter_sheet_writersтолько для сheeta OPER.proc_plan/proc_methodпосле переименования уезжали в конец блока (pop+переприсвоение добавляет ключ в конец словаря) — вернул порядок экрана через_reorder_children.FORM_1/{AHR,CAP,OPER}.js): в q4 узел «Комментарий» (GG) шёл после «Скорректированный план» (GH) — переставлен перед, как в 1-3 кв.Rulings (решения без обсуждения)
q{1,2,3}.actual_quarter(встречается и внутри своего квартала, и в сводной колонке «Факт N кв» перед итогами) — тикет явно разрешает это, как и на экране.FORM1_OPER_DEPTH_COLUMNSиспользовалcopy.deepcopy+pop("future_y2"), а не отдельную ручную раскладку — минимальный диф, одна точка расхождения с AHR/CAP.pop("shift", None)/pop("collegial"...empty", None)вызовы внутри_patch_form4_regular_columns(они стали no-op после фикса базовой раскладки) — тикет явно просил убрать толькоcomment_correct-setdefault иactual_rsbu_spod-удаление, трогать остальное не просил.Тесты
api/tests/unit/test_export_form1_form4_mapping.py(новый, 10 тестов): нетcollegial.empty/shift.sum; вFORM4_DEPTH_COLUMNSпередtotalsестьq1/q2/q3.actual_quarter(по 2 вхождения, дубль признан) и ровно одинq4.actual_rsbu_spod;adj_commentидёт сразу послеadj_reserveв q2/q3/q4 дляFORM1_DEPTH_COLUMNS/FORM4_DEPTH_COLUMNS/FORM4_STRUCTURE_DEPTH_COLUMNS; ЦККprocurement_plan/procurement_method— передcomment;FORM1_OPER_DEPTH_COLUMNSбезfuture_y2, у AHR/CAP он есть;render_column_yearsрезолвит «Платежи в 2028 году», «План 2026», «Факт РСБУ 4 кв 26» для FORM_1/FORM_4/FORM_4_STRUCTURE; повторныйimportlib.reloadмодуля не меняет раскладку (регресс на дубль вызова патча, как просил тикет).web/.../utils/form1Q4CommentOrder.test.js(новый, 3 теста): порядокq4.adj_reserve → q4.adj_comment → q4.corrected_planдля AHR/CAP/OPER. Проверено, что тест падал на исходных файлахtest(comment<plan: falseна всех трёх) до правки.pytest tests/unit— 68 passed, 2 failed, оба failed не связаны с этой правкой (test_export_service_query_params.py, экспорт-сервис, те же 2 падения наtestбез моих изменений).XlsxDepthSheetWriter, но сам файл визуально не открывал.node --test src/components/RealtimeTable/utils/*.test.js— 11/11.npm run build— без ошибок. Biome на изменённых файлах — 0 ошибок/предупреждений (как и на baseline).Ручная проверка (acceptance criteria, не автоматизировано)
🤖 Generated with Claude Code
Выгрузка Excel листов АХР/КВ/Операц/Структура форм 1 и 4 расходилась с экраном по нескольким независимым причинам: - FORM_4: _patch_form4_regular_columns() вызывался дважды — второй вызов стирал только что добавленные actual_rsbu_spod_q1..q3, поэтому в выгрузке были только «Факт 4 кв + СПОД», без «Факт 1/2/3 кв». Убрал второй вызов и больше не удаляю эти ключи в самом патче. - _patch_form4_actual_rsbu_spod_columns: SQL отдаёт actual_rsbu_spod только для 4 кв.; для 1-3 кв. ключ теперь q{n}.actual_quarter (как на экране), не q{n}.actual_rsbu_spod (всегда пустой). - Базовая раскладка FORM1_DEPTH_COLUMNS (отражается и в FORM_4, т.к. она из неё строится): убрал collegial.empty и группы "shift" (ключ sum, SQL не отдаёт); в q2/q3 добавил comment_correct (adj_comment) сразу после reserve_correct — раньше его не было вовсе; в q4 то же поле вынес из rev_correct в отдельный comment_correct на то же место (было в начале квартала вместе с комментарием корректировки плана). group "approved.plan" переименована из скопированного "Резерв Финансового Комитета" в "План {year}"; q4 "quarter_correct" — из ошибочного "Факт РСБУ 3 кв" в "Факт РСБУ 4 кв {year_short}". - render_column_years: добавлен плейсхолдер year_plus_2 (year+2); contract_summary получил future_y2 "Платежи в {year_plus_2} году" (раньше его не было, и FORM_4 patch всё равно дублировал его с неверным {next_year}). На экране «Операц» формы 1 такой колонки нет — для неё новая FORM1_OPER_DEPTH_COLUMNS без future_y2. - FORM4_OPER: proc_plan/proc_method после переименования уезжали в конец блока ckk (pop+переприсвоение добавляет ключ в конец словаря) — вернул порядок экрана через _reorder_children. - web/.../FORM_1/{AHR,CAP,OPER}.js: в q4 узел "Комментарий" (adj_comment, GG) шёл после "Скорректированный план" (corrected_plan, GH) — переставил перед, как в 1-3 кв. Issue: #253 (AURORA-1905, эпик AURORA-1876, Высокий приоритет) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>Checkout
From your project repository, check out a new branch and test the changes.