Конфликты Svod2Page.jsx: сохранены окно страниц, заглушки и фасеты PR; добавлены
factor/formatHeaderUnit (AURORA-1899/1900). Измерение высоты строки по offsetHeight
заменено фиксированной высотой 2.75rem (AURORA-1836): px считается из rem без чтения layout,
заглушки получают высоту в rem.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликты summary.py, summary_repository.py, summary_service.py,
test_summary2_related_records_sql.py: сохранены новые методы страниц и фасетов,
режим без параметров идёт по быстрому JSON-пути test (AURORA-1848).
Миграция переименована в 0057 (down_revision 0056); в svod2_lines добавлена
поправка 0050 (СПОД аренды, только ГО). Эталон svod2_legacy_golden перезаписан
под ответ без null-полей; legacy_full оракулов строится прямым вызовом функции.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
R-4 (решение пользователя 08.11). В миграцию 0056 добавлен v3.add_budget_line:
тело = 0051_form2_ahr_satellite_new_line + только created_by = current_user_id() в
двух INSERT (обычная строка и заготовка записи сателлита). Авто-зеркальные строки
sync (_ensure_form2_ahr_*_sync_line) остаются с NULL. Backfill не делается.
del_budget_line: NULL-автор -> удаляет только ADMIN (комментарий в SQL + тесты).
xfail-тест владельца снят; добавлены тесты NULL-автора (исполнитель 403, ADMIN 200).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликты (EditCell.jsx, RealtimeTable.jsx, formulaUtils.test.js):
- EditCell: сохранены правки 1891 (editorInitialInput, Esc/Tab/Enter,
возврат фокуса) и 1892 (warnIfNegativeNotAllowed); поверх них
повторена логика 1895: формула из localStorage подставляется только
если совпадает с текущим значением, иначе stale и удаляется.
- Сохранённая формула не подставляется, если редактор открыт набором
символа (getEditorInitialInput) и не затирает набранный текст при
изменении value другим пользователем (разрешение один раз при открытии).
- Tab/Enter помечают следующую ячейку (openNextEditableCell) только после
фактического закрытия редактора: при невычисляемой формуле он остаётся
открытым и не оставляет висящую цель перехода.
- formulaUtils.js: единственный isSameCellValue из test (с нормализацией
разделителей); дубль из ветки удалён.
- formulaUtils.test.js: тесты обеих сторон.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликты Svod2Page.jsx: сохранены виртуализация колонок и CSS-классы PR,
добавлены factor/formatHeaderUnit/meta.money (AURORA-1899/1900) и фиксированная
высота строки 2.75rem (AURORA-1836). Высота строки и overflow перенесены в
SVOD2_TABLE_CONTAINER_SX (статичное CSS-правило вместо sx на ячейку).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликт SummaryTable.jsx: взята структура test (getDisplayFactor, meta.money,
formatHeaderUnit), formatSummaryAmount переведён с делителя на множитель и
подключён в новый scaleColumns; тест summaryFormat обновлён.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Миграция 0050_budget_line_delete_owner_guard -> 0056 (down 0055, стек поверх 0055 AURORA-1938).
Тело v3.del_budget_line = актуальное тело из 0053_form2_ahr_source_sheet (AURORA-1907:
запрет удаления АХР-строк с source_sheet IS NOT NULL, ручные удаляются) + только owner-guard;
раньше копия опиралась на 0040 и откатывала 1907.
Тесты: доступ к форме id=1 даёт отдельная пара исполнителей isp2/isp3 (isp1 больше не
добавляется в org 1 — это ломало тесты «исполнитель из чужой организации»); окно фазы
DFIP в фикстуре продлено (истекло 2026-06-06, add_line возвращал 403); маркер
internal_order не приходит в INPUT-строке add_line — берём единственную INPUT-строку;
добавлен тест 1907 (строка из сателлита не удаляется напрямую). Тест «владелец удаляет свою
строку» помечен xfail(strict): add_budget_line не заполняет budget_line.created_by (O-1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликт export_service.py: «Операц» формы 1 берёт FORM1_OPER_DEPTH_COLUMNS (без «Платежи в year+2»),
остальные листы — кортеж (колонки, цвета, extra, нормализатор) из #259.
Тест test_export_form2_mapping сравнивает Операц Ф.1 с FORM1_OPER_DEPTH_COLUMNS.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- конфликт export_service.py: кортеж writer_configs расширен до (колонки, цвета, extra, нормализатор);
FORM_2 использует свой нормализатор и extra {unit}
- АХР формы 2: отдельное дерево FORM2_AHR_DEPTH_COLUMNS с колонками «В пределах лимита, год» и
«Сверх лимита, год» (AURORA-1907), как на экране
- заголовок группы «Планирование годовых показателей, {unit} (без НДС)» как на экране (AURORA-1900)
- тесты test_export_form2_mapping.py обновлены
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфликт в api/tests/integration/test_form_phases_api_smoke.py: оставлены
оба набора тестов (тесты фильтра по роли и 404 из этого PR и тест
aware-дат из test).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Миграция 0050_form4_transfer_econ_calc -> 0055 (down 0054): номер 0050 занят
на test. Тело v3._apply_form_cell = актуальное тело из 0050_form2_ahr_spod_column
+ только дельта AURORA-1938 (запрет ручной записи FORM_4 q*.transfer_econ);
раньше копия опиралась на 0023 и откатывала СПОД. v_form4_sheet_sections
после 0033 на test не менялась — тело без изменений. Добавлен тест на сохранение
обеих правок в итоговом определении функции.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Группа «В тыс. рублей» удалена, как и задумано в AURORA-1901; правка заголовка
из AURORA-1900 к удалённой группе не применяется.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR #292 слил два независимо развивавшихся набора миграций 0050-0053
(цепочка Фомичева и ветка AURORA-1850/upd_form_cells_subtree) простой
конкатенацией SQL. Для 0052 это дало ВТОРОЕ, более старое определение
v3.v_form2_view (без СПОД и без правок лимитов AURORA-1897/1906) ниже
первого в том же файле — оно и остаётся финальным телом функции.
Аналогичная проблема в 0054: v3.v_form2_sheet_jsonb там 3-аргументная,
без p_focus_lines, поэтому реальный вызов из v_form2_view (4 аргумента)
резолвился в версию из 0052 без AURORA-1887/1907.
- 0052: убрано второе определение v_form2_view; AHR_LIMIT-ветка и
fact_q4.spod в AHR_RENT/AHR_UTILITY/AHR_SECURITY перенесены в
единственное (4-арг.) тело функции; строка «Итого» теперь не
возвращается при непустом p_focus_lines без совпадений (пустая
дельта остаётся пустой).
- 0054: v_form2_sheet_jsonb переведена на 4-арг. сигнатуру с DROP
старой 3-арг. перегрузки.
- 0053: get_form2_ahr_satellite_delta — добавлен SUB_SUB_ITEM в список
заголовков (без него дельта по статьям глубины 4 пуста).
Closes issue #294.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>