iachat/enterprise/app/models/enterprise
Tanmay Deep Sharma 9efd554693
fix: resolve V2 capacity bypass in team assignment (#13904)
## Description

When Assignment V2 is enabled, the V2 capacity policies
(AgentCapacityPolicy / InboxCapacityLimit) are not respected during
team-based assignment paths. The system falls back to the legacy V1
max_assignment_limit, and since V1 is deprecated and typically
unconfigured in V2 setups, agents receive unlimited assignments
regardless of their V2 capacity.

Root cause: Inbox class directly defined
member_ids_with_assignment_capacity, which shadowed the
Enterprise::InboxAgentAvailability module override in Ruby's method
resolution order (MRO). This made the V2 capacity check unreachable
(dead code) for any code path using member_ids_with_assignment_capacity.

## Type of change

- [ ] Bug fix (non-breaking change which fixes an issue)

## How Has This Been Tested?

⏺ Before the fix
1. Enable assignment_v2 + advanced_assignment on account
2. Create AgentCapacityPolicy with InboxCapacityLimit = 1 for an inbox
3. Assign the policy to an agent (e.g., John)
4. Create 1 open conversation assigned to John (now at capacity)
5. Create a new unassigned conversation in the same inbox
6. Assign a team (containing John) to that conversation
7. Result: John gets assigned despite being at capacity
⏺ After the fix
Same steps 1–6.
7. Result: John is NOT assigned — conversation stays unassigned (no
agents with capacity available)


## Checklist:

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented on my code, particularly in hard-to-understand
areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream
modules
2026-03-27 15:38:17 +05:30
..
account fix: disable email transcript for free plans (#13509) 2026-02-11 21:21:36 +05:30
audit feat: add per-webhook secret with backfill migration (#13573) 2026-02-26 17:26:12 +05:30
concerns feat: Conversation workflows(EE) (#13040) 2026-01-27 11:36:20 +04:00
account_user.rb feat: Add APIs to manage custom roles in Chatwoot (#9995) 2024-08-23 17:18:28 +05:30
account.rb fix: V2 Assignment service enhancements (#13036) 2026-02-11 12:24:45 +05:30
activity_message_handler.rb feat: captain decides if conversation should be resolved or kept open (#13336) 2026-03-13 10:03:58 +05:30
application_record.rb feat: Add push/email notification support for SLA (#9140) 2024-03-29 20:27:21 +11:00
audit_log.rb chore: Refactor Response Bot Data Schema (#8011) 2023-10-01 19:31:38 -07:00
automation_rule.rb feat: sla-2 add automation backend support for SLA (#8775) 2024-02-01 15:42:12 +05:30
channelable.rb fix: skip auditlogs for whatsapp template sync (#8579) 2024-01-09 21:51:48 -08:00
conversation.rb feat: captain decides if conversation should be resolved or kept open (#13336) 2026-03-13 10:03:58 +05:30
inbox_agent_availability.rb fix: resolve V2 capacity bypass in team assignment (#13904) 2026-03-27 15:38:17 +05:30
inbox.rb fix: resolve V2 capacity bypass in team assignment (#13904) 2026-03-27 15:38:17 +05:30
message.rb fix: skip captain auto-open for templates (#13802) 2026-03-16 18:54:12 +05:30