Вывод зимней надбавки по климатическому району
InputModel.ClimateRegionAllowance (D_район) обязателен для расчёта, но нигде не отображается в UI. Добавлен вывод на вкладке «Сведения» орг. объекта (запись справочника зимних надбавок по субъекту) и в карточке ТС (субъект эксплуатации и применённая надбавка).
1. Источник (как есть)
По итогам аудита полноты доменной модели (сверка UI/методики с доменом): поле
InputModel.ClimateRegionAllowance (RequiredForCalc = "Да") не имеет прямого
[CalcSource] — источник не атрибут ТС, а поиск по цепочке Vehicle.OrgObject → NavEntity.Subject → WinterAllowance (справочник «Предельные значения зимних
надбавок», по субъекту РФ). Это ожидаемо и уже задокументировано в InputModel.cs.
Но ни субъект РФ эксплуатации, ни найденная запись справочника, ни сама применённая
надбавка нигде не показываются пользователю — ни на карточке ТС, ни на вкладке
«Сведения» орг. объекта. При этом у fuel.cf_climate_region уже есть классифицированная
ошибка («Субъект РФ эксплуатации не определён — неизвестна зимняя надбавка»,
DOC_NtsCalcErrors) — но диагностировать её причину в UI нечем.
2. Разбор
Решены два места вывода:
Вкладка «Сведения» орг. объекта. Там уже есть поле «Субъект РФ» (выбирается из
справочника субъектов). Под ним — найденная для этого субъекта запись
WinterAllowance: срок действия (Period), количество месяцев действия (Months),
предельная величина надбавки, % (LimitPercent). Если субъект не выбран или для него
нет записи — показывается буквальный текст ошибки классификатора (решение
пользователя: не придумывать отдельную формулировку для этого контекста — один факт,
один текст, что и в карточке ТС, и в классификаторе).
Карточка ТС, группа «Условия эксплуатации». Два новых read-only поля в начале группы (до полей ввода): «Субъект РФ эксплуатации» (найден по владельцу ТС — другой субъект, чем на вкладке орг. объекта, если ТС и владелец размещены в разных регионах) и «Поправочный коэффициент на климатический район, D_район, %» (предельная величина надбавки найденной записи). Решение пользователя: если субъект/надбавка не определены — текст ошибки показывается в ОБОИХ полях, не только в одном — оба поля одинаково свидетельствуют об одной и той же причине отказа.
3. Blast radius
3.1. Спецификация
| Документ | Правка |
|---|---|
Nts/65_Ui/NtsMainPage.cs |
раздел «Структура экрана», вкладка «Сведения» — вывод записи WinterAllowance под полем «Субъект РФ»; новые связи на DOC_WinterAllowance, DOC_NtsCalcErrors |
Nts/65_Ui/VehicleCard.cs |
группа «Условия эксплуатации» — два новых read-only поля в начале группы (таблица «Описание полей» + текстовое описание группы); новые связи на DOC_WinterAllowance, DOC_NtsCalcErrors |
3.2. Прототип
| Файл | Правка |
|---|---|
Nts/65_Ui/html/main-page.html |
блок «Зимняя надбавка» под полем «Субъект РФ» на вкладке «Сведения» |
Nts/65_Ui/html/vehicle-card.html |
два новых поля в начале группы «Условия эксплуатации» |
Ntr/65_Ui/html/shell.js |
функция поиска записи WinterAllowance по субъекту (по демо-справочнику), заполнение обоих мест вывода, обработка случая «не найдено» — текст ошибки в оба поля |
4. План
NtsMainPage.cs/VehicleCard.cs— правки спецификации (сделано).- Прототип: демо-справочник зимних надбавок по субъектам (если такого ещё нет в
nts-ref.js), функция поиска и рендера, оба места вывода. - Собрать (
dotnet build,build-html.cmd). testovich— реальным выполнением: найденная запись совпадает по нескольким субъектам; случай «субъект/запись не найдены» — текст ошибки виден в обоих местах.- Зафиксировать «Итог».
5. Acceptance criteria
- AC-1. На вкладке «Сведения» орг. объекта под полем «Субъект РФ» показана запись справочника зимних надбавок для этого субъекта (срок действия, количество месяцев, предельная величина, %), либо текст ошибки классификатора, если субъект не выбран или записи нет.
- AC-2. В карточке ТС, в начале группы «Условия эксплуатации», показаны «Субъект РФ эксплуатации» (по владельцу ТС) и «Поправочный коэффициент на климатический район, D_район, %» (предельная величина найденной записи).
- AC-3. Если субъект/запись не определены — текст ошибки показан в ОБОИХ полях карточки ТС, один и тот же буквальный текст, что и в классификаторе ошибок.
6. Итог
Выполнено полностью. Спека: NtsMainPage.cs (блок «Зимняя надбавка» на вкладке
«Сведения», с субъектом РФ первым полем группы), VehicleCard.cs (два новых поля в
«Условиях эксплуатации»). Прототип: main-page.html, vehicle-card.html,
shell.js (fillOrgCard, computeNorm, winterAllowanceByOwnerName).
По пути к закрытию нашлись и были исправлены два не связанных с замыслом CR, но
блокировавших его реальных бага прототипа: устаревшая версия ?v= у shell.js/
shell.css в <script>/<link> (браузер не подхватывал новый код без ручной
жёсткой перезагрузки) и неверный путь навигации «дерево → Реестр ТС → Сведения»,
вёдший на общую карточку ЭНТР (mes-info.html/pmes-info.html/company-info.html)
вместо инлайн-вкладки ЭНТС на main-page.html — оба зафиксированы и устранены в
shell.js по ходу расследования.
testovich (финальный прогон) реальным выполнением подтвердил все три AC и путь
навигации: AC-1 — блок виден и заполнен (МЭС Волги: 01.XI..31.III, 5 мес., 10,00 %);
AC-2 — оба поля карточки ТС заполнены корректно (Самарская область, 10,00 %);
AC-3 — при неизвестном субъекте оба поля показывают буквальный текст ошибки
классификатора (fuel.cf_climate_region). Находок нет.
Структурные связи
Использует
- Документ Классификатор ошибок расчёта ЭНТС
- Доменная сущность Предельные значения зимних надбавок
- Экран Главная страница ЭНТС
- Экран Карточка транспортного средства