Разбить Deal.Modules.Cards по назначению

Application разделён на Abstractions (25 интерфейсов), Models (13
доменных типов) и Dtos (CardMoveResultDto); namespace приведён к путям,
using потребителей мигрированы.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:16:57 +03:00
parent 8a7d7f2a7a
commit 31c434ed93
65 changed files with 231 additions and 66 deletions
@@ -0,0 +1,47 @@
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
namespace Deal.Modules.Cards.Application.Abstractions;
/// <summary>
/// Контейнер карточки: колонка дашборда, стадия «Выбранных» или служебная зона.
/// </summary>
/// <remarks>
/// Общая база колонок/стадий/зон: пользовательские колонки (kind=board, создаёт пользователь/ИИ),
/// стадии (kind=stage, предзаданный каталог), «Неразобранное», архив, корзина, терминальные зоны.
/// Поведение контейнера — через <see cref="Policy"/> (роль, не enum-свойства): правила попадания,
/// допустимость возврата, автоочистка, терминальность. Пространство (дашборд/«Выбранные»/третий вид) —
/// свойство SpaceId: карточке безразличен вид, у неё только ContainerId.
/// </remarks>
public interface IContainer
{
/// <summary>
/// Короткий id контейнера (доски <c>b_…</c>, стадии <c>planned…</c>, служебные inbox/archive/trash).
/// </summary>
public string Id { get; }
/// <summary>
/// Имя для отображения («WPF», «В работе», «Архив»).
/// </summary>
public string Name { get; }
/// <summary>
/// Цвет контейнера (hex).
/// </summary>
public string Color { get; }
/// <summary>
/// Позиция в пространстве (порядок показа слева направо).
/// </summary>
public int Order { get; }
/// <summary>
/// Id пространства (доски), которому принадлежит контейнер.
/// </summary>
public string SpaceId { get; }
/// <summary>
/// Политика контейнера: что можно/нельзя и что происходит (роль).
/// </summary>
public IContainerPolicy Policy { get; }
}