AURORA-1938: фонд экономии считается на «Смете РФ» (FORM_2), откат FORM_4-части 0055 (#335) #336
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/335-aurora-1938-form2-transfer-econ"
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 #335. Jira: AURORA-1938 (возврат тестировщика 12.11, комментарий 10035871).
Причина
PR #262 (миграция 0055) считал перенос в фонд экономии в
v_form4_sheet_sections. Но «Смета РФ» в UI — это FORM_2 (web/src/constants/constants.jsx), FORM_4 — «Проектная деятельность»; сидv3.form_typeназывает FORM_4 «Смета РФ поддержка», отсюда ошибка. На FORM_2q*.transfer_econоставался сырым полем, «Всего» складывало пустое значение.Что сделано
Миграция
0063_form2_transfer_econ_calc(24062ed):v3.v_form2_sheet_sections(тело из 0052): фонд экономии считается по шаблонуШаблон_РФ_поддержка.xlsm(АХР_П/КВ_П/Операц: CB/DM/EV/GA), в строках и групповых итогах:«Всего» использует рассчитанный фонд и равен остатку после факта. Лист, JSON, дельты патча и выгрузка Excel читают через эту функцию.
v3._apply_form_cell(тело из 0055): записьq*.transfer_econотклоняется (computed_field) для FORM_2, а не для FORM_4.v3.v_form4_sheet_sections: откат FORM_4-части 0055 (тело из 0033) — поле снова сырое и редактируемое, как ожидает фронт FORM_4.Свод 2 (
1304be1):v3.v_svod2_rf(тело из 0057, в той же миграции 0063) отдаётq1..q4.transfer_to_economyформы 2 по той же формуле, что лист, — свод совпадает со «Сметой РФ». Свод «ГО» (FORM_1, FORM_4) не менялся. Goldensvod2_legacy_golden.jsonперегенерирован для RF: изменились толькоtransfer_to_economy(64 значения) и 5 хэшей.Фронт (
9c88711):isComputedColumn/isCellEditableпринимаютformType; на FORM_2q1..q4.transfer_econне редактируется (FORM_4 без изменений).Проверка
api/tests/integration/test_form2_transfer_econ.py(14 кейсов: АХР/КВ/Операц, второй сценарий, групповые строки, запрет записи, Свод 2 — совпадение с листом и независимость от сырого поля) — красные до миграции, зелёные после;test_form4_transfer_econ.pyпереписан на регрессию отката.cellEditability.test.js15/15.Важно при мерже
R-1: номер
0063,down_revision = "0059"— номера 0060–0062 заняты открытыми #315/#323/#331. При мерже перецепитьdown_revisionна последнюю влитую миграцию. Открытые PR эти функции (включаяv_svod2_rf) не пересоздают — затирания тел нет.Rulings I made
.get(): API не отдаёт null-ключи в INPUT-строках.formTypeпараметром в общиеisComputedColumn/isCellEditable(глобальный список сломал бы FORM_4).redColumnу колонки фонда не менялся: редактируемость определяетсяcellEditability.js, не цветом.v_svod2_rfформула фонда повторена, а не вызвана изv_form2_sheet_sections(тяжёлая plpgsql-функция по листу, не годится для постраничного свода). При изменении формулы листа менять и здесь.transfer_to_economy: 0(как на листе), раньше объект квартала был пустым.Согласовано с человеком: Свод 2 чинить в этом же PR; вычитать сумму подколонок переноса (как в шаблоне BT=SUM(BU:BW)), сырое
transfer_to_qNи план следующего квартала не трогать; FORM_4-часть 0055 откатить.Findings
24062ed.get()в тестах FORM_224062ed24062edformTypeв cellEditability9c887119c88711v_svod2_rf1304be11304be11304be1transfer_to_economyFORM_2 — разошёлся бы с листом1304be1target_changeв план квартала, строки — нет (старое расхождение)svod2_linesвыводит строку при ненулевом сыромtransfer_to_economy— возможны «пустые» строки FORM_2 со старым значениемtransfer_to_economyFORM_2 остаются в БД (нигде не видны), без очистки7f18b0a(down_revision 0062; функции 0063 в 0060–0062 не пересоздаются; backend 1054 / 10 известных, фронт 264/264)transfer_to_qN(«Перенос в следующий квартал», итог) хранится отдельно от подколонок, хотя в шаблоне = их сумма; план следующего квартала строится из него — расхождение с шаблоном в�� втором сценарии тестировщикаВнимание ревьюерам: бэк — формулы групповых строк и откат FORM_4 (Цыганков); фронт — проброс
formTypeвRealtimeTable.jsx/tableColumns.jsx(Потапова).🤖 Generated with Claude Code