Auto-assign an unassigned ticket via capacity-aware round-robin
Picks one agent from the supplied user_ids pool using the same capacity-aware round-robin engine that powers inbox conversation routing (apps/api/src/lib/inbox-assignment.ts). Overloaded agents (loadScore >= OVERLOADED_THRESHOLD) are filtered out; if EVERY pool member is overloaded the picker falls back to the least-loaded agent. Capacity-snapshot failures degrade to capacity-unaware round-robin so a ticket is NEVER left unassigned because the wallboard query tripped. Pool rotation cursor lives in Redis at {devotel}:inbox:rr:<pool_id>; reuse the same pool_id across calls to keep the rotation coherent. 200 returns the updated ticket wire-shape + picker telemetry; 409 when the ticket is already assigned (manual re-assignment goes through PATCH /tickets/:id); 404 on missing ticket; 422 on validation failure.