FulfillmentAssignment.java

package com.fulfilment.application.monolith.fulfillment.domain.models;

/**
 * Domain model representing a fulfillment assignment:
 * "Warehouse W fulfills Product P for Store S."
 *
 * <p>Constraints (enforced by AssignFulfillmentUseCase):
 * <ul>
 *   <li>Each Product can be fulfilled by a maximum of 2 different Warehouses per Store</li>
 *   <li>Each Store can be fulfilled by a maximum of 3 different Warehouses</li>
 *   <li>Each Warehouse can store a maximum of 5 types of Products</li>
 * </ul>
 */
public class FulfillmentAssignment {

  public Long id;

  public Long storeId;

  public Long productId;

  public String warehouseCode;
}