Фикс: задвоенное v_form2_view/v_form2_sheet_jsonb после PR #292 #295
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/294-fix-0052-duplicate-v-form2-view"
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 #294.
Что было не так
PR #292 (
fix-migrations, Илья) слил два независимо развивавшихся набора миграций0050-0053, которые обе претендовали на одни и те же номера: цепочку Фомичева (СПОД/лимиты АХР/источник строки/скрытие сателлитов — AURORA-1906/1897/1907/1887) и отдельную ветку AURORA-1850 (upd_form_cells_subtree, focus_lines-рефакторинг для частичного пересчёта поддерева), которая уже сидела вtestдо этого под теми же номерами. Слияние прошло простой конкатенацией содержимого файлов, без проверки повторных определений.Эффект: в
0052_form2_ahr_limit_period_vat_units.sqlфункцияv3.v_form2_viewопределялась ДВА раза — актуальное тело (с правками AURORA-1897/1906) и устаревшее тело из веткиupd_form_cells_subtree(4-аргументное, до любых правок Фомичева). SQL выполняется построчно, второе определение побеждает — в БД осталось тело без СПОД и с вызовом уже удалённой этой же миграцией старой 4-аргументной_form2_ahr_limit_amount. Ровно это сегодня поймал Салмин на AURORA-1897 (у принтеров/МФУ/копировальных аппаратов норматив снова не отображается — откат к поведению до фикса).Аналогичная, но не дублирующая, а расходящаяся по сигнатуре проблема была в
0054_form2_ahr_hide_satellite_rows.sql: тамv3.v_form2_sheet_jsonbосталась 3-аргументной (безp_focus_lines), в то время как реальный вызов изv_form2_viewидёт 4 позиционными аргументами — резолвился в версию из 0052, которая не знает ни про AURORA-1887 (скрытие сателлитных строк), ни про AURORA-1907 (source/is_over_limit/limit_year/over_limit_year).Что исправлено
v3.v_form2_view; AHR_LIMIT-ветка (_form2_ahr_limit_amount(period, limit_without_vat, qty),amount_year, строка «Итого») иfact_q4.spodв AHR_RENT/AHR_UTILITY/AHR_SECURITY перенесены в единственное, 4-арг. тело функции с сохранением фильтраp_focus_lines. Строка «Итого» больше не возвращается безусловно — только когдаp_focus_lines IS NULLили фокус действительно пересекается с деревом лимитов (иначе пустая дельта перестаёт быть «почти пустой»).v3.v_form2_sheet_jsonbпереведена на 4-арг. сигнатуру (сDROP FUNCTIONстарой 3-арг. перегрузки),_sort_rankдобавлен вRETURNS TABLEи в финальныйSELECT.v3.get_form2_ahr_satellite_delta— добавлен'SUB_SUB_ITEM'в список допустимыхrow_typeзаголовков; без него WS-дельта по статьям глубины 4 (принтеры/МФУ/копировальные аппараты) была пустой даже при верной остальной логике.Проверено: полный прогон миграций
0001→0054на одноразовом Postgres 16 (Docker) с нуля проходит чисто; ровно один overload наv_form2_view/v_form2_sheet_jsonb/v_form2_sheet_sectionsпосле миграции.Findings
v_form2_viewв 0052 (откат AURORA-1897/1906)049da41v_form2_sheet_jsonbв 0054 — 3-арг., вызов идёт 4-арг., резолвится в версию без AURORA-1887/1907049da41p_focus_lines049da41get_form2_ahr_satellite_deltaне включалSUB_SUB_ITEM— дельта по статьям глубины 4 пуста049da41Deferred (не трогал — не моя область, заведено #296)
Полный прогон тестов (
393 passed, 18 failed, 4 skipped, было392/19/4до фикса) поднял пачку независимых, ранее никогда не исполнявшихся находок — миграции не накатывались с головы до головы ни разу до сегодняшнего дня (коллизия номеров revision), поэтому ничего из цепочек AURORA-1850/1906/1897/1887/1907 реально не проверялось тестами. Детали — в #296.