package de.effigenix.domain.production;

/**
 * Draft for creating a new Recipe. Application layer builds this from raw command inputs.
 * The Recipe aggregate validates and constructs VOs internally.
 *
 * @param name            Recipe name (required)
 * @param version         Version number (required, >= 1)
 * @param type            Recipe type (required)
 * @param description     Free-text description (optional)
 * @param yieldPercentage Yield percentage 1-200 (required)
 * @param shelfLifeDays   Shelf life in days (nullable; required for FINISHED_PRODUCT and INTERMEDIATE)
 * @param outputQuantity  Expected output quantity amount (required)
 * @param outputUom       Expected output unit of measure (required)
 * @param articleId Article ID of the output product (optional; null if not linked)
 */
public record RecipeDraft(
        String name,
        int version,
        RecipeType type,
        String description,
        int yieldPercentage,
        Integer shelfLifeDays,
        String outputQuantity,
        String outputUom,
        String articleId
) {}
