feat(workbench): redesign investigation reports and diagrams
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { z } from "zod";
|
||||
import { investigationReportSchema } from "./investigation-report";
|
||||
import type { AccessTokenProvider } from "@/shared/auth/keycloak-auth";
|
||||
import { env } from "@/shared/config/env";
|
||||
import { createWorkbenchHeaders, findOwnedWorkbenchProject, getServerError } from "./project-client";
|
||||
@@ -105,14 +106,7 @@ const planSnapshotSchema = z.object({
|
||||
published_by: z.string().min(1),
|
||||
plan: planInputSchema
|
||||
}).strict();
|
||||
const reportInputSchema = z.object({
|
||||
title: z.string().min(1),
|
||||
current_conclusion: z.string().min(1),
|
||||
conclusion_boundary: z.string().min(1),
|
||||
evidence_refs: z.array(z.string().min(1)),
|
||||
recommendations: z.array(z.string().min(1)),
|
||||
pending_items: z.array(z.string().min(1))
|
||||
}).strict();
|
||||
const reportInputSchema = investigationReportSchema;
|
||||
const reportRevisionSchema = z.object({
|
||||
revision: z.number().int().positive(),
|
||||
execution_generation: z.number().int().positive().nullish(),
|
||||
@@ -121,6 +115,10 @@ const reportRevisionSchema = z.object({
|
||||
published_by: z.string().min(1),
|
||||
report: reportInputSchema
|
||||
}).strict();
|
||||
const reportPageSchema = z.object({
|
||||
items: z.array(reportRevisionSchema),
|
||||
next_offset: z.number().int().nonnegative().nullable(),
|
||||
}).strict();
|
||||
const actionReceiptSchema = z.object({
|
||||
adapter: z.string().min(1),
|
||||
receipt_id: z.string().min(1),
|
||||
@@ -240,6 +238,7 @@ const notificationSchema = z.object({
|
||||
lifecycle_status: z.enum(["active", "resolved"]).default("active"),
|
||||
subject_type: z.enum(["task", "run", "access_request", "action"]).default("task"),
|
||||
subject_id: z.string().uuid().nullable().default(null),
|
||||
report_reference: z.object({ execution_generation: z.number().int().positive(), revision: z.number().int().positive() }).strict().nullish(),
|
||||
resolved_at: workbenchDateTimeSchema.nullable().default(null),
|
||||
resolution_reason: z.string().min(1).nullable().default(null),
|
||||
status: z.enum(["unread", "read"]),
|
||||
@@ -285,6 +284,8 @@ export type OperationalTaskAction = z.infer<typeof actionSchema>;
|
||||
export type OperationalTaskAccessRequest = z.infer<typeof accessRequestSchema>;
|
||||
export type OperationalTaskEvidence = z.infer<typeof evidenceSchema>;
|
||||
export type OperationalTaskNotification = z.infer<typeof notificationSchema>;
|
||||
export type OperationalTaskReport = z.infer<typeof reportRevisionSchema>;
|
||||
export type OperationalTaskReportPage = z.infer<typeof reportPageSchema>;
|
||||
export type OperationalTaskSchedule = z.infer<typeof scheduleSchema>;
|
||||
export type OperationalTaskDataSnapshot = z.infer<typeof taskDataSnapshotSchema>;
|
||||
export type ExternalWorkOrderSnapshot = z.infer<typeof externalWorkOrderSnapshotSchema>;
|
||||
@@ -335,6 +336,12 @@ export async function fetchOperationalTask(taskId: string, getAccessToken?: Acce
|
||||
));
|
||||
}
|
||||
|
||||
export async function fetchOperationalTaskReports(taskId: string, offset: number, getAccessToken?: AccessTokenProvider) {
|
||||
return reportPageSchema.parse(await operationalTaskRequest(
|
||||
`/operational-tasks/${encodeURIComponent(taskId)}/reports?limit=20&offset=${offset}`, getAccessToken,
|
||||
));
|
||||
}
|
||||
|
||||
export async function createOperationalTask(input: CreateOperationalTaskInput, getAccessToken?: AccessTokenProvider) {
|
||||
return operationalTaskSchema.parse(await operationalTaskRequest(
|
||||
"/operational-tasks",
|
||||
|
||||
Reference in New Issue
Block a user