feat: ask a teammate to review a ticket
«Pedir revisión» on a ticket asks a member (with an optional note): they
are notified and see it under «Te piden revisión» in my work until they
answer «Todo bien» or «Pedir cambios» (with what to change) from the
ticket's Revisiones box; whoever asked hears the answer and can withdraw
an open request. Events of the ticket (requested, answered, cancelled),
so they show in its history and the activity feed. Viewers can be asked
and answer; not oneself, nor twice the same person with one pending.
API: requestReview / answerReview / cancelReview, Issue.reviews,
myIssues(reviewing); POST /api/issues/{issue}/reviews,
POST …/reviews/{id}/answer, DELETE …/reviews/{id}. MCP: request_review,
answer_review, my_issues reviewing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -725,6 +725,9 @@ type Issue {
|
||||
rank: String!
|
||||
release: ReleaseRef
|
||||
reporter: UserRef!
|
||||
|
||||
"""Reviews asked, open and answered, oldest first"""
|
||||
reviews: [IssueReview!]!
|
||||
sprint: SprintRef
|
||||
|
||||
"""When work should start (roadmap)"""
|
||||
@@ -855,6 +858,20 @@ type IssueReminder {
|
||||
note: String
|
||||
}
|
||||
|
||||
"""A review someone asked on the ticket"""
|
||||
type IssueReview {
|
||||
answer: String
|
||||
answeredAt: String
|
||||
id: ID!
|
||||
note: String
|
||||
requestedAt: String!
|
||||
requester: UserRef!
|
||||
reviewer: UserRef!
|
||||
|
||||
"""Null while waiting for an answer"""
|
||||
verdict: ReviewVerdict
|
||||
}
|
||||
|
||||
"""RECENT: last updated first. RANK: backlog order."""
|
||||
enum IssueSort {
|
||||
RANK
|
||||
@@ -960,6 +977,9 @@ type Mutation {
|
||||
"""Add tickets to «Mi día» (10 at most)"""
|
||||
addToMyDay(day: String!, issueIds: [ID!]!): Boolean!
|
||||
|
||||
"""Answer a review I was asked for: all good, or changes"""
|
||||
answerReview(answer: String, issueId: ID!, reviewId: ID!, verdict: ReviewVerdict!): CommandResult!
|
||||
|
||||
"""
|
||||
Archive the project (owner only): everything stays readable, nothing changes until it is unarchived
|
||||
"""
|
||||
@@ -980,6 +1000,9 @@ type Mutation {
|
||||
"""
|
||||
bulkUpdateIssues(input: BulkUpdateIssuesInput!): BulkResult!
|
||||
|
||||
"""Withdraw a review request I made (or, as admin, any)"""
|
||||
cancelReview(issueId: ID!, reviewId: ID!): CommandResult!
|
||||
|
||||
"""Move a ticket through the workflow (incl. QA)"""
|
||||
changeIssueStatus(input: ChangeIssueStatusInput!): CommandResult!
|
||||
changeProjectMemberRole(input: ProjectMemberInput!): CommandResult!
|
||||
@@ -1083,6 +1106,11 @@ type Mutation {
|
||||
removeGitRepository(projectId: ID!, repositoryId: ID!): Boolean!
|
||||
removeProjectMember(projectId: ID!, userId: ID!): CommandResult!
|
||||
|
||||
"""
|
||||
Ask a member to review a ticket (with an optional note): they are told and see it in their work
|
||||
"""
|
||||
requestReview(issueId: ID!, note: String, reviewerId: ID!): CommandResult!
|
||||
|
||||
"""
|
||||
Settle a conversation (a top-level comment and its replies) or reopen it (resolved: false). A conclusion is added as a reply marked as a decision. Whoever can change the ticket
|
||||
"""
|
||||
@@ -1311,6 +1339,8 @@ enum NotificationKind {
|
||||
QA_FAILED
|
||||
REMINDER
|
||||
REPLIED
|
||||
REVIEW_ANSWERED
|
||||
REVIEW_REQUESTED
|
||||
STATUS_CHANGED
|
||||
WATCHED
|
||||
}
|
||||
@@ -1679,6 +1709,9 @@ type Query {
|
||||
"""Only these of my projects"""
|
||||
projectIds: [ID!]
|
||||
|
||||
"""Only the tickets I was asked to review (unanswered)"""
|
||||
reviewing: Boolean! = false
|
||||
|
||||
"""Matches key, title or description (global search)"""
|
||||
search: String
|
||||
statuses: [String!]
|
||||
@@ -1841,6 +1874,12 @@ type ReminderOnIssue {
|
||||
reminder: IssueReminder!
|
||||
}
|
||||
|
||||
"""APPROVED: all good. CHANGES: something to change"""
|
||||
enum ReviewVerdict {
|
||||
APPROVED
|
||||
CHANGES
|
||||
}
|
||||
|
||||
"""Tickets to look at now (worst first)"""
|
||||
type Risks {
|
||||
blocked: [InsightIssue!]!
|
||||
|
||||
Reference in New Issue
Block a user