Andrey Epifancev d4e1554550 Архив OpenSpec: goodwill-table и goodwill-ui (#222, #220)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 19:09:43 +04:00

68 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# goodwill-ui Specification
## Purpose
Вкладка «Гудвилл» отчёта версии (AURORA-1544): таблица гудвилла по головным организациям, режим редактирования долей и комментариев, переключатель учёта гудвилла в КФО, фильтр знака и экспорт — по контракту `../docs/dev/api-contract-goodwill.md` и DOC-259025.
## Requirements
### Requirement: Таблица гудвилла
Вкладка `goodwill` страницы отчёта версии SHALL загружать таблицу одним запросом `GET /consolidations/versions/{id}/goodwill`
(контракт `../docs/dev/api-contract-goodwill.md`) и показывать блоки по ГО в порядке ответа: строка ГО, строки ДО, строка
«Всего» блока из `groups[].totals`, внизу «Итого по листу» из `totals`. Колонки — по макету `[31-03]`: «Учет в отчете»,
«Наименование дочерней организации», «Доля владения», «Фондовые вложения головной организации», «Доля участия головной
организации в уставном капитале», «Уставный капитал», «Гудвилл (+/-)», «Комментарий». Сумма `null` SHALL показываться
прочерком, ноль — нулём в выбранных единицах; итоги фронт MUST NOT считать сам.
#### Scenario: Нулевой и нерассчитанный гудвилл
- **WHEN** у одной строки `goodwill_amount = "0.00"`, у другой `null`
- **THEN** первая показывает «0,00», вторая — «—»
#### Scenario: Строка «Нет вложений»
- **WHEN** у строки `has_investments = false`
- **THEN** строка серая, с меткой «Нет вложений», чекбокс недоступен, суммы — прочерки, сохранённые доля и комментарий видны
#### Scenario: Предупреждения
- **WHEN** у строки есть `warnings` (например, `CAPITAL_SOURCE_MISSING`)
- **THEN** рядом с названием ДО иконка предупреждения, по наведению — тексты `message`
### Requirement: Редактирование таблицы гудвилла
Кнопка «Редактировать» SHALL быть доступна при `editable = true`; иначе — недоступна с подсказкой причины
(`read_only_reason`). В режиме редактирования (баннер «Доступны для редактирования столбцы «Доля владения» и
«Комментарий».») у действующих строк доступна галочка; у отмеченной действующей строки — поля доли и комментария, P и G
строки SHALL пересчитываться предварительно по введённой доле. Доля — 0–100, не больше двух знаков, запятая или точка;
ошибочная доля MUST NOT обрезаться или подменяться, а показывается ошибкой у поля. «Сохранить» SHALL быть недоступно,
пока у отмеченной действующей строки нет корректной доли или комментария. Групповой чекбокс блока SHALL отмечать и снимать
все действующие строки блока, включая скрытые фильтром, и показывать промежуточное состояние при частичном выборе.
«Отменить изменения» SHALL возвращать последнее сохранённое состояние.
#### Scenario: Сохранение набора
- **WHEN** аналитик отметил две строки, ввёл доли «80,5» и «100» и комментарии и нажал «Сохранить»
- **THEN** уходит один `PUT …/goodwill` только с изменёнными строками; ответ заменяет таблицу, режим редактирования закрывается
#### Scenario: Снятие галочки у строки без доли
- **WHEN** аналитик снимает галочку у строки, где доля не вводилась, и сохраняет
- **THEN** строка уходит с `ownership_share: null` и сохраняется без ошибки
#### Scenario: Ошибка строки от сервера
- **WHEN** сервер отвечает 422 `COMMENT_REQUIRED` с ключом пары
- **THEN** поле комментария этой строки подсвечено ошибкой, режим редактирования не закрыт, введённое не потеряно
#### Scenario: Лишние знаки доли
- **WHEN** аналитик вводит долю «80,123»
- **THEN** у поля ошибка «Число от 0 до 100, не больше двух знаков после запятой», значение в поле не меняется, «Сохранить» недоступно
### Requirement: Переключатель, фильтр и экспорт гудвилла
Панель вкладки SHALL содержать переключатель «Учитывать гудвилл в КФО» (`PUT …/goodwill-settings`, доступен при
`editable` вне режима редактирования) с подписью суммы `goodwill_in_kfo_amount` или «Гудвилл не учитывается в КФО»;
фильтр «Гудвилл»: «Все значения», «Положительные», «Отрицательные», «Нулевые» (нерассчитанный гудвилл — только во «Все
значения»); единицы и знаки после запятой; «Настройка таблицы»; «Экспорт» — `GET …/goodwill/export` с текущим фильтром
(`sign`); «На весь экран».
#### Scenario: Экспорт с фильтром
- **WHEN** выбран фильтр «Положительные» и нажат «Экспорт»
- **THEN** запрос уходит с `sign=positive`
#### Scenario: Выключение гудвилла
- **WHEN** аналитик выключает переключатель
- **THEN** таблица перечитывается из ответа, под переключателем подпись «Гудвилл не учитывается в КФО», ручной ввод строк не меняется