From 8386755e6db12bfaadaf7516a4d8a938d5ae88a0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 20 Feb 2026 21:14:05 +0800 Subject: [PATCH] feat(admin): include video generation records in image history --- .../settings/admin-settings-client.tsx | 227 +++++++++++------- app/api/admin/images/route.ts | 162 +++++++++++-- 2 files changed, 279 insertions(+), 110 deletions(-) diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index af0c87bd0..a2196d1c8 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -296,12 +296,15 @@ type AuthSettings = { type GeneratedImageRecord = { id: string; + sourceMessageId?: string; userId: string; userName: string | null; userEmail: string; userDepartment: string | null; thumbnailUrl: string; originalUrl: string; + videoUrl?: string | null; + recordType?: "image" | "video"; imageSize: string | null; prompt: string | null; modelId: string | null; @@ -473,7 +476,14 @@ export function AdminSettingsClient() { }); const { data: imagesData, mutate: mutateImages } = useSWR<{ images: GeneratedImageRecord[]; - pagination: { page: number; pageSize: number; total: number; totalPages: number }; + pagination: { + page: number; + pageSize: number; + total: number; + totalPages: number; + totalImages?: number; + totalVideos?: number; + }; }>(`/api/admin/images?${imageQueryParams}`, fetcher); // 🆕 生图数据分析 @@ -2126,7 +2136,7 @@ export function AdminSettingsClient() { - 生图记录 + 生图/视频记录 @@ -2413,8 +2423,8 @@ export function AdminSettingsClient() { - 所有生图记录 - 查看所有用户的 AI 生图历史记录 + 所有生图/视频记录 + 查看所有用户的 AI 图片与视频生成历史记录 {/* 筛选条件 */} @@ -2466,6 +2476,10 @@ export function AdminSettingsClient() { {/* 统计信息 */}
共 {imagesData?.pagination.total || 0} 条记录 + {imagesData?.pagination.totalImages !== undefined || + imagesData?.pagination.totalVideos !== undefined + ? `(图片 ${imagesData?.pagination.totalImages || 0} / 视频 ${imagesData?.pagination.totalVideos || 0})` + : ""}
{/* 图片网格 */} @@ -2477,14 +2491,29 @@ export function AdminSettingsClient() { onClick={() => setSelectedImage(img)} >
- {img.prompt + {img.recordType === "video" ? ( +