2.4 KiB
2.4 KiB
Feature: Request Assignment
Objective
Allow agents and managers to assign an open support request to an active agent.
User Or System Value
Support teams can see clear ownership for every active request and reduce duplicate work.
Requirements
- Agents can assign unowned requests to themselves.
- Managers can assign requests to any active agent.
- Assignment creates an audit event.
- Closed requests cannot be reassigned.
Non-Goals
- Automated assignment rules.
- Workload balancing.
- External notifications beyond a basic assignment event.
Acceptance Criteria
- An agent can assign an unowned open request to themselves.
- A manager can assign an open request to another active agent.
- A non-manager cannot assign a request to another user.
- Closed requests return a domain error when assignment is attempted.
- Every successful assignment writes an audit event.
Architecture Notes
- Affected modules: Requests, Users.
- Dependency concerns: Requests queries Users through a user lookup interface.
- Data ownership: Requests owns assignments and audit events.
- Related ADRs: ADR-001, ADR-003.
API Or Interface Changes
POST /api/requests/{requestId}/assignment
Content-Type: application/json
{
"assigneeUserId": "usr_123"
}
Successful response:
{
"requestId": "req_456",
"assigneeUserId": "usr_123",
"status": "open"
}
Data Changes
- Add
assigned_to_user_idto requests if not already present. - Add
RequestAssignedaudit event type. - Index active requests by assigned user for queue views.
Security And Authorization
- Authenticated agents can assign requests to themselves.
- Managers can assign requests to any active agent.
- Backend policies enforce assignment permissions.
- Frontend controls are not considered a security boundary.
Testing Plan
- Unit: request assignment state transitions and closed-request rejection.
- Integration: authorization cases and audit event persistence.
- End-to-end: create request, assign, and confirm queue ownership changes.
- Manual: verify manager and agent UI states.
Rollout Plan
Deploy backend and frontend together. Run a smoke test that assigns a staging request as an agent and as a manager.
Risks
- Authorization drift between UI and API.
- Assignment race when two users assign the same request at the same time.
Open Questions
- Should assignment notify the assignee immediately in the first release?