iachat/spec/controllers/api/v1
Pranav ad2329c237
perf(conversations): throttle agent_last_seen_at updates to reduce DB load (#13355)
High-traffic accounts generate excessive database writes due to agents
frequently switching between conversations. The update_last_seen
endpoint was being called every time an agent loaded a conversation,
resulting in unnecessary updates to agent_last_seen_at and
assignee_last_seen_at even when there were no new messages to mark as
read.

#### Solution
Implemented throttling for the update_last_seen endpoint:

**Unread messages present:**
- Updates immediately without throttling to maintain accurate
read/unread state
- Uses assignee_unread_messages for assignees, unread_messages for other
agents

**No unread messages:**
- Throttles updates to once per hour per conversation
- Checks if agent_last_seen_at is older than 1 hour before updating
- For assignees, checks both agent_last_seen_at AND
assignee_last_seen_at - updates if either timestamp is old
- Skips DB write if all relevant timestamps were updated within the last
hour

- Consolidated two separate update_column calls into a single
update_columns call to reduce DB queries
2026-01-23 22:23:41 -08:00
..
accounts perf(conversations): throttle agent_last_seen_at updates to reduce DB load (#13355) 2026-01-23 22:23:41 -08:00
widget fix: Show campaigns only if the feature is enabled (#11420) 2025-05-05 19:41:28 -07:00
accounts_controller_spec.rb feat: allow auto resolve waiting option (#11436) 2025-05-08 12:52:17 +05:30
notification_subscriptions_controller_spec.rb chore: Enable the new Rubocop rules (#7122) 2023-05-19 14:37:10 +05:30
profiles_controller_spec.rb fix: Prevent display_name reset when updating password (#10374) 2025-06-11 19:05:30 -04:00
upload_controller_spec.rb fix: Validate blob before attaching it to a record (#13115) 2025-12-19 19:02:21 -08:00