iachat/app/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
integrations feat: Slack link unfurling (#7940) 2023-09-29 19:35:56 +05:30
profile feat: MFA (#12290) 2025-09-18 20:19:24 +05:30
widget feat: allow configuring attachment upload limit (#12835) 2025-11-17 14:03:08 -08:00
accounts_controller.rb feat: Conversation workflow backend changes (#13070) 2025-12-16 14:43:15 +05:30
notification_subscriptions_controller.rb fix: Remove the notification subscription if present (#5510) 2022-09-27 12:36:57 -07:00
profiles_controller.rb feat: Ability to reset api_access_token (#11565) 2025-05-29 14:42:13 +05:30
webhooks_controller.rb chore: Upgrade Exception tracking (#4638) 2022-05-09 14:23:19 +05:30