Industrial heat treatment
155 heat-treatment orders. 11 furnaces. 39 operators. One coupled plan.
Heat-treatment planning couples machine capacity, thermal sequencing, batch placement, task operators, monitoring load, and the shift roster into a single model, so a furnace plan that ignores operator coverage cannot look legal.
The answer is only valid if furnace assignment, time placement, task operators, monitoring capacity, and roster coverage all hold together. Staging those decisions can produce schedules that look legal in one layer and fail in another.
The app keeps the furnace timeline, the operator roster, the order table, score analysis, the retained job, and the REST surface inspectable from one operating artifact.
- The status bar starts Ready with the score empty and all 30 constraint dots present.
- Eleven furnace lanes wait for the solve; 155 orders are still unassigned.
- Hard score is still counting down while the search is live.
- Order blocks appear in the lanes as construction and local search place them.
- Lane headers keep furnace type, maximum temperature, order count, and load capacity.
- Each block carries its work-order code, customer, and process in the lane.
- Operators carry role, availability, planned shifts, and their skill mask.
- Every manual task must land on an operator rostered on the owning shift.
- Assigned furnace and scheduled window are readable per work order.
- Delay per order exposes whether priority-weighted lateness reached the plan.
- Hard feasibility and soft operating pressure stay separated by type.
- Every constraint reports its score and match count for review.
- Every endpoint ships a copyable curl example.
- Retained-job endpoints cover create, status, snapshot, analysis, and events.