feat(FN-3276): add task review tab with metadata persistence and desktop la
This merge lands three major features and a significant dashboard enhancement. FN-3276 adds a full Review tab to the task detail modal with multi-step lifecycle: review metadata persistence in the task store, new task workflow routes for refresh and same-task revision, and the review tab UI surface Fusion-Task-Id: FN-3276
This commit is contained in:
@@ -250,6 +250,20 @@ export async function fetchTaskDetail(id: string, projectId?: string): Promise<T
|
||||
throw new Error("Request failed");
|
||||
}
|
||||
|
||||
export interface UpdateTaskReviewRequest {
|
||||
review: TaskDetail["review"] | null;
|
||||
}
|
||||
|
||||
export interface RefreshTaskReviewResponse {
|
||||
review: NonNullable<TaskDetail["review"]>;
|
||||
automationStatus: string | null;
|
||||
}
|
||||
|
||||
export interface ReviseTaskReviewResponse {
|
||||
task: Task;
|
||||
review: NonNullable<TaskDetail["review"]>;
|
||||
}
|
||||
|
||||
export interface CreateTaskRequestOptions {
|
||||
transportNodeId?: string;
|
||||
localNodeId?: string;
|
||||
@@ -5084,6 +5098,21 @@ export function acceptTaskReview(taskId: string, projectId?: string): Promise<Ta
|
||||
});
|
||||
}
|
||||
|
||||
/** Refresh normalized task review data (PR mode or direct mode) */
|
||||
export function refreshTaskReview(taskId: string, projectId?: string): Promise<RefreshTaskReviewResponse> {
|
||||
return api<RefreshTaskReviewResponse>(withProjectId(`/tasks/${encodeURIComponent(taskId)}/review/refresh`, projectId), {
|
||||
method: "POST",
|
||||
});
|
||||
}
|
||||
|
||||
/** Request an in-place revision pass for selected review items */
|
||||
export function reviseTaskReviewItems(taskId: string, itemIds: string[], projectId?: string): Promise<ReviseTaskReviewResponse> {
|
||||
return api<ReviseTaskReviewResponse>(withProjectId(`/tasks/${encodeURIComponent(taskId)}/review/revise`, projectId), {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ itemIds }),
|
||||
});
|
||||
}
|
||||
|
||||
/** Return task to agent - clear assignee and status, move to todo */
|
||||
export function returnTaskToAgent(taskId: string, projectId?: string): Promise<Task> {
|
||||
return api<Task>(withProjectId(`/tasks/${encodeURIComponent(taskId)}/return-to-agent`, projectId), {
|
||||
|
||||
Reference in New Issue
Block a user