refactor(workbench): simplify appointment tasks
This commit is contained in:
@@ -156,29 +156,21 @@ const taskPermissionsSchema = z.object({
|
||||
can_decide_commands: z.boolean(),
|
||||
can_execute_commands: z.boolean()
|
||||
}).strict();
|
||||
const externalWorkOrderStageSchema = z.object({
|
||||
id: z.string().min(1),
|
||||
const externalWorkOrderActivitySchema = z.object({
|
||||
sequence: z.number().int().positive(),
|
||||
occurred_at: workbenchDateTimeSchema,
|
||||
actor: z.string().min(1),
|
||||
kind: z.enum(["created", "updated", "feedback"]),
|
||||
title: z.string().min(1),
|
||||
status: z.enum(["done", "current", "pending", "blocked", "skipped"]),
|
||||
owner: z.string().min(1),
|
||||
time_label: z.string().min(1),
|
||||
description: z.string().min(1)
|
||||
detail: z.string().min(1)
|
||||
}).strict();
|
||||
const externalWorkOrderSubtaskSchema = z.object({
|
||||
id: z.string().min(1),
|
||||
title: z.string().min(1),
|
||||
summary: z.string().min(1),
|
||||
status: z.enum(["pending", "running", "blocked", "completed", "cancelled"]),
|
||||
scheduled_at: workbenchDateTimeSchema,
|
||||
location: z.string().min(1),
|
||||
assignee: z.string().min(1),
|
||||
duration_minutes: z.number().int().positive(),
|
||||
reply_window_minutes: z.number().int().nonnegative(),
|
||||
stages: z.array(externalWorkOrderStageSchema).min(1),
|
||||
reply_requirements: z.array(z.string().min(1))
|
||||
}).strict();
|
||||
const externalWorkOrderSnapshotSchema = z.object({
|
||||
const externalWorkOrderSnapshotSchema = z.preprocess((value) => {
|
||||
if (value && typeof value === "object" && !Array.isArray(value)) {
|
||||
const { subtasks: _legacySubtasks, ...flat } = value as Record<string, unknown>;
|
||||
return flat;
|
||||
}
|
||||
return value;
|
||||
}, z.object({
|
||||
work_order_id: z.string().uuid(),
|
||||
revision: z.number().int().positive(),
|
||||
title: z.string().min(1),
|
||||
@@ -190,10 +182,11 @@ const externalWorkOrderSnapshotSchema = z.object({
|
||||
work_order_type: z.enum(["general", "water_quality_complaint", "burst_report"]),
|
||||
location: z.string().min(1).nullable(),
|
||||
scenario_code: z.string().min(1).nullable(),
|
||||
subtasks: z.array(externalWorkOrderSubtaskSchema).min(1).nullable(),
|
||||
feedback_requirements: z.array(z.string().min(1)).default([]),
|
||||
activity: z.array(externalWorkOrderActivitySchema).default([]),
|
||||
origin: z.literal("synthetic"),
|
||||
updated_at: workbenchDateTimeSchema
|
||||
}).strict();
|
||||
}).strict());
|
||||
const operationalTaskSchema = taskSummarySchema.extend({
|
||||
latest_plan: planSnapshotSchema.nullable(),
|
||||
latest_report: reportRevisionSchema.nullable(),
|
||||
|
||||
Reference in New Issue
Block a user