⟨/⟩ Nts/55_Backend/Calc/CalcErrorsClassifier.cs

70 строк · в начало

using Rugrid.Sdaid.Notation.Documents;

namespace Rugrid.Sdaid.Epas.Nts.Backend.Calc
{
    /// <summary>
    /// Классификатор ошибок валидации расчёта нормативного расхода. Единый источник кодов, условий и
    /// текстов: на коды ссылается реализация расчёта (`Nts.Calc`); тексты описываются здесь, в других
    /// местах не дублируются. Код ошибки — категория правила (`ValidationRuleCode`).
    /// </summary>
    public class DOC_NtsCalcErrors : ISdaidDocument, IHasStructuralLinks, IFolder<NtsBackendFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<DOC_NtsCalc>(),
            Rel.Uses<DOC_CalcValidators>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>(),
        };

        public static string _refName = "Классификатор ошибок расчёта";

        public string Name => "Классификатор ошибок расчёта ЭНТС";

        public string Description =>
            @"Ошибки валидации исходных данных расчёта нормативного расхода: коды-категории, условия возникновения и тексты для пользователя.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string Body = $"""
        ## Ошибки

        Код ошибки — категория правила (`ValidationRuleCode`, см. {SdaidAnchors.RefTo<DOC_CalcValidators>()}).

        | Код | Секция методики | Условие | Текст |
        |---|---|---|---|
        | `required` | `fuel.category_by_kind` | Вид ТС не указан | Вид ТС не определён |
        | `required` | `fuel.category_by_kind` | Вид ТС указан, но методика для него не определена | Методика не определена |
        | `empty_collection` | `fuel.base_norm` | Список базовых норм пуст | Базовая норма не определена |
        | `out_of_range` | `fuel.base_norm` | Базовая норма ≤ 0 | Базовая норма каждой отобранной модификации должна быть > 0 |
        | `out_of_range` | `fuel.mileage` | Пробег передан и ≤ 0 | Переданный пробег должен быть положительным |
        | `required` | `fuel.cf_operation_years` | Дата начала эксплуатации не задана | Дата начала эксплуатации не задана |
        | `required` | `fuel.cf_operation_years` | Отчётная дата не задана | Отчётная дата не задана |
        | `inconsistent` | `fuel.cf_operation_years` | Дата начала ≥ отчётной даты | Дата начала эксплуатации должна быть раньше отчётной даты |
        | `required` | `fuel.cf_climate_region` | Надбавка по субъекту РФ не задана | Субъект РФ эксплуатации не определён — неизвестна зимняя надбавка |
        | `out_of_range` | `fuel.cf_climate_region` | Предельная величина зимней надбавки < 0 | Предельная величина зимней надбавки не может быть отрицательной |
        | `out_of_range` | `fuel.correction_factor_winter` | Ручная надбавка < 0 | Ручные надбавки не могут быть отрицательными |
        | `out_of_range` | `fuel.correction_factor_summer` | Ручная надбавка < 0 | Ручные надбавки не могут быть отрицательными |
        | `required` | `fuel.h_transport` | Вид топлива не задан или не определён | Вид топлива не задан или не определён (нужен бензин или дизельное топливо) |
        | `required` | `fuel.h_trailer` | Вид топлива не задан или не определён | Вид топлива не задан или не определён (нужен бензин или дизельное топливо) |
        | `out_of_range` | `fuel.g_cargo` | Грузоподъёмность < 0 | Грузоподъёмность не может быть отрицательной |
        | `out_of_range` | `fuel.q_trailer` | Масса прицепа < 0 | Масса прицепа не может быть отрицательной |
        | `out_of_range` | `fuel.q_trips` | Количество ездок с грузом < 0 | Количество ездок с грузом не может быть отрицательным |
        | `out_of_range` | `fuel.q_equipment` | Норма на работу отопителя < 0 | Норма расхода на работу отопителя не может быть отрицательной |
        | `out_of_range` | `fuel.q_equipment` | Время работы отопителя < 0 | Время работы отопителя не может быть отрицательным |
        | `out_of_range` | `fuel.h_sanc` | Норма на транспортную работу < 0 | Норма расхода на транспортную работу не может быть отрицательной |
        | `out_of_range` | `fuel.h_sanc` | Собственная масса прицепа < 0 | Собственная масса прицепа не может быть отрицательной |
        | `out_of_range` | `fuel.h_sanc` | Грузоподъёмность < 0 | Грузоподъёмность не может быть отрицательной |
        | `out_of_range` | `fuel.h_special_equipment` | Норма на час работы (летняя/зимняя) < 0 | Норма расхода топлива на работу специального оборудования не может быть отрицательной |
        | `out_of_range` | `fuel.special_correction_factor_winter` | Надбавка при работе специальных автомобилей < 0 | Поправочный коэффициент при работе специальных автомобилей не может быть отрицательным |
        | `out_of_range` | `fuel.special_correction_factor_summer` | Надбавка при работе специальных автомобилей < 0 | Поправочный коэффициент при работе специальных автомобилей не может быть отрицательным |

        ## Статусы

        Результат калькулятора — в справочнике {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>()};
        расчёт выполняется для всех загруженных ТС.
        """;
    }
}