package model import "time" // Configuration links a plate and item with layout spacing for maximum packing. type Configuration struct { ID string `json:"id"` Name string `json:"name,omitempty"` PlateID string `json:"plate_id"` ItemID string `json:"item_id"` SpacingMM float64 `json:"spacing_mm"` CreatedAt time.Time `json:"created_at"` } // LayoutPosition is the top-left corner of one item on the plate (mm). type LayoutPosition struct { XMM float64 `json:"x_mm"` YMM float64 `json:"y_mm"` } // LayoutPreview describes how many items fit on a plate. type LayoutPreview struct { PlateID string `json:"plate_id"` ItemID string `json:"item_id"` SpacingMM float64 `json:"spacing_mm"` PlateWidthMM float64 `json:"plate_width_mm"` PlateHeightMM float64 `json:"plate_height_mm"` PrintableXMM float64 `json:"printable_x_mm"` PrintableYMM float64 `json:"printable_y_mm"` PrintableWMM float64 `json:"printable_width_mm"` PrintableHMM float64 `json:"printable_height_mm"` CellWidthMM float64 `json:"cell_width_mm"` CellHeightMM float64 `json:"cell_height_mm"` FootprintWMM float64 `json:"footprint_width_mm"` FootprintHMM float64 `json:"footprint_height_mm"` TrimOffsetMM float64 `json:"trim_offset_mm"` CanvasWidthMM float64 `json:"canvas_width_mm"` CanvasHeightMM float64 `json:"canvas_height_mm"` Columns int `json:"columns"` Rows int `json:"rows"` Count int `json:"count"` Positions []LayoutPosition `json:"positions"` }