AURORA-1892: доработка по сверке с исходным перечнем 02.11.2026 #293

Merged
aep merged 5 commits from feat/276-aurora-1892-negative-amounts into test 2026-11-08 17:12:37 +03:00
Owner

Follow-up к #278 (смержен в test). Закрывает часть пунктов #276 по итогам полной сверки исходного перечня Салмина (И1), Word (И2) и кода — отчёт AURORA-1892_сверка_исходник_Word_2026-11-02.md, раздел 12.1.

Что сделано

  • validation.js: добавлены колонки, пропущенные в первой реализации (разделы 5/6.1 сверки) — approved.*, collegial.approved, ckk.*, contract_detail.* (включая amount_foreign), corrected_plan, pay_ho/pay_rf, booking, rem_actual/residual_after_actual, qN.total, new_plan, data.qN.economy.
  • transfer_econ (форма 2) — отдельно добавлен как явное исключение из общего префикса transfer_*: перечень Салмина прямо требует контроль минуса для этих колонок (раздел 6.3 сверки), это противоречит формулировке Word про допустимость минуса у всех transfer_*. Решили в пользу прямого числового требования заказчика — мягкий запрет (тост, без блокировки сохранения), поэтому риск низкий, но стоит подтвердить с заказчиком отдельно.
  • FORM_1/OPER.js, AHR.js, CAP.js: перестановка колонок Q4 — «Комментарий» теперь перед «Скорректированный план 4 кв.» во всех пяти таблицах (раздел 8 сверки). Меняется только порядок блоков в columns, columnLetter и accessorKey не трогались.
  • validationUtils.test.js: тест на исключённые префиксы обновлён под carve-out transfer_econ; добавлены тесты на отсутствие дублей и на наличие конкретных ключей из сверки (включая Д-статус rem_booking/residual_after_booking, которые не дублируются — уже покрыты правилом remaining-booking).

Rulings I made

  • R-1: transfer_econ формы 2 добавлен в nonNegativeColumnKeys, несмотря на то, что Word и предыдущая реализация явно исключали все transfer_*. Обоснование: числовой перечень Салмина (И1) явно называет эти колонки (75/107/137/163), это более точный источник требования, чем общая формулировка Word про корректировки. Правило мягкое (не блокирует сохранение), поэтому откат дешёвый, если заказчик не подтвердит.
  • R-2: data.qN.economy (форма 1, аналог transfer_econ) добавлен без отдельной оговорки — он не входит в текущий список исключённых префиксов (adj_*, base_correction, revision_*, seq_*, target_change, transfer_*), так что это обычный пропуск, а не противоречие.
  • R-3: К��нтроль месячного факта/СПОД, факт расшифровочных листов сверх плановых колонок и область действия правила для формы 4 не трогались — это открытые вопросы (раздел 12.2 сверки), которые нужно согласовать с заказчиком отдельно, а не решать кодом по умолчанию.

Что осталось (не в этом PR)

  • Решение по разделу 12.2 сверки (форма 4, месячный факт, расшифровочные листы) — вопрос сформулирован для заказчика отдельно.
  • ДР7: обновление самого Word-документа под согласованный перечень — не код, отдельная задача.
  • Пересопоставление номеров АХР формы 2 (+2 из-за limit_year/over_limit_year) — уже учтено тем, что контроль идёт по кодовым именам полей, а не по номерам, отдельного изменения не требовалось.

Closes part of #276 (issue остаётся открытой до решения по разделу 12.2).

🤖 Generated with Claude Code

Follow-up к #278 (смержен в test). Закрывает часть пунктов #276 по итогам полной сверки исходного перечня Салмина (И1), Word (И2) и кода — отчёт `AURORA-1892_сверка_исходник_Word_2026-11-02.md`, раздел 12.1. ## Что сделано - **validation.js**: добавлены колонки, пропущенные в первой реализации (разделы 5/6.1 сверки) — `approved.*`, `collegial.approved`, `ckk.*`, `contract_detail.*` (включая `amount_foreign`), `corrected_plan`, `pay_ho`/`pay_rf`, `booking`, `rem_actual`/`residual_after_actual`, `qN.total`, `new_plan`, `data.qN.economy`. - **transfer_econ (форма 2)** — отдельно добавлен как явное исключение из общего префикса `transfer_*`: перечень Салмина прямо требует контроль минуса для этих колонок (раздел 6.3 сверки), это противоречит формулировке Word про допустимость минуса у всех `transfer_*`. Решили в пользу прямого числового требования заказчика — мягкий запрет (тост, без блокировки сохранения), поэтому риск низкий, но стоит подтвердить с заказчиком отдельно. - **FORM_1/OPER.js, AHR.js, CAP.js**: перестановка колонок Q4 — «Комментарий» теперь перед «Скорректированный план 4 кв.» во всех пяти таблицах (раздел 8 сверки). Меняется только порядок блоков в `columns`, `columnLetter` и `accessorKey` не трогались. - **validationUtils.test.js**: тест на исключённые префиксы обновлён под carve-out `transfer_econ`; добавлены тесты на отсутствие дублей и на наличие конкретных ключей из сверки (включая Д-статус `rem_booking`/`residual_after_booking`, которые не дублируются — уже покрыты правилом `remaining-booking`). ## Rulings I made - R-1: `transfer_econ` формы 2 добавлен в `nonNegativeColumnKeys`, несмотря на то, что Word и предыдущая реализация явно исключали все `transfer_*`. Обоснование: числовой перечень Салмина (И1) явно называет эти колонки (75/107/137/163), это более точный источник требования, чем общая формулировка Word про корректировки. Правило мягкое (не блокирует сохранение), поэтому откат дешёвый, если заказчик не подтвердит. - R-2: `data.qN.economy` (форма 1, аналог `transfer_econ`) добавлен без отдельной оговорки — он не входит в текущий список исключённых префиксов (`adj_*`, `base_correction`, `revision_*`, `seq_*`, `target_change`, `transfer_*`), так что это обычный пропуск, а не противоречие. - R-3: К��нтроль месячного факта/СПОД, факт расшифровочных листов сверх плановых колонок и область действия правила для формы 4 **не трогались** — это открытые вопросы (раздел 12.2 сверки), которые нужно согласовать с заказчиком отдельно, а не решать кодом по умолчанию. ## Что осталось (не в этом PR) - Решение по разделу 12.2 сверки (форма 4, месячный факт, расшифровочные листы) — вопрос сформулирован для заказчика отдельно. - ДР7: обновление самого Word-документа под согласованный перечень — не код, отдельная задача. - Пересопоставление номеров АХР формы 2 (+2 из-за `limit_year`/`over_limit_year`) — уже учтено тем, что контроль идёт по кодовым именам полей, а не по номерам, отдельного изменения не требовалось. Closes part of #276 (issue остаётся открытой до решения по разделу 12.2). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-11-03 13:39:09 +03:00
validation.js: добавлены колонки, пропущенные в первой реализации (разделы 5/6.1
сверки) — approved.*, collegial.approved, ckk.*, contract_detail.* (включая
amount_foreign), corrected_plan, pay_ho/pay_rf, booking, rem_actual/
residual_after_actual, qN.total, new_plan, data.qN.economy. Отдельно добавлен
transfer_econ формы 2 — явное исключение из общего префикса transfer_*, так как
перечень Салмина прямо требует контроль минуса для этих колонок (раздел 6.3,
противоречие с Word). Тест validationUtils.test.js обновлён под это исключение
и дополнен проверкой полноты перечня и отсутствия дублей с remaining-booking.

FORM_1/OPER.js, AHR.js, CAP.js: перестановка колонок Q4 — «Комментарий» теперь
перед «Скорректированный план 4 кв.» во всех пяти таблицах (раздел 8 сверки).

Не включено (требует отдельного решения заказчика, раздел 12.2 сверки):
контроль месячного факта/СПОД, контроль факта расшифровочных листов сверх
плановых колонок, область действия правила для формы 4.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
aep added 1 commit 2026-11-03 13:43:56 +03:00
# Conflicts:
#	web/src/components/RealtimeTable/constants/FORM_1/AHR.js
#	web/src/components/RealtimeTable/constants/FORM_1/CAP.js
#	web/src/components/RealtimeTable/constants/FORM_1/OPER.js
#	web/src/components/RealtimeTable/utils/validationUtils.test.js
aep added 2 commits 2026-11-08 16:09:42 +03:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Возврат тестирования 06.11, критерий «любое отрицательное число выделено
цветом»: NOT_EDITABLE_INPUT_STYLES (AURORA-1890) разворачивался после цвета
текста и перекрашивал минус в серый #5F6B7A — в расчётных колонках вне
перечня отрицательные значения оставались серыми. Цвет текста теперь
решает resolveCellTextColor (utils/cellTextColor.js, с тестами): минус —
красный всегда, серый — только для неотрицательных значений.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Доработка по возврату тестирования 06.11 (AURORA-1892)

Отчёт Салмина (вложение в Jira, 503 позиции, 327 расхождений) сверен по каждой колонке: номер колонки на UI → ключ колонки (getAllLeafColumns, снято с запущенного приложения на текущем test) → правило non-negative.

Итог сверки:

  • Салмин проверял test без этого PR — в правиле там 60 ключей, здесь 119.
  • Все 327 расхождений — колонки, которых нет в списке на test и которые уже есть в списке этого PR. Колонок, которых не хватает и здесь, не найдено. Все 134 «соответствует» тоже в списке.
  • На форме 2 после 06.11 раскладка сдвинулась на одну колонку (номера отчёта − 1); с этой поправкой совпадает каждая строка отчёта.
  • 8 «не подтверждено» — расчётная бронь data.qN.booking формы 2 (Операц/КВ) оставалась пустой; ключи в списке есть.

Новое в ветке:

  • 5690b75 — merge origin/test (без конфликтов; перестановка колонок IV кв. формы 1 из этого PR уже пришла в test через AURORA-1905).
  • 20f1bed — минус красный и в нередактируемых ячейках строки ввода: серый цвет AURORA-1890 (NOT_EDITABLE_INPUT_STYLES) перекрывал красный, поэтому в расчётных колонках вне перечня минус был серым (критерий «любое отрицательное число выделено цветом»). resolveCellTextColor + 4 теста.

Проверка: node --test src/components/RealtimeTable/utils/*.test.js — 158 passed; biome по изменённым файлам чисто. В браузере (форма 1 «Операц», строка ввода с −100 в плане и −50 в факте 1-го месяца): утверждённый план, скорректированный план, остаток после факта, итог, экономия — красный текст, красная рамка 2px, фон ошибки; факт за квартал (вне перечня, расчётный) — красный текст #C62828.

Зависимость: шаблоны {year}/{year:short}/{unit} в тосте и в «Контроле ошибок» убирает PR #300 (AURORA-1893) — getColumnTitle берёт пути заголовков оттуда. Мержить #300 раньше этого PR.

Не входит (отдельно): дробное количество на «АХР Лимиты» сервер отклоняет технической ошибкой преобразования в integer (п. 4 ограничений отчёта) — бэкенд, отдельная задача. 4 открытых вопроса заказчику из описания PR остаются в силе.

## Доработка по возврату тестирования 06.11 (AURORA-1892) Отчёт Салмина (вложение в Jira, 503 позиции, 327 расхождений) сверен по каждой колонке: номер колонки на UI → ключ колонки (`getAllLeafColumns`, снято с запущенного приложения на текущем `test`) → правило `non-negative`. **Итог сверки:** - Салмин проверял `test` без этого PR — в правиле там 60 ключей, здесь 119. - **Все 327 расхождений — колонки, которых нет в списке на `test` и которые уже есть в списке этого PR.** Колонок, которых не хватает и здесь, не найдено. Все 134 «соответствует» тоже в списке. - На форме 2 после 06.11 раскладка сдвинулась на одну колонку (номера отчёта − 1); с этой поправкой совпадает каждая строка отчёта. - 8 «не подтверждено» — расчётная бронь `data.qN.booking` формы 2 (Операц/КВ) оставалась пустой; ключи в списке есть. **Новое в ветке:** - `5690b75` — merge `origin/test` (без конфликтов; перестановка колонок IV кв. формы 1 из этого PR уже пришла в test через AURORA-1905). - `20f1bed` — минус красный и в нередактируемых ячейках строки ввода: серый цвет AURORA-1890 (`NOT_EDITABLE_INPUT_STYLES`) перекрывал красный, поэтому в расчётных колонках вне перечня минус был серым (критерий «любое отрицательное число выделено цветом»). `resolveCellTextColor` + 4 теста. **Проверка:** `node --test src/components/RealtimeTable/utils/*.test.js` — 158 passed; biome по изменённым файлам чисто. В браузере (форма 1 «Операц», строка ввода с −100 в плане и −50 в факте 1-го месяца): утверждённый план, скорректированный план, остаток после факта, итог, экономия — красный текст, красная рамка 2px, фон ошибки; факт за квартал (вне перечня, расчётный) — красный текст `#C62828`. **Зависимость:** шаблоны `{year}/{year:short}/{unit}` в тосте и в «Контроле ошибок» убирает PR #300 (AURORA-1893) — `getColumnTitle` берёт пути заголовков оттуда. Мержить #300 раньше этого PR. **Не входит (отдельно):** дробное количество на «АХР Лимиты» сервер отклоняет технической ошибкой преобразования в integer (п. 4 ограничений отчёта) — бэкенд, отдельная задача. 4 открытых вопроса заказчику из описания PR остаются в силе.
aep added 1 commit 2026-11-08 17:12:27 +03:00
aep merged commit 244c03ac14 into test 2026-11-08 17:12:37 +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#293
No description provided.