using System.Text.Json.Serialization;

namespace TakeoutSaaS.Application.App.Products.Dto;

/// <summary>
/// 商品全量详情 DTO。
/// </summary>
public sealed record ProductDetailDto
{
    /// <summary>
    /// SPU 基础信息。
    /// </summary>
    public ProductDto Product { get; init; } = new();

    /// <summary>
    /// SKU 列表。
    /// </summary>
    public IReadOnlyList<ProductSkuDto> Skus { get; init; } = [];

    /// <summary>
    /// 规格组与选项。
    /// </summary>
    public IReadOnlyList<ProductAttributeGroupDto> AttributeGroups { get; init; } = [];

    /// <summary>
    /// 加料组与选项。
    /// </summary>
    public IReadOnlyList<ProductAddonGroupDto> AddonGroups { get; init; } = [];

    /// <summary>
    /// 价格策略。
    /// </summary>
    public IReadOnlyList<ProductPricingRuleDto> PricingRules { get; init; } = [];

    /// <summary>
    /// 媒资列表。
    /// </summary>
    public IReadOnlyList<ProductMediaAssetDto> MediaAssets { get; init; } = [];
}
