From c18a55cf137eb671849e93e5853b5c33e08f4761 Mon Sep 17 00:00:00 2001 From: mzaxd Date: Sun, 22 Feb 2026 23:24:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86=20discovery=20tasks=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0=E6=94=B9=E4=B8=BA=20status?= =?UTF-8?q?=20(=E6=94=AF=E6=8C=81=E9=80=97=E5=8F=B7=E5=88=86=E9=9A=94?= =?UTF-8?q?=E5=A4=9A=E5=80=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 `statuses` 参数,统一使用 `status` 参数 - 支持单状态:?status=PENDING - 支持多状态:?status=PENDING,FAILED - 简化 API 设计,更符合 REST 规范 --- src/app/api/discovery/tasks/route.ts | 18 +++++++++--------- src/lib/validations.ts | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/app/api/discovery/tasks/route.ts b/src/app/api/discovery/tasks/route.ts index 6fce3e4..537c8bb 100644 --- a/src/app/api/discovery/tasks/route.ts +++ b/src/app/api/discovery/tasks/route.ts @@ -105,7 +105,6 @@ export async function GET(request: NextRequest) { } const validation = GetDiscoveryTasksQuerySchema.safeParse({ status: searchParams.get('status') || undefined, - statuses: searchParams.get('statuses') || undefined, // 新增:支持多状态查询 limit: searchParams.get('limit') || '10', offset: searchParams.get('offset') || '0', }) @@ -121,16 +120,17 @@ export async function GET(request: NextRequest) { ) } - const { status, statuses, limit, offset } = validation.data + const { status, limit, offset } = validation.data - // 构建查询条件:支持单状态和多状态查询 + // 构建查询条件:支持单状态或多状态(逗号分隔) let whereClause = {} - if (statuses && statuses.length > 0) { - // 多状态查询:?statuses=PENDING,FAILED - whereClause = { status: { in: statuses } } - } else if (status) { - // 单状态查询(向后兼容):?status=PENDING - whereClause = { status } + if (status) { + // 支持单状态 (?status=PENDING) 或多状态 (?status=PENDING,FAILED) + if (Array.isArray(status)) { + whereClause = { status: { in: status } } + } else { + whereClause = { status } + } } const tasks = await prisma.projectDiscoveryTask.findMany({ diff --git a/src/lib/validations.ts b/src/lib/validations.ts index 3ae4650..eb6e90e 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -104,11 +104,11 @@ export const UpdateDiscoveryTaskSchema = z.object({ }); export const GetDiscoveryTasksQuerySchema = z.object({ - status: TaskStatusEnum.optional(), // 保持向后兼容:单状态查询 - statuses: z.string().optional().transform((val) => { - // 将逗号分隔的字符串转换为数组,如 "PENDING,FAILED" → ["PENDING", "FAILED"] + status: z.string().optional().transform((val) => { + // 支持单状态或多状态(逗号分隔),如 "PENDING" 或 "PENDING,FAILED" if (!val) return undefined; - return val.split(',').map(s => s.trim() as TaskStatus).filter(Boolean); + const statuses = val.split(',').map(s => s.trim() as TaskStatus).filter(Boolean); + return statuses.length === 1 ? statuses[0] : statuses; }), limit: z.coerce.number().int().positive().max(100).default(10), offset: z.coerce.number().int().nonnegative().default(0),