using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Nts.Epics.NtsFuelCalc.UseCases
{
/// <summary>
/// Администратор модуля создаёт недостающую запись справочника «Марка, модель и
/// модификация ТС» из карточки ТС, у которого статус подбора модификации — «Не определена».
/// </summary>
public class UC_CreateVehicleModification : IUseCaseDocument, IHasStructuralLinks, IFolder<NtsEpicsFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Realizes<EPIC_NtsFuelCalc>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Ui.DOC_VehicleCard>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Ui.DOC_ModificationSelectionModal>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Ui.DOC_VehicleModificationCard>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Ui.DOC_VehicleModificationRegistry>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_Vehicle>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleModification>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_ProcessingStatusPolicy>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationNameRecognition>(),
};
public static string _refName = "Создание модификации ТС из карточки ТС";
public string Name => "Создание модификации ТС из карточки ТС";
public string Description =>
"Администратор модуля создаёт недостающую запись справочника «Марка, модель и модификация ТС», перейдя из карточки ТС, для которого в справочнике нет модификации с нормой.";
public string PrimaryActor => "Администратор модуля";
public static string Intro = $"""
## Цель сценария
Пользователь видит в карточке ТС статус подбора модификации «Не определена» — для вида
ТС и вида топлива этого ТС в справочнике
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleModification>()} нет ни
одной модификации с установленной нормой
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.Calc.DOC_ProcessingStatusPolicy>()}).
Сценарий доводит администратора модуля от этого состояния до добавленной записи
справочника, без выхода в отдельный реестр и без повторного ввода уже известного о ТС.
""";
public static string Flow = $"""
## Основной поток
Актор — Администратор модуля.
**Given** пользователь открыл карточку ТС
({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Ui.DOC_VehicleCard>()}); статус подбора
модификации — «Не определена» (подбор проводился, модификаций для вида ТС и вида
топлива в справочнике нет); у пользователя роль «Администратор модуля».
**When** администратор выполняет шаги:
1. открывает карточку ТС со статусом подбора «Не определена»;
2. открывает окно подбора модификаций ({SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Ui.DOC_ModificationSelectionModal>()})
по иконке «Подобрать модификацию» — окно показывает, что модификаций нет, и кнопку
«Создать модификацию»;
3. нажимает «Создать модификация» — открывается
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Ui.DOC_VehicleModificationCard>()} с
предзаполненными видом ТС и видом топлива (точно, по ТС) и предложенными маркой и
моделью (разобраны из «Марка и модель базы ТС» сервисом подбора —
{SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Backend.ModificationSelection.DOC_ModificationNameRecognition>()});
4. при необходимости поправляет марку и модель — выбирает существующую запись
справочника или вводит новое наименование;
5. заполняет модификацию и применимые нормы расхода;
6. сохраняет карточку модификации.
**Then** в справочнике {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_VehicleModification>()}
появляется новая запись (и, если марка или модель вводились как новые — записи
справочников марок и моделей); администратор возвращается в окно подбора модификаций,
где новая запись уже доступна для отбора.
**And** вид ТС и вид топлива новой записи с этой карточки не создаются — только
выбираются из значений, уже загруженных из АИС.
**And** автоматического применения группы и пересчёта нет: сохранение карточки
модификации не закрывает окно подбора и не нажимает «Применить» за пользователя —
администратор продолжает подбор в том же окне обычным образом.
""";
public static string Trace = """
## Шаг → артефакты
| Шаг | Артефакты |
|---|---|
| Открытие карточки ТС со статусом «Не определена» | карточка ТС, политика статуса обработки |
| Открытие окна подбора модификаций | окно подбора модификаций |
| Переход в карточку модификации | кнопка «Создать модификация», карточка модификации |
| Выбор/создание марки и модели | марка ТС, модель ТС |
| Заполнение модификации и норм | справочник «Марка, модель и модификация ТС» |
| Сохранение | справочник модификаций, окно подбора модификаций |
""";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new string[0];
}
}