-

+ {selectedImage.recordType === "video" ? (
+
+ ) : (
+

+ )}
@@ -2582,18 +2620,22 @@ export function AdminSettingsClient() {
{new Date(selectedImage.createdAt).toLocaleString("zh-CN")}
-
+
{selectedImage.imageSize || "未知"}
{selectedImage.modelId || "未知"}
-
-
-
{selectedImage.featuredCategory || "未设置"}
-
- {selectedImage.isFeatured && selectedImage.featuredAt && (
+ {selectedImage.recordType !== "video" ? (
+
+
+
{selectedImage.featuredCategory || "未设置"}
+
+ ) : null}
+ {selectedImage.recordType !== "video" && selectedImage.isFeatured && selectedImage.featuredAt && (
{new Date(selectedImage.featuredAt).toLocaleString("zh-CN")}
@@ -2604,34 +2646,64 @@ export function AdminSettingsClient() {
{selectedImage.prompt || "无"}
- {/* 精选操作按钮 */}
-
-
-
-
+ {selectedImage.recordType !== "video" ? (
+
+
+
+
+
+
-
-
+ ) : null}
)}
diff --git a/app/api/admin/images/route.ts b/app/api/admin/images/route.ts
index 2367f6ef5..332642ce0 100644
--- a/app/api/admin/images/route.ts
+++ b/app/api/admin/images/route.ts
@@ -1,9 +1,30 @@
import { NextRequest, NextResponse } from "next/server";
import { db } from "@/lib/db";
-import { generatedImage, user } from "@/lib/db/schema";
-import { eq, desc, sql, and, gte, lte, like, or } from "drizzle-orm";
+import { chat, generatedImage, message, user } from "@/lib/db/schema";
+import { eq, desc, sql, and, gte, lte, like, or, isNotNull } from "drizzle-orm";
import { auth } from "@/app/(auth)/auth";
+function extractVideoUrlFromParts(parts: unknown): string | null {
+ const text = Array.isArray(parts)
+ ? parts
+ .map((part) => (part && typeof part === "object" && "text" in part ? String((part as any).text || "") : ""))
+ .join("\n")
+ : typeof parts === "string"
+ ? parts
+ : "";
+
+ if (!text) return null;
+
+ const htmlMatch = text.match(/