Morning schedule push is now per-tech

Change (entirely-api 10fb601): services/daily_schedule.py groups the 6 AM ET weekday visit push by assigned_tech instead of sending only Darius’s list.

  • Darius — unchanged: his stops + unassigned visits (field default), always gets a message, including the explicit “No inspections scheduled for today.” on empty days.
  • Dustin — new: gets his own WhatsApp/fallback-chain message on days he has assigned field visits. Skipped entirely when he has none — no empty-day ping.
  • Same field-stop filters apply to both lists: desk-review (visit method + project review_type), brand=‘unlikely’ only, on-hold excluded.
  • whatsapp_service.send_daily_schedule gained optional recipient (defaults to DARIUS_PHONE).
  • Result dict keeps old keys (sent/inspection_count/message_result = Darius-centric for compatibility) plus darius_count, dustin_count, dustin_sent, dustin_message_result.

Why: 2026-08-05 had 4 Manassas in-production initials on one calendar that were geographically infeasible for one tech (Lusby → St. Mary’s → College Park → Arlington). Fix was to reassign College Park (MAN-9160, 12:30) to Dustin and slide Arlington (MAN-9157) 1:30 → 1:45 PM — which exposed that Dustin-assigned visits vanished from all morning pushes.

Related: daily-schedule, whatsapp-fallback-chain