Финальное ревью I-1: у неотмеченной строки поле доли скрыто — effectiveRow отправляет сохранённую долю вместо неверного ввода; подсказка у «Сохранить» называет строки с ошибкой и предупреждает о скрытых фильтром. design.md goodwill-ui: R-4…R-6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Context
Экран — по контракту ../docs/dev/api-contract-goodwill.md, DOC-259025 §4–§6 и макету [31-03], [31-03-01]. Суммы —
строки, арифметика только в копейках (utils/money.ts), чистые функции вкладки — utils/goodwill.ts с vitest.
Decisions
- Итоги «Всего» и «Итого по листу» берутся из ответа (
groups[].totals,totals), фронт их не считает. - В режиме редактирования P и G строки — предпросмотр (
previewAmounts, та же формула и округление, что на бэке). - Сохранение — один
PUT …/goodwillс изменёнными строками (changedRows); ошибка строки (422 с ключом пары) подсвечивает поле этой строки, режим не закрывается. - Переключатель
goodwill_enabledменяется вне режима редактирования, отдельным запросом.
Decisions made without discussion
Ревью arm-core #220 (06.11.2026, владелец: «давай всё сделаем сами»).
- R-1 (2026-11-06). Правки вне задачи в PR откатены к
main. Обработка ошибок в 8 файлах справочников,AlertвCatalogueJurTable, удалённые комментарии вtypes/api.ts, шахматке и корректировках. Обоснование: не относятся к AURORA-1544, давали ложный тост на незаполненной форме (validateFieldsбросает неError) и конфликтовали с #219/#221. Оставлены общий фильтр единиц иuseFullscreen(используется только вкладкой гудвилла). Цена ошибки: если правки нужны — отдельной задачей. - R-2 (2026-11-06). Итоги — только с бэка (правило владельца «агрегаты отдаёт бэк»). Цена ошибки: нет.
- R-3 (2026-11-06). Предпросмотр — только у строк; «Всего» и «Итого по листу» в режиме правки показывают сохранённое и обновляются после «Сохранить». Обоснование: агрегаты не считаем на фронте (R-2). Цена ошибки: аналитик видит итог после сохранения, а не во время ввода (DOC-259025 §5.1 п. 3 говорит «предварительные … итоги»).
- R-4 (2026-11-06).
buildTree/rowClassNameбез unit-теста. Компоненты в проекте не тестируются (web/CLAUDE.md), логика тривиальна; чистая логика вкладки (utils/goodwill.ts, в т. ч.effectiveRow) покрыта vitest. Цена ошибки: регрессия дерева видна только глазами. - R-5 (2026-11-06). Проверка на стенде — частично моками. На локальном стенде нет пар 58.01 между участниками периметра: реальный бэк ветки проверен на пустой таблице, переключателе и экспорте, насыщенные состояния и 422 — подменой ответов в Playwright. Цена ошибки: совпадение предпросмотра P/G с сервером на реальных данных подтверждено только тестами; после мержа #222 пройти один сценарий на реальной паре.
- R-6 (2026-11-06). Снятая галочка с неверной долей уходит с сохранённой долей (финальное ревью, I-1): поле доли у неотмеченной строки скрыто, неверный ввод там не исправить. Подсказка у «Сохранить» называет строки с ошибкой и предупреждает, если они скрыты фильтром. Цена ошибки: неверный ввод в скрытом поле молча отбрасывается.