5c04658faf
Recommendations only scored open shifts, but almost all roles — doctors especially — exist as استخدام (jobs), not dated shifts, and the only shifts are a handful of nurse shifts. So a visitor who prefers «پزشک» got nurse-shift recommendations (scored by city/freshness) because there were no doctor shifts to surface. Now the engine scores BOTH shifts and job openings: role/city/facility/pay/freshness apply to each, behavioral affinities are derived from shift AND job interest events, and the merged top-N is returned. Recommendation can now carry a Shift or a JobOpening; the card renders either (job → /Jobs/Details with employment type + salary; shift → unchanged with hour-bar). Cold start interleaves the freshest of both. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>