I-1: сохранённая доля неактивной строки нормализуется (numeric(7,4) читается как 80.1200)
и не даёт INVALID_SHARE при null в пакете; экспорт помечает строку «Нет вложений» (сценарий
спеки); design/tasks/docstring без устаревшего «построчного» PUT, R-7/R-8.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Финальное ревью I-1: у неотмеченной строки поле доли скрыто — effectiveRow отправляет
сохранённую долю вместо неверного ввода; подсказка у «Сохранить» называет строки с ошибкой
и предупреждает о скрытых фильтром. design.md goodwill-ui: R-4…R-6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OpenSpec change goodwill-ui (таблица, редактирование, переключатель/фильтр/экспорт;
вкладка «Гудвилл» в intercompany-matrix-ui больше не заглушка; R-1…R-3). По стенду:
стрелка раскрытия блока — у названия, «Выделить все» в одну строку, текст пустой таблицы.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Тест контракта читает ../docs/dev/api-contract-goodwill.openapi.yaml (без docs — skip);
README: раздел гудвилла и коды INVALID_SHARE/DUPLICATE_ROW/MONEY_OUT_OF_RANGE;
OpenSpec goodwill-table: пакетное сохранение, доля два знака, итоги по ГО и УК,
единицы, Decisions made without discussion R-1…R-6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Суммы null — прочерк, ноль — 0,00; «Нет вложений» серым без чекбокса; предупреждения
иконкой с подсказкой; итоги «Всего» и «Итого по листу» из groups/totals ответа; в режиме
редактирования — предпросмотр P/G, проверка доли (два знака, без обрезки) и комментария,
групповой чекбокс по действующим строкам блока с indeterminate; сохранение одним пакетом
изменённых строк, ошибка 422 подсвечивает поле своей строки; переключатель «Учитывать
гудвилл в КФО»; фильтр «Нулевые»; экспорт с текущим фильтром.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Типы по schemas/goodwill.py (has_investments, warnings, nullable суммы, groups,
УК в итогах), пакетный saveGoodwillRows, экспорт с sign; utils/goodwill.ts —
parseShare (два знака, без обрезки), previewAmounts в копейках (HALF_UP, как бэк),
matchesSign (null — только «все»), changedRows (только изменённые строки).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Откатены к main правки справочников, шахматки, корректировок и types/api.ts
(обработка ошибок, Alert, удалённые комментарии) — не относятся к AURORA-1544 и
конфликтовали с #219/#221; шахматка переведена на общий фильтр единиц
components/ConsolidationFormatTableFilter; удалены тестовые MOCK_DATA; формат.
План доводки — docs/superpowers/plans/2026-11-06-goodwill-review-front.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
StatementsEngine.canonical_units — нормализация подписи единиц шаблонами пакета;
УК ДО переводится в рубли и при единицах, исправленных аналитиком вручную.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PUT …/goodwill {rows: [...]} вместо построчного PUT …/goodwill/{head}/{sub}: все строки
проверяются до записи, ошибка любой (NOT_FOUND, INVALID_SHARE, COMMENT_REQUIRED,
MONEY_OUT_OF_RANGE, DUPLICATE_ROW) несёт ключ пары и откатывает пакет; неизменённые
строки не перезаписываются и аудит не пишут (DOC-259025 §5.1 п. 4).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
participation() — единственное место формулы доли участия; totals с УК, group_totals
по ГО, GoodwillTableOut.groups; экспорт берёт «Всего» и «Итого по листу» из ответа таблицы;
доля 0–100 не больше двух знаков (DOC-259025 §5.2), ответ — два знака.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Удалены contributions/load_for_kfo и фильтры общего свода ОСВ (load_osv_rows,
build_with_members возвращены к main); OpenSpec change без требований вклада КФО.
План доводки по ревью — docs/superpowers/plans/2026-11-06-goodwill-review-back.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ревью PR #217, раунд 2:
- после записи (без «Пробного прогона») показывается та же сводка с заголовком
«Импорт завершён» и одной кнопкой «Закрыть»; список справочника обновляется сразу;
- «ГК/ЮЛ пропущено» → «без изменений»: это GK_EXISTS/LE_EXISTS, не ошибки;
- таблица «Ошибки и предупреждения»: кроме шести кодов пропуска — предупреждения
RF_CREATED и UNKNOWN_FLAG (§13.2) с тегом уровня;
- тесты issueLines.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- клиент на единый POST …/intercompany-matrix и …/export
- матрица: колонка «Итого Дт» и строка «Итого Кт» из total_debit/total_credit,
клиентское сложение убрано
- фильтр «Компании» уходит в запрос (legal_entity_ids), варианты — весь
периметр из ответа без выбора; выгрузка с тем же выбором
- результирующая таблица без строки «Итого», колонка «Итого по группе»
- change intercompany-matrix-totals-ui
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- grand_total результирующей таблицы убран из API и xlsx: аналитик 03.11 попросил
убрать итог снизу, сумма ДЗ + КЗ + ФВ + займов смысла не имеет
- total_debet переименовано в total_debit, как во всём API
- итоги матрицы квантуются до двух знаков ("0.00" и при одном ЮЛ)
- правки openspec/specs перенесены в change intercompany-matrix-totals
- README: фильтр ЮЛ и итоги
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Фронт закладывал >= 5% (R-34, из неоднозначного текста контракта
«от 5% включительно»), а API 1540 (domain/corrections.py) считает
строго больше. Приведены к факту: живой контроль окна (editorModel),
подпись фильтра «Отклонение, %», тест на границе (ровно 5.00% больше
не красный, добавлен случай 5.01%).
Реальный контракт AURORA-1540/1751 не дал единой POST .../allocations:
решение по строке разбито на PUT/DELETE .../vgo-assignments/rule
(привязка/снятие правила) и PUT .../vgo-assignments/exclude (КФО),
ответ — список VgoAssignmentOut, а не вся таблица. allocate()
маршрутизирует по action и перечитывает таблицу сама — вызывающий код
(CorrectionContent, CorrectionEditorModal) не менялся.
Фейк контракта (CORRECTIONS_MOCK) убран — API уже есть. mockData/mockCalc
остаются тестовыми фикстурами (R-27).
Проверено на реальном стенде (Русский Бисквит — 2025 К1): загрузка
таблицы, EXCLUDE/INCLUDE, ASSIGN, снятие правила, сохранение
корректировки, экспорт — без ошибок в консоли.
Нужно для DELETE .../vgo-assignments/rule (снятие правила) — API
ждёт statement_type/entry_ids в теле. Единственный прежний вызов
(files.ts, без тела) не затронут.