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

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

using System;
using System.Collections.Generic;
using Rugrid.Sdaid.Notation.Documents;

namespace Rugrid.Sdaid.Epas.Nts.Backend.Calc
{
    /// <summary>
    /// Журнал расчёта (`CalcLog`): шаги по секциям методики. Формируется калькулятором и
    /// сохраняется в доменной сущности «Расчёт ТС».
    /// </summary>
    public class DOC_CalcLog : IDomainEntityDocument, IHasStructuralLinks, IFolder<NtsBackendFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<DOC_NtsCalc>(),
            Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleCalc>(),
        };

        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 Type Entity => typeof(CalcLog);

        public static string Steps = $"""
            ## Шаг журнала

            Шаг — `CalcLogStep`:

            - `MethodSectionId` — идентификатор секции методики (`fuel.*`, секции — {SdaidAnchors.RefTo<DOC_NtsCalc>()});
            - `RefId` — идентификатор ТС;
            - `Hint` — формула секции с подставленными значениями.

            Журнал сохраняется в {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleCalc>()} (`calc_log_json`).
            """;
    }

    /// <summary>Журнал расчёта (`CalcLog`).</summary>
    [DomainEntity]
    public class CalcLog
    {
        /// <summary>Шаги расчёта</summary>
        [DomainField(Alias = "fuel", Description = "Шаги расчёта по секциям методики")]
        public IReadOnlyList<CalcLogStep>? Fuel { get; set; }
    }

    /// <summary>Один шаг журнала расчёта (`CalcLogStep`).</summary>
    public record CalcLogStep(string MethodSectionId, string? RefId, string Hint);
}