fix(form2): дельта АХР пуста для статей глубины 4 после правки лимита (AURORA-1850, часть #296) #301

Merged
aep merged 1 commits from feat/296-ahr-delta-depth4 into test 2026-11-08 17:11:14 +03:00
Owner

Часть follow-up #296 («Реальный баг в get_form2_ahr_satellite_delta»). Возврат тестирования AURORA-1850 от 05.11: изменение количества принтеров на «АХР Лимиты» не обновляет сумму в уже открытом АХР до перезагрузки.

Причина. 0053 пересоздала v3.get_form2_ahr_satellite_delta по телу из 0031 с матчером ei.depth = 3 AND (item_id = code OR num_group_id = code) — откат правки 0037. Лимиты, чей код совпадает с num_group_id статьи глубины 4 (принтеры / МФУ / копировальные аппараты), не попадали в target_lines, дельта была пустой. PR #295 добавил SUB_SUB_ITEM в заголовки — необходимо, но без матчера недостаточно.

Правка. Миграция 0058_form2_ahr_delta_depth4: функция пересоздана с матчером 0037 (ei.depth = 3 AND ei.item_id = lt.expense_item_code) OR ei.num_group_id = lt.expense_item_code (как в остальных функциях синхронизации 0052/0053); остальное тело — из 0053 без изменений. После 0053 функцию никто не переопределял (0054–0057 проверены).

test_ahr_delta_keeps_0037_num_group_matching ждал в дельте INPUT-строку, которую AURORA-1887 скрыл на листе AHR, — теперь проверяет заголовок SUB_SUB_ITEM статьи глубины 4. Проверка исходника функции на старый матчер оставлена.

Проверка.

  • Чистая БД (--init_db), набор test_upd_form_cells_subtree, _0037_guard, test_form2_ahr_satellite_integration, _spod_integration, test_form2_ahr_limit: на test — 15 failed / 79 passed; с правкой — 13 failed / 81 passed. Исправлены ровно test_ahr_delta_includes_sub_sub_item_for_depth4_limit и test_ahr_delta_keeps_0037_num_group_matching; новых падений нет. Оставшиеся 13 — известные из #296 (6× test_form2_ahr_limit чинит PR #299; SPOD ×3; jit; v_form_view в дельте; test_ahr_delta_matches_get_after_rent_edit; test_v_form2_view_keeps_0037_limit_formula).
  • В браузере, сценарий тестировщика: «АХР» и «АХР Лимиты» формы 2 в двух вкладках, количество «принтеры» в I кв. 8 → 12 через UI: в лимитах 15 532,5 руб., в открытом АХР статья «ТО/экспл оргтехника» обновилась 10,4 → 15,5 тыс. руб. без перезагрузки.

Не входит. Порог времени правки 50 мс из AURORA-1850 (замер тестировщика — 190 мс на FORM_2/AHR 1156 строк) — отдельное решение.

🤖 Generated with Claude Code

Часть follow-up #296 («Реальный баг в get_form2_ahr_satellite_delta»). Возврат тестирования AURORA-1850 от 05.11: изменение количества принтеров на «АХР Лимиты» не обновляет сумму в уже открытом АХР до перезагрузки. **Причина.** 0053 пересоздала `v3.get_form2_ahr_satellite_delta` по телу из 0031 с матчером `ei.depth = 3 AND (item_id = code OR num_group_id = code)` — откат правки 0037. Лимиты, чей код совпадает с `num_group_id` статьи глубины 4 (принтеры / МФУ / копировальные аппараты), не попадали в `target_lines`, дельта была пустой. PR #295 добавил `SUB_SUB_ITEM` в заголовки — необходимо, но без матчера недостаточно. **Правка.** Миграция `0058_form2_ahr_delta_depth4`: функция пересоздана с матчером 0037 `(ei.depth = 3 AND ei.item_id = lt.expense_item_code) OR ei.num_group_id = lt.expense_item_code` (как в остальных функциях синхронизации 0052/0053); остальное тело — из 0053 без изменений. После 0053 функцию никто не переопределял (0054–0057 проверены). `test_ahr_delta_keeps_0037_num_group_matching` ждал в дельте INPUT-строку, которую AURORA-1887 скрыл на листе AHR, — теперь проверяет заголовок `SUB_SUB_ITEM` статьи глубины 4. Проверка исходника функции на старый матчер оставлена. **Проверка.** - Чистая БД (`--init_db`), набор `test_upd_form_cells_subtree`, `_0037_guard`, `test_form2_ahr_satellite_integration`, `_spod_integration`, `test_form2_ahr_limit`: на `test` — 15 failed / 79 passed; с правкой — 13 failed / 81 passed. Исправлены ровно `test_ahr_delta_includes_sub_sub_item_for_depth4_limit` и `test_ahr_delta_keeps_0037_num_group_matching`; новых падений нет. Оставшиеся 13 — известные из #296 (6× `test_form2_ahr_limit` чинит PR #299; SPOD ×3; jit; `v_form_view` в дельте; `test_ahr_delta_matches_get_after_rent_edit`; `test_v_form2_view_keeps_0037_limit_formula`). - В браузере, сценарий тестировщика: «АХР» и «АХР Лимиты» формы 2 в двух вкладках, количество «принтеры» в I кв. 8 → 12 через UI: в лимитах 15 532,5 руб., в открытом АХР статья «ТО/экспл оргтехника» обновилась 10,4 → 15,5 тыс. руб. без перезагрузки. **Не входит.** Порог времени правки 50 мс из AURORA-1850 (замер тестировщика — 190 мс на FORM_2/AHR 1156 строк) — отдельное решение. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-11-08 16:24:43 +03:00
0053 пересоздала v3.get_form2_ahr_satellite_delta по телу из 0031 с
сопоставлением лимитного шаблона «ei.depth = 3 AND (item_id OR
num_group_id)» и откатила правку 0037. Лимиты с кодом num_group_id статьи
глубины 4 (принтеры / МФУ / копиры) не попадали в target_lines, дельта
была пустой, и открытый АХР не обновлял сумму до перезагрузки.

Миграция 0058 пересоздаёт функцию с матчером 0037
((depth = 3 AND item_id = code) OR num_group_id = code); остальное тело —
как в 0053.

Тест-защита 0037 ждал в дельте INPUT-строку, которую AURORA-1887 скрыл на
листе AHR, — теперь проверяет заголовок SUB_SUB_ITEM статьи глубины 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit bf449c5754 into test 2026-11-08 17:11:14 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/DFiP_Budget_planing#301
No description provided.