Suggested Reviewers UI integration
## 🧩 Problem to solve
We currently rely on the CI template to present suggested reviewers to users. The comment thread experience, however, feels a bit clunky and less integrated into the code review flow.
<details>
<summary>Current Sequence Diagram</summary>
```plantuml
skinparam shadowing false
skinparam ParticipantPadding 10
participant "CI template" as C
participant "recommender-ci" as CI
box "Suggested Reviewer"
participant "envoy" as E
participant "authenticator" as A
participant "bot-service" as B
participant "recommender-service" as R
end box
[o-> C: run job
activate C
C -> CI: run CI
activate CI
CI -> E: HTTP\n{ project,\nmerge_request }
activate E
E -> A: authenticate
activate E
activate A
A -> A: authenticate \nvia GitLab API
A --> E: authenticated
deactivate A
deactivate E
E -> B: transcoded gRPC request
activate B
B -> B: identify MR\nvia GitLab API
B -> B: get MR changes\nvia GitLab API
B -> B: select latest\nmodel from DB
B -> R: request suggestions
activate B
activate R
R -> R: deserialize model\nfrom GCS
R -> R: generate\nsuggestions
R --> B: suggestions
deactivate R
deactivate B
B --> E: suggestions
deactivate B
E --> CI: suggestions
deactivate E
CI -> CI: write artifacts file\nwith suggestions
CI --> C: exit
deactivate CI
[<-- C: exit
deactivate C
```
</details>
## 💡 Proposal
### Onboarding
Users can enable and disable the Suggested Reviewer feature.
- Integration with GitLab - https://gitlab.com/gitlab-org/modelops/applied-ml/review-recommender/recommender-service/-/issues/7
### Suggestion
Users can see suggested reviewers and choose them for review.
- Integration with GitLab - https://gitlab.com/groups/gitlab-org/modelops/applied-ml/review-recommender/-/epics/7
### Feedback
Developers can collect feedback on selected suggested reviewers.
- Integration with GitLab - https://gitlab.com/gitlab-org/modelops/applied-ml/review-recommender/recommender-bot-service/-/issues/21
### Permissions and Security
- Anyone who can set reviewers should have access to this feature to set recommended reviewers (aka. with `Developer` role or higher)
- Anyone who can view a merge request can view the suggested reviewers but can't set them unless they have permission to set a reviewer.
### Documentation
TBD. Once we finalise the overall architecture and implementation plan, we might need to update the architecture [doc](https://docs.gitlab.com/ee/development/architecture.html#gitlab-architecture-overview) to include the Suggested Reviewer API.
### Availability & Testing
This feature will be behind a ~"feature flag" `suggested_reviewers_control`.
Automated end-to-end tests will include:
- Contract tests: https://gitlab.com/gitlab-org/quality/team-tasks/-/issues/1410
- End-to-end tests involving all system components: https://gitlab.com/gitlab-org/quality/testcases/-/issues/3245
### Available Tier
This feature is available to only ~gitlab.com and ~"GitLab Ultimate" tier.
### What does success look like, and how can we measure that?
Developers set the suggested reviewers as reviewers and a review actually happens. We can collect [related events](https://gitlab.com/gitlab-org/modelops/applied-ml/review-recommender/recommender-bot-service/-/issues/21) around user interactions with this feature.
### Links / references
- [Design issue](https://gitlab.com/gitlab-org/gitlab/-/issues/341873/)
- [Permissions and roles](https://docs.gitlab.com/ee/user/permissions.html)
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
*This page may contain information related to upcoming products, features and functionality.
It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes.
Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.*
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
epic