diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index e4015b6e6..872a106be 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -289,6 +289,7 @@ import { } from "@/lib/video-agent/task-store"; import type { StoryboardModelCandidate } from "@/lib/video-agent/types"; import type { ChatMessage } from "@/lib/types"; +import { collectMessageImageAttachments } from "@/lib/chat/message-image-attachments"; import type { AppUsage } from "@/lib/usage"; import { convertToUIMessages, generateUUID } from "@/lib/utils"; import { isAiModelAgentAuto } from "@/lib/db/ai-model-flags"; @@ -1306,7 +1307,7 @@ export async function POST(request: Request) { chatId: id, role: "user", parts: message.parts as any, - attachments: [], + attachments: collectMessageImageAttachments({ parts: message.parts }), createdAt: new Date(), videoStorageStatus: null, temporaryVideoUrl: null, @@ -2889,7 +2890,7 @@ export async function POST(request: Request) { id: message.id, role: "user", parts: message.parts as any, - attachments: [], + attachments: collectMessageImageAttachments({ parts: message.parts }), createdAt: new Date(), videoStorageStatus: null, temporaryVideoUrl: null, diff --git a/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx b/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx index 4f6fc8d7c..7a18500de 100644 --- a/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx +++ b/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx @@ -11434,60 +11434,60 @@ export default function CanvasEditorLegacyPage({ -
-
+
+
视频工作流节点库
-
+
这里按参考 APP 的节点目录整理,先把结构补齐,再逐步接入具体能力。
-
+
{VIDEO_WORKFLOW_LIBRARY_SECTIONS.map((section) => { const sectionNodes = getVideoWorkflowSectionNodes( section.id ); return ( -
-
-
+
+
+
{section.label}
-
+
{section.description}
{sectionNodes.map((nodeDefinition) => ( handleAddWorkflowNode(nodeDefinition.type) } >
-
- +
+ {nodeDefinition.label} {nodeDefinition.type}
-
+
{nodeDefinition.description}
diff --git a/components/agents/AgentExecutionSnapshotDialog.tsx b/components/agents/AgentExecutionSnapshotDialog.tsx index 96b324338..b25f29b23 100644 --- a/components/agents/AgentExecutionSnapshotDialog.tsx +++ b/components/agents/AgentExecutionSnapshotDialog.tsx @@ -52,30 +52,30 @@ export function AgentExecutionSnapshotDialog({
) : !snapshot ? ( -
+
暂无快照详情
) : ( -
+
-
-
风格化
+
+
风格化
{snapshot.presetName}
-
+
类型:{snapshot.presetType === "video" ? "视频" : "生图"}
分类:{snapshot.categoryName || "未分类"}
-
-
模型
+
+
模型
{snapshot.resolvedModel?.displayName || snapshot.defaultModel?.displayName || "未记录"}
-
+
槽位:{snapshot.slotCount} 个
@@ -84,8 +84,8 @@ export function AgentExecutionSnapshotDialog({
-
-
本次使用的 3 张素材图
+
+
本次使用的 3 张素材图
{uploadedImageUrls.length > 0 ? (
{uploadedImageUrls.map((url, index) => ( @@ -107,18 +107,18 @@ export function AgentExecutionSnapshotDialog({
{snapshot.userInputText ? ( -
-
用户补充提示
-
+
+
用户补充提示
+
{snapshot.userInputText}
) : null}
-
槽位详情
+
槽位详情
{snapshot.slots.map((slot, index) => ( -
+
{slot.title || slot.uploadLabel || `槽位 ${slot.slotIndex + 1}`} diff --git a/components/angle-edit-dialog.tsx b/components/angle-edit-dialog.tsx index b4b7638f6..ef2649704 100644 --- a/components/angle-edit-dialog.tsx +++ b/components/angle-edit-dialog.tsx @@ -189,7 +189,7 @@ export function AngleEditDialog({ : null}
-
-
+
+
{image.label || image.fileName || "白底图"}
-
+
{image.group === "fixed" ? "固定角度" : "补充图"} {image.fileName || image.key}
@@ -114,7 +114,7 @@ function SkuOptionCard({ return ( {materialSearchEnabled ? ( -
+
{ setQuery(event.target.value); setErrorText(null); @@ -338,7 +338,7 @@ export function CanvasAddImageDialog({ ) : null}
{!materialSearchEnabled ? ( -
+
风格化功能或素材搜索步骤未开启,当前只显示空白图片入口。
) : null}
{errorText ? ( -
+
{errorText}
) : null} @@ -370,8 +370,8 @@ export function CanvasAddImageDialog({
-
选择 SKU
-
+
选择 SKU
+
命中 {skuOptions.length} 个 SKU,选择有白底图的 SKU 继续拉取图片。
@@ -392,11 +392,11 @@ export function CanvasAddImageDialog({
-
+
白底图素材 {result?.matchedSku ? ` · ${result.matchedSku}` : ""}
-
+
共 {images.length} 张,已选 {selectedImages.length} 张。
@@ -432,13 +432,13 @@ export function CanvasAddImageDialog({
) : materialSearchEnabled && !isSearching && !skuOptions.length && result ? ( -
+
当前没有可添加的白底图。
) : null}
- + ) : ( -
+
到底了
)} diff --git a/components/canvas/CanvasImageDownloadProgressDialog.tsx b/components/canvas/CanvasImageDownloadProgressDialog.tsx index 04c13ff76..48f0e20d8 100644 --- a/components/canvas/CanvasImageDownloadProgressDialog.tsx +++ b/components/canvas/CanvasImageDownloadProgressDialog.tsx @@ -34,24 +34,24 @@ export function CanvasImageDownloadProgressDialog({ className="fixed inset-0 z-[10000] flex items-center justify-center bg-black/42 px-4 backdrop-blur-[2px]" data-canvas-download-progress="true" > -
-
-
- +
+
+
+ {progress.phase === "saving" ? ( - + ) : ( - + )}
-
下载原图
+
下载原图
{progress.message}
{onCancel ? ( -
+
setPendingProjectName(event.target.value)} onKeyDown={(event) => { if (event.key === "Enter") { @@ -3780,9 +3780,9 @@ export function RealtimeCanvasDialog({ placeholder="请输入项目名称" value={pendingProjectName} /> -
+
-
+
{savedProjects.length === 0 ? ( -
+
暂无保存的项目
) : ( savedProjects.map((project) => (
-
+
{project.coverImageUrl || project.previewUrl ? ( {project.name}
-
+
{project.name}
-
+
{realtimeSelectToolItem.label}
-
+
选择图层并拖动位置
@@ -4288,18 +4288,18 @@ export function RealtimeCanvasDialog({ -
-
+
+
颜色
-
+
{realtimeSaveProjectItem.label}
-
+
保存当前画布状态
@@ -4550,10 +4550,10 @@ export function RealtimeCanvasDialog({ -
+
{realtimeProjectListItem.label}
-
打开已保存项目
+
打开已保存项目
@@ -4574,10 +4574,10 @@ export function RealtimeCanvasDialog({ -
+
{realtimeNewBlankItem.label}
-
+
清空并开始新项目
@@ -4602,10 +4602,10 @@ export function RealtimeCanvasDialog({ -
+
{realtimeUndoItem.label}
-
回退上一步编辑
+
回退上一步编辑
@@ -4627,10 +4627,10 @@ export function RealtimeCanvasDialog({ -
+
{realtimeRedoItem.label}
-
恢复已撤销操作
+
恢复已撤销操作
@@ -4638,12 +4638,12 @@ export function RealtimeCanvasDialog({