From 42955a6b2d7b0087094dd36cb03c764a86d84c37 Mon Sep 17 00:00:00 2001 From: zhishi <1951671751@qq.com> Date: Wed, 1 Apr 2026 15:05:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E7=BC=96=E8=BE=91=E9=87=8D?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router.ts | 320 +++++++++--------- .../assets/batchGenerateAssetsImage.ts | 2 +- .../production/assets/updateAssetsUrl.ts | 26 ++ ...aultProject.ts => getImageDefaultModle.ts} | 1 - src/routes/production/getFlowData.ts | 4 +- src/routes/script/extractAssets.ts | 23 +- 6 files changed, 203 insertions(+), 173 deletions(-) create mode 100644 src/routes/production/assets/updateAssetsUrl.ts rename src/routes/production/editImage/{getDefaultProject.ts => getImageDefaultModle.ts} (99%) diff --git a/src/router.ts b/src/router.ts index 474e684..6ab4ca8 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,4 +1,4 @@ -// @routes-hash 39d27430eb844d91284da0877818f52f +// @routes-hash f45d740a638124d31e8f3a4ff25493ba import { Express } from "express"; import route1 from "./routes/agents/clearMemory"; @@ -48,85 +48,86 @@ import route44 from "./routes/other/getVersion"; import route45 from "./routes/production/assets/batchGenerateAssetsImage"; import route46 from "./routes/production/assets/getAssetsData"; import route47 from "./routes/production/assets/pollingImage"; -import route48 from "./routes/production/editImage/generateFlowImage"; -import route49 from "./routes/production/editImage/getDefaultProject"; -import route50 from "./routes/production/editImage/getImageFlow"; -import route51 from "./routes/production/editImage/saveImageFlow"; -import route52 from "./routes/production/editImage/updateImageFlow"; -import route53 from "./routes/production/exportImage"; -import route54 from "./routes/production/getFlowData"; -import route55 from "./routes/production/getProductionData"; -import route56 from "./routes/production/getStoryboardData"; -import route57 from "./routes/production/saveFlowData"; -import route58 from "./routes/production/storyboard/addStoryboard"; -import route59 from "./routes/production/storyboard/batchAddStoryboardInfo"; -import route60 from "./routes/production/storyboard/batchGenerateImage"; -import route61 from "./routes/production/storyboard/downPreviewImage"; -import route62 from "./routes/production/storyboard/editStoryboardInfo"; -import route63 from "./routes/production/storyboard/getStoryboardData"; -import route64 from "./routes/production/storyboard/pollingImage"; -import route65 from "./routes/production/storyboard/previewImage"; -import route66 from "./routes/production/storyboard/removeFrame"; -import route67 from "./routes/production/storyboard/updateStoryboardUrl"; -import route68 from "./routes/production/workbench/addTrack"; -import route69 from "./routes/production/workbench/confirmSelection"; -import route70 from "./routes/production/workbench/delVideo"; -import route71 from "./routes/production/workbench/generateVideo"; -import route72 from "./routes/production/workbench/generateVideoPrompt"; -import route73 from "./routes/production/workbench/getGenerateData"; -import route74 from "./routes/production/workbench/getVideoModelDetail"; -import route75 from "./routes/production/workbench/videoPolling"; -import route76 from "./routes/project/addProject"; -import route77 from "./routes/project/addVisual"; -import route78 from "./routes/project/addVisualManual"; -import route79 from "./routes/project/deleteVisualManual"; -import route80 from "./routes/project/delProject"; -import route81 from "./routes/project/editProject"; -import route82 from "./routes/project/editVisualManual"; -import route83 from "./routes/project/getProject"; -import route84 from "./routes/project/getVisualManual"; -import route85 from "./routes/project/visualManual"; -import route86 from "./routes/script/addScript"; -import route87 from "./routes/script/delScript"; -import route88 from "./routes/script/exportScript"; -import route89 from "./routes/script/extractAssets"; -import route90 from "./routes/script/getScrptApi"; -import route91 from "./routes/script/pollScriptAssets"; -import route92 from "./routes/script/updateScript"; -import route93 from "./routes/scriptAgent/getPlanData"; -import route94 from "./routes/scriptAgent/setPlanData"; -import route95 from "./routes/scriptAgent/updateData"; -import route96 from "./routes/setting/about/checkUpdate"; -import route97 from "./routes/setting/about/downloadApp"; -import route98 from "./routes/setting/agentDeploy/agentSetKey"; -import route99 from "./routes/setting/agentDeploy/deployAgentModel"; -import route100 from "./routes/setting/agentDeploy/getAgentDeploy"; -import route101 from "./routes/setting/dbConfig/clearData"; -import route102 from "./routes/setting/dev/getSwitchAiDevTool"; -import route103 from "./routes/setting/dev/updateSwitchAiDevTool"; -import route104 from "./routes/setting/fileManagement/openFolder"; -import route105 from "./routes/setting/getTextModel"; -import route106 from "./routes/setting/loginConfig/getUser"; -import route107 from "./routes/setting/loginConfig/updateUserPwd"; -import route108 from "./routes/setting/memoryConfig/delAllMemory"; -import route109 from "./routes/setting/memoryConfig/getMemory"; -import route110 from "./routes/setting/memoryConfig/sureMemory"; -import route111 from "./routes/setting/promptManage/getPrompt"; -import route112 from "./routes/setting/promptManage/updatePrompt"; -import route113 from "./routes/setting/skillManagement/getSkillContent"; -import route114 from "./routes/setting/skillManagement/getSkillList"; -import route115 from "./routes/setting/skillManagement/saveSkillContent"; -import route116 from "./routes/setting/vendorConfig/addVendor"; -import route117 from "./routes/setting/vendorConfig/deleteVendor"; -import route118 from "./routes/setting/vendorConfig/getVendorList"; -import route119 from "./routes/setting/vendorConfig/modelTest"; -import route120 from "./routes/setting/vendorConfig/updateCode"; -import route121 from "./routes/setting/vendorConfig/updateVendor"; -import route122 from "./routes/task/getProject"; -import route123 from "./routes/task/getTaskApi"; -import route124 from "./routes/task/getTaskCategories"; -import route125 from "./routes/task/taskDetails"; -import route126 from "./routes/test/test"; +import route48 from "./routes/production/assets/updateAssetsUrl"; +import route49 from "./routes/production/editImage/generateFlowImage"; +import route50 from "./routes/production/editImage/getImageDefaultModle"; +import route51 from "./routes/production/editImage/getImageFlow"; +import route52 from "./routes/production/editImage/saveImageFlow"; +import route53 from "./routes/production/editImage/updateImageFlow"; +import route54 from "./routes/production/exportImage"; +import route55 from "./routes/production/getFlowData"; +import route56 from "./routes/production/getProductionData"; +import route57 from "./routes/production/getStoryboardData"; +import route58 from "./routes/production/saveFlowData"; +import route59 from "./routes/production/storyboard/addStoryboard"; +import route60 from "./routes/production/storyboard/batchAddStoryboardInfo"; +import route61 from "./routes/production/storyboard/batchGenerateImage"; +import route62 from "./routes/production/storyboard/downPreviewImage"; +import route63 from "./routes/production/storyboard/editStoryboardInfo"; +import route64 from "./routes/production/storyboard/getStoryboardData"; +import route65 from "./routes/production/storyboard/pollingImage"; +import route66 from "./routes/production/storyboard/previewImage"; +import route67 from "./routes/production/storyboard/removeFrame"; +import route68 from "./routes/production/storyboard/updateStoryboardUrl"; +import route69 from "./routes/production/workbench/addTrack"; +import route70 from "./routes/production/workbench/confirmSelection"; +import route71 from "./routes/production/workbench/delVideo"; +import route72 from "./routes/production/workbench/generateVideo"; +import route73 from "./routes/production/workbench/generateVideoPrompt"; +import route74 from "./routes/production/workbench/getGenerateData"; +import route75 from "./routes/production/workbench/getVideoModelDetail"; +import route76 from "./routes/production/workbench/videoPolling"; +import route77 from "./routes/project/addProject"; +import route78 from "./routes/project/addVisual"; +import route79 from "./routes/project/addVisualManual"; +import route80 from "./routes/project/deleteVisualManual"; +import route81 from "./routes/project/delProject"; +import route82 from "./routes/project/editProject"; +import route83 from "./routes/project/editVisualManual"; +import route84 from "./routes/project/getProject"; +import route85 from "./routes/project/getVisualManual"; +import route86 from "./routes/project/visualManual"; +import route87 from "./routes/script/addScript"; +import route88 from "./routes/script/delScript"; +import route89 from "./routes/script/exportScript"; +import route90 from "./routes/script/extractAssets"; +import route91 from "./routes/script/getScrptApi"; +import route92 from "./routes/script/pollScriptAssets"; +import route93 from "./routes/script/updateScript"; +import route94 from "./routes/scriptAgent/getPlanData"; +import route95 from "./routes/scriptAgent/setPlanData"; +import route96 from "./routes/scriptAgent/updateData"; +import route97 from "./routes/setting/about/checkUpdate"; +import route98 from "./routes/setting/about/downloadApp"; +import route99 from "./routes/setting/agentDeploy/agentSetKey"; +import route100 from "./routes/setting/agentDeploy/deployAgentModel"; +import route101 from "./routes/setting/agentDeploy/getAgentDeploy"; +import route102 from "./routes/setting/dbConfig/clearData"; +import route103 from "./routes/setting/dev/getSwitchAiDevTool"; +import route104 from "./routes/setting/dev/updateSwitchAiDevTool"; +import route105 from "./routes/setting/fileManagement/openFolder"; +import route106 from "./routes/setting/getTextModel"; +import route107 from "./routes/setting/loginConfig/getUser"; +import route108 from "./routes/setting/loginConfig/updateUserPwd"; +import route109 from "./routes/setting/memoryConfig/delAllMemory"; +import route110 from "./routes/setting/memoryConfig/getMemory"; +import route111 from "./routes/setting/memoryConfig/sureMemory"; +import route112 from "./routes/setting/promptManage/getPrompt"; +import route113 from "./routes/setting/promptManage/updatePrompt"; +import route114 from "./routes/setting/skillManagement/getSkillContent"; +import route115 from "./routes/setting/skillManagement/getSkillList"; +import route116 from "./routes/setting/skillManagement/saveSkillContent"; +import route117 from "./routes/setting/vendorConfig/addVendor"; +import route118 from "./routes/setting/vendorConfig/deleteVendor"; +import route119 from "./routes/setting/vendorConfig/getVendorList"; +import route120 from "./routes/setting/vendorConfig/modelTest"; +import route121 from "./routes/setting/vendorConfig/updateCode"; +import route122 from "./routes/setting/vendorConfig/updateVendor"; +import route123 from "./routes/task/getProject"; +import route124 from "./routes/task/getTaskApi"; +import route125 from "./routes/task/getTaskCategories"; +import route126 from "./routes/task/taskDetails"; +import route127 from "./routes/test/test"; export default async (app: Express) => { app.use("/api/agents/clearMemory", route1); @@ -176,83 +177,84 @@ export default async (app: Express) => { app.use("/api/production/assets/batchGenerateAssetsImage", route45); app.use("/api/production/assets/getAssetsData", route46); app.use("/api/production/assets/pollingImage", route47); - app.use("/api/production/editImage/generateFlowImage", route48); - app.use("/api/production/editImage/getDefaultProject", route49); - app.use("/api/production/editImage/getImageFlow", route50); - app.use("/api/production/editImage/saveImageFlow", route51); - app.use("/api/production/editImage/updateImageFlow", route52); - app.use("/api/production/exportImage", route53); - app.use("/api/production/getFlowData", route54); - app.use("/api/production/getProductionData", route55); - app.use("/api/production/getStoryboardData", route56); - app.use("/api/production/saveFlowData", route57); - app.use("/api/production/storyboard/addStoryboard", route58); - app.use("/api/production/storyboard/batchAddStoryboardInfo", route59); - app.use("/api/production/storyboard/batchGenerateImage", route60); - app.use("/api/production/storyboard/downPreviewImage", route61); - app.use("/api/production/storyboard/editStoryboardInfo", route62); - app.use("/api/production/storyboard/getStoryboardData", route63); - app.use("/api/production/storyboard/pollingImage", route64); - app.use("/api/production/storyboard/previewImage", route65); - app.use("/api/production/storyboard/removeFrame", route66); - app.use("/api/production/storyboard/updateStoryboardUrl", route67); - app.use("/api/production/workbench/addTrack", route68); - app.use("/api/production/workbench/confirmSelection", route69); - app.use("/api/production/workbench/delVideo", route70); - app.use("/api/production/workbench/generateVideo", route71); - app.use("/api/production/workbench/generateVideoPrompt", route72); - app.use("/api/production/workbench/getGenerateData", route73); - app.use("/api/production/workbench/getVideoModelDetail", route74); - app.use("/api/production/workbench/videoPolling", route75); - app.use("/api/project/addProject", route76); - app.use("/api/project/addVisual", route77); - app.use("/api/project/addVisualManual", route78); - app.use("/api/project/deleteVisualManual", route79); - app.use("/api/project/delProject", route80); - app.use("/api/project/editProject", route81); - app.use("/api/project/editVisualManual", route82); - app.use("/api/project/getProject", route83); - app.use("/api/project/getVisualManual", route84); - app.use("/api/project/visualManual", route85); - app.use("/api/script/addScript", route86); - app.use("/api/script/delScript", route87); - app.use("/api/script/exportScript", route88); - app.use("/api/script/extractAssets", route89); - app.use("/api/script/getScrptApi", route90); - app.use("/api/script/pollScriptAssets", route91); - app.use("/api/script/updateScript", route92); - app.use("/api/scriptAgent/getPlanData", route93); - app.use("/api/scriptAgent/setPlanData", route94); - app.use("/api/scriptAgent/updateData", route95); - app.use("/api/setting/about/checkUpdate", route96); - app.use("/api/setting/about/downloadApp", route97); - app.use("/api/setting/agentDeploy/agentSetKey", route98); - app.use("/api/setting/agentDeploy/deployAgentModel", route99); - app.use("/api/setting/agentDeploy/getAgentDeploy", route100); - app.use("/api/setting/dbConfig/clearData", route101); - app.use("/api/setting/dev/getSwitchAiDevTool", route102); - app.use("/api/setting/dev/updateSwitchAiDevTool", route103); - app.use("/api/setting/fileManagement/openFolder", route104); - app.use("/api/setting/getTextModel", route105); - app.use("/api/setting/loginConfig/getUser", route106); - app.use("/api/setting/loginConfig/updateUserPwd", route107); - app.use("/api/setting/memoryConfig/delAllMemory", route108); - app.use("/api/setting/memoryConfig/getMemory", route109); - app.use("/api/setting/memoryConfig/sureMemory", route110); - app.use("/api/setting/promptManage/getPrompt", route111); - app.use("/api/setting/promptManage/updatePrompt", route112); - app.use("/api/setting/skillManagement/getSkillContent", route113); - app.use("/api/setting/skillManagement/getSkillList", route114); - app.use("/api/setting/skillManagement/saveSkillContent", route115); - app.use("/api/setting/vendorConfig/addVendor", route116); - app.use("/api/setting/vendorConfig/deleteVendor", route117); - app.use("/api/setting/vendorConfig/getVendorList", route118); - app.use("/api/setting/vendorConfig/modelTest", route119); - app.use("/api/setting/vendorConfig/updateCode", route120); - app.use("/api/setting/vendorConfig/updateVendor", route121); - app.use("/api/task/getProject", route122); - app.use("/api/task/getTaskApi", route123); - app.use("/api/task/getTaskCategories", route124); - app.use("/api/task/taskDetails", route125); - app.use("/api/test/test", route126); + app.use("/api/production/assets/updateAssetsUrl", route48); + app.use("/api/production/editImage/generateFlowImage", route49); + app.use("/api/production/editImage/getImageDefaultModle", route50); + app.use("/api/production/editImage/getImageFlow", route51); + app.use("/api/production/editImage/saveImageFlow", route52); + app.use("/api/production/editImage/updateImageFlow", route53); + app.use("/api/production/exportImage", route54); + app.use("/api/production/getFlowData", route55); + app.use("/api/production/getProductionData", route56); + app.use("/api/production/getStoryboardData", route57); + app.use("/api/production/saveFlowData", route58); + app.use("/api/production/storyboard/addStoryboard", route59); + app.use("/api/production/storyboard/batchAddStoryboardInfo", route60); + app.use("/api/production/storyboard/batchGenerateImage", route61); + app.use("/api/production/storyboard/downPreviewImage", route62); + app.use("/api/production/storyboard/editStoryboardInfo", route63); + app.use("/api/production/storyboard/getStoryboardData", route64); + app.use("/api/production/storyboard/pollingImage", route65); + app.use("/api/production/storyboard/previewImage", route66); + app.use("/api/production/storyboard/removeFrame", route67); + app.use("/api/production/storyboard/updateStoryboardUrl", route68); + app.use("/api/production/workbench/addTrack", route69); + app.use("/api/production/workbench/confirmSelection", route70); + app.use("/api/production/workbench/delVideo", route71); + app.use("/api/production/workbench/generateVideo", route72); + app.use("/api/production/workbench/generateVideoPrompt", route73); + app.use("/api/production/workbench/getGenerateData", route74); + app.use("/api/production/workbench/getVideoModelDetail", route75); + app.use("/api/production/workbench/videoPolling", route76); + app.use("/api/project/addProject", route77); + app.use("/api/project/addVisual", route78); + app.use("/api/project/addVisualManual", route79); + app.use("/api/project/deleteVisualManual", route80); + app.use("/api/project/delProject", route81); + app.use("/api/project/editProject", route82); + app.use("/api/project/editVisualManual", route83); + app.use("/api/project/getProject", route84); + app.use("/api/project/getVisualManual", route85); + app.use("/api/project/visualManual", route86); + app.use("/api/script/addScript", route87); + app.use("/api/script/delScript", route88); + app.use("/api/script/exportScript", route89); + app.use("/api/script/extractAssets", route90); + app.use("/api/script/getScrptApi", route91); + app.use("/api/script/pollScriptAssets", route92); + app.use("/api/script/updateScript", route93); + app.use("/api/scriptAgent/getPlanData", route94); + app.use("/api/scriptAgent/setPlanData", route95); + app.use("/api/scriptAgent/updateData", route96); + app.use("/api/setting/about/checkUpdate", route97); + app.use("/api/setting/about/downloadApp", route98); + app.use("/api/setting/agentDeploy/agentSetKey", route99); + app.use("/api/setting/agentDeploy/deployAgentModel", route100); + app.use("/api/setting/agentDeploy/getAgentDeploy", route101); + app.use("/api/setting/dbConfig/clearData", route102); + app.use("/api/setting/dev/getSwitchAiDevTool", route103); + app.use("/api/setting/dev/updateSwitchAiDevTool", route104); + app.use("/api/setting/fileManagement/openFolder", route105); + app.use("/api/setting/getTextModel", route106); + app.use("/api/setting/loginConfig/getUser", route107); + app.use("/api/setting/loginConfig/updateUserPwd", route108); + app.use("/api/setting/memoryConfig/delAllMemory", route109); + app.use("/api/setting/memoryConfig/getMemory", route110); + app.use("/api/setting/memoryConfig/sureMemory", route111); + app.use("/api/setting/promptManage/getPrompt", route112); + app.use("/api/setting/promptManage/updatePrompt", route113); + app.use("/api/setting/skillManagement/getSkillContent", route114); + app.use("/api/setting/skillManagement/getSkillList", route115); + app.use("/api/setting/skillManagement/saveSkillContent", route116); + app.use("/api/setting/vendorConfig/addVendor", route117); + app.use("/api/setting/vendorConfig/deleteVendor", route118); + app.use("/api/setting/vendorConfig/getVendorList", route119); + app.use("/api/setting/vendorConfig/modelTest", route120); + app.use("/api/setting/vendorConfig/updateCode", route121); + app.use("/api/setting/vendorConfig/updateVendor", route122); + app.use("/api/task/getProject", route123); + app.use("/api/task/getTaskApi", route124); + app.use("/api/task/getTaskCategories", route125); + app.use("/api/task/taskDetails", route126); + app.use("/api/test/test", route127); } diff --git a/src/routes/production/assets/batchGenerateAssetsImage.ts b/src/routes/production/assets/batchGenerateAssetsImage.ts index 9ba69a9..5ba4f67 100644 --- a/src/routes/production/assets/batchGenerateAssetsImage.ts +++ b/src/routes/production/assets/batchGenerateAssetsImage.ts @@ -96,7 +96,7 @@ export default router.post( const savePath = `/${projectId}/assets/${scriptId}/${u.uuid()}.jpg`; await imageCls.save(savePath); // 更新对应数据库 - await u.db("o_assets").where("id", item.id).update({ imageId: imageId }); + await u.db("o_assets").where("id", item.id).update({ imageId: imageId, prompt: text }); await u.db("o_image").where({ id: imageId }).update({ state: "已完成", filePath: savePath }); imageData.push({ id: item.id, diff --git a/src/routes/production/assets/updateAssetsUrl.ts b/src/routes/production/assets/updateAssetsUrl.ts new file mode 100644 index 0000000..6317e83 --- /dev/null +++ b/src/routes/production/assets/updateAssetsUrl.ts @@ -0,0 +1,26 @@ +import express from "express"; +import u from "@/utils"; +import { z } from "zod"; +import { success } from "@/lib/responseFormat"; +import { validateFields } from "@/middleware/middleware"; +import { id } from "zod/locales"; +const router = express.Router(); + +export default router.post( + "/", + validateFields({ + id: z.number(), + url: z.string(), + flowId: z.number(), + }), + async (req, res) => { + const { id, url, flowId } = req.body; + const [imageId] = await u.db("o_image").insert({ + filePath: new URL(url).pathname, + state: "已完成", + assetsId: id, + }); + await u.db("o_assets").where({ id }).update({ flowId, imageId }); + res.status(200).send(success({ message: "更新提示词成功" })); + }, +); diff --git a/src/routes/production/editImage/getDefaultProject.ts b/src/routes/production/editImage/getImageDefaultModle.ts similarity index 99% rename from src/routes/production/editImage/getDefaultProject.ts rename to src/routes/production/editImage/getImageDefaultModle.ts index 6395cd2..02fa86d 100644 --- a/src/routes/production/editImage/getDefaultProject.ts +++ b/src/routes/production/editImage/getImageDefaultModle.ts @@ -13,7 +13,6 @@ export default router.post( async (req, res) => { const { projectId } = req.body; const imageFlowData = await u.db("o_project").where("id", projectId).select("imageModel", "imageQuality").first(); - return res.status(200).send(success(imageFlowData)); }, ); diff --git a/src/routes/production/getFlowData.ts b/src/routes/production/getFlowData.ts index f73749b..c6d1a70 100644 --- a/src/routes/production/getFlowData.ts +++ b/src/routes/production/getFlowData.ts @@ -27,7 +27,7 @@ export default router.post( const assetsData = await u .db("o_assets") .leftJoin("o_image", "o_assets.imageId", "o_image.id") - .select("o_assets.*", "o_image.filePath") + .select("o_assets.*", "o_image.filePath", "o_image.state") // @ts-ignore .where("o_assets.id", "in", assetIds) .whereNull("o_assets.assetsId") @@ -35,7 +35,7 @@ export default router.post( let childAssetsData = await u .db("o_assets") .leftJoin("o_image", "o_assets.imageId", "o_image.id") - .select("o_assets.*", "o_image.filePath") + .select("o_assets.*", "o_image.filePath", "o_image.state") .where("o_assets.projectId", projectId) // @ts-ignore .where("o_assets.id", "in", assetIds) diff --git a/src/routes/script/extractAssets.ts b/src/routes/script/extractAssets.ts index d666584..33219a2 100644 --- a/src/routes/script/extractAssets.ts +++ b/src/routes/script/extractAssets.ts @@ -61,13 +61,12 @@ export default router.post( if (!scriptIds.length) return res.status(400).send(error("请先选择剧本")); const scripts = await u.db("o_script").whereIn("id", scriptIds); - const intansce = u.Ai.Text("universalAi"); // 构建 scriptId -> script 内容的映射 const scriptMap = new Map(scripts.map((s: o_script) => [s.id, s])); await u.db("o_script").whereIn("id", scriptIds).update({ - extractState: 0, + extractState: 2, }); const errors: { scriptId: number; error: string }[] = []; @@ -139,7 +138,7 @@ export default router.post( errorReason: null, }); } - + res.send(success("开始提取资产")); // 逐组处理(每组最多 groupSize 集剧本一起发给 AI) for (const group of scriptGroups) { // 过滤有效剧本 @@ -150,11 +149,19 @@ export default router.post( errors.push({ scriptId, error: "未找到对应剧本" }); await u.db("o_script").where("id", scriptId).update({ extractState: -1, errorReason: "未找到对应剧本" }); } else { - validScripts.push({ id: scriptId, script }); + // 查看状态是否为等待提取,仅对等待提取进行生成 + const item = await u.db("o_script").where("id", scriptId).select("extractState").first(); + if (item?.extractState == 2) { + validScripts.push({ id: scriptId, script }); + } } } if (!validScripts.length) continue; - + const validScriptIds = validScripts.map((v) => v.id); + // 修改状态为正在提取中 + await u.db("o_script").whereIn("id", validScriptIds).update({ + extractState: 0, // 正在提取 + }); // 查询当前项目已有的资产列表,提供给 AI 参考 const existingAssets = await u.db("o_assets").where("projectId", projectId).select("name", "type"); const existingAssetsList = existingAssets.map((a) => `${a.name}(${a.type})`).join("、"); @@ -164,8 +171,6 @@ export default router.post( .map(({ id, script }) => `===== 【剧本ID: ${id}】${script.name || ""} =====\n${script.content}`) .join("\n\n"); - const validScriptIds = validScripts.map((v) => v.id); - // 用闭包收集 AI 返回的资产 let collectedNew: NewAsset[] = []; let collectedExisting: ExistingAssetRef[] = []; @@ -194,7 +199,7 @@ export default router.post( ? `\n\n【已有资产列表】:${existingAssetsList}\n对于已有资产,如果在剧本中出现,只需在 existingAssetRefs 中给出资产名称和对应的 scriptIds 数组即可,无需重复生成 desc/type。对于新发现的资产(不在已有列表中),请在 newAssets 中给出完整信息。` : ""; - const output = await intansce.invoke({ + const output = await u.Ai.Text("universalAi").invoke({ messages: [ { role: "system", @@ -242,7 +247,5 @@ export default router.post( existingRefs: collectedExisting, }); } - - return res.send(success("开始提取资产")); }, );