namespace Deal.Modules.Cards.Application;
///
/// Единый механизм перехода карточки между контейнерами.
///
///
/// Заменяет маршрутизацию перехода по эндпоинтам: одна точка знает и контейнеры-стадии пространства
/// «Выбранные», и контейнеры дашборда (доски/служебные зоны). Валидацию «откуда → куда можно» выполняют
/// политики контейнеров и «ворота» между пространствами (например, дашборд → «Выбранные» — только через
/// действие «взять в работу»; «Выбранные» → дашборд — запрещено). Побочные эффекты (запись истории для
/// стадий, сброс напоминания, журнал/обучение ML для дашборда) выполняет реализация перехода.
///
public interface ICardMover
{
///
/// Перемещает карточку в контейнер назначения с побочными эффектами перехода.
///
/// Id карточки.
/// Id контейнера назначения (стадия «Выбранных» либо дашборд-контейнер).
/// Контекст перехода (инициатор, причина, обучение).
/// Токен отмены.
/// Результат: Error (400-текст отказа) | Exists=false (карточки нет, 404) | успех (Exists=true).
public Task MoveAsync(
string cardId, string toContainerId, TransitionContext ctx, CancellationToken ct);
}