1. Offcut reuse was lost on optimize: Find better layout / Best of 100 / Try alternative now pass available=self._available(); reoptimize seeds preserve owned/source so a locked offcut stays owned (not silently bought). 2. Inventory is now species-aware end to end: purchase/consume/adjust/on_hand/ available_stock and record_build key by (stock, material); plan_consumption and Mark-purchased group by species; PurchaseDialog shows species and prices at the species rate; price-book save backs out the multiplier to the SPF base. A spruce on-hand no longer satisfies an oak cut. 3. Cross-species placement is now invalid: validate_cut_plan and the GUI drop path reject an oak cut on a spruce piece. 4. Yield is bought-only and consistent: _score divides bought-used by bought-area (owned offcuts excluded); the Shopping tab's yield matches. tests: locked-reopt keeps owned offcut, species-aware on-hand, cross-species validate, yield excludes owned, optimize preserves the offcut toggle. 203 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| test_bom_window.py | ||
| test_cutlist.py | ||
| test_cutplan.py | ||
| test_driver.py | ||
| test_estimate.py | ||
| test_geometry.py | ||
| test_gui_controller.py | ||
| test_instructions.py | ||
| test_inventory.py | ||
| test_inventory_window.py | ||
| test_jigs.py | ||
| test_layout.py | ||
| test_materials.py | ||
| test_prices.py | ||
| test_scene.py | ||