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);
}