Политика обновления из АИС

Документ Версия: 0.1 draft

Как реагируют подбор модификации и расчёт на приём данных ТС из АИС — при первой загрузке ТС и при повторном обновлении (один и тот же факт): когда группа подбора пересчитывается, когда она отбрасывается, и когда запускается расчёт.

⟨/⟩ Исходник

1. Назначение

Приём данных ТС из АИС — один факт с двумя точками запуска: первый приём (ТС только что появилось в модуле или открывается впервые после загрузки) и повторный приём (иконка «Обновить из АИС» в карточке). Обе — один и тот же контракт Приём данных из АИС ОИА ПЭО (раздел «Состав наборов»), просто с разной гранулярностью отбора и разной «предыдущей группой подбора» (при первом приёме её попросту нет). Статус загрузки возвращается этим же вызовом, не вычисляется отдельным шагом «после» (см. раздел «Статус загрузки» в Приём данных из АИС ОИА ПЭО).

Эта политика описывает, что происходит дальше в обеих точках запуска — с подбором модификации и расчётом. Это две независимые друг от друга реакции.

2. Подбор модификации

Независимо от статуса загрузки (в т. ч. когда он всё равно «Данных мало» из-за какого-то другого, не относящегося к подбору поля — например, не заполненной даты начала эксплуатации): подбору нужны только Вид ТС и Вид топлива, а не полный набор обязательных для расчёта полей. Вид ТС — техническое условие: без него у автоподбора нет базовой группы, по которой можно что-то искать (Подбор группы модификаций ТС, раздел «Базовая группа»; сама процедура сужает группу по топливу мягко, если оно известно). Вид топлива дополнительно требуется этой политикой как условие запуска — чтобы подбор не выполнялся по заведомо неполным данным, даже если алгоритм технически мог бы отработать и без него. Если Вид ТС или Вид топлива неизвестны — подбор не проводится, способ остаётся «не определён».

Когда Вид ТС и Вид топлива известны, действие зависит от того, изменились ли они относительно того, что было до этого приёма данных (сравнение по Id записи справочника, не по наименованию — наименование в АИС теоретически может быть переименовано без смены идентичности записи), и, если нет — от способа подбора (Окно подбора модификаций, правило 1 «Текущая группа»). При первом приёме данных «до этого» не было ничего — это частный случай строки «Изменились» ниже (нет прежнего значения, значит оно равносильно любому новому) и одновременно строки «подбор становится возможен впервые»:

Вид ТС / Вид топлива Способ подбора до приёма данных Действие
Не изменились (включая случай отсутствия предыдущего приёма) Эксперт (пользователь нажал «Применить») Группа и базовая норма не трогаются — это явный выбор пользователя, не зависящий от текста наименования ТС
Не изменились Авто, либо подбор становится возможен впервые (до этого Вид ТС был неизвестен, способ «не определён») Автоподбор выполняется (повторно или впервые) по актуальному наименованию ТС; способ становится «авто»
Изменились Любой Прежняя группа (если была) отбрасывается целиком; выполняется новый автоподбор по новым виду/топливу и текущему наименованию ТС; способ становится «авто»

3. Расчёт

Запускается безусловно, независимо от статуса загрузки — у методики уже есть валидаторы на каждую секцию (Валидаторы расчёта), и при нехватке обязательных данных калькулятор не падает, а штатно возвращает «Выполнен с ошибкой» с классифицированным текстом (например, «Дата начала эксплуатации не задана» — Классификатор ошибок расчёта). Видимый итоговый «Статус обработки» в этом случае всё равно показывает «Мало данных загружено» — правило 1 Политика статуса обработки ТС перекрывает внутренний статус расчёта независимо от него; то же относится и к случаю «Нет модификаций» (правило 2 той же политики) — валидатор секции fuel.base_norm вернёт свою ошибку «Базовая норма не определена» тем же путём, без отдельного исключения из безусловности.

Расчёт — чистая функция от Модель входных данных расчёта ЭНТС: если входные данные по сути не изменились, пересчёт даёт тот же результат, статус и журнал — сравнивать их заранее не нужно, отдельной проверки это не требует. Дата расчёта (Расчёт ТС) обновляется на текущую в любом случае — она показывает, когда расчёт выполнялся фактически, и не входит в «результаты расчёта, статус и журнал», которые не меняются при неизменных данных.

Связанные артефакты

Документы