using Application.Abstractions.Messaging;
using SharedKernel.Results;
namespace Application.Features.Admin.Store.Shipment.UpdateStatus;
///
/// Shipment 상태 변경 통합 Command:
/// • Action="RegisterTracking" + Carrier + TrackingNumber → 송장 입력 (자동 Pickup 전환)
/// • Action="InTransit" → 배송 중 (Order.Status Shipped 동기화)
/// • Action="Delivered" → 배송완료 (Order.Status Delivered 동기화)
/// • Action="Failed" → 배송 실패
/// • Action="UpdateBilling" + ShippingFee + AdminMemo → 배송비/관리자 메모 갱신
///
public sealed record Command(
int ShipmentID,
string Action,
string? Carrier = null,
string? TrackingNumber = null,
int? ShippingFee = null,
string? AdminMemo = null
) : ICommand;