From 71661ac746768c9c2dbf180666c58c3c21a8fb0b Mon Sep 17 00:00:00 2001 From: zhishi <1951671751@qq.com> Date: Sat, 28 Mar 2026 00:04:04 +0800 Subject: [PATCH 1/2] no message --- src/routes/setting/vendorConfig/addVendor.ts | 3 ++- src/types/database.d.ts | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/routes/setting/vendorConfig/addVendor.ts b/src/routes/setting/vendorConfig/addVendor.ts index a94ef02..83cf3ca 100644 --- a/src/routes/setting/vendorConfig/addVendor.ts +++ b/src/routes/setting/vendorConfig/addVendor.ts @@ -90,7 +90,8 @@ export default router.post( const errorMsg = result.error.issues.map((e) => `${e.path.join(".")}: ${e.message}`).join("; "); return res.status(400).send(error(`vendor配置校验失败: ${errorMsg}`)); } - if (vendor.id.include(":")) return res.status(400).send(error("id不能包含英文冒号")); + + if ((vendor.id as string).includes(":")) return res.status(400).send(error("id不能包含英文冒号")); await u.db("o_vendorConfig").insert({ id: vendor.id, author: vendor.author, diff --git a/src/types/database.d.ts b/src/types/database.d.ts index 69a326a..1058d67 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,12 +1,20 @@ -// @db-hash d07435d983861c95bb42e6e4742ef1c1 +// @db-hash 662752a8a62a88e2dc636b6d985d3b87 //该文件由脚本自动生成,请勿手动修改 +export interface _o_script_old_20260327 { + 'content'?: string | null; + 'createTime'?: number | null; + 'id'?: number; + 'name'?: string | null; + 'projectId'?: number | null; +} export interface memories { 'content': string; 'createTime': number; 'embedding'?: string | null; 'id'?: string; 'isolationKey': string; + 'name'?: string | null; 'relatedMessageIds'?: string | null; 'role'?: string | null; 'summarized'?: number | null; @@ -46,7 +54,6 @@ export interface o_assets { 'name'?: string | null; 'projectId'?: number | null; 'prompt'?: string | null; - 'promptState'?: string | null; 'remark'?: string | null; 'scriptId'?: number | null; 'startTime'?: number | null; @@ -121,11 +128,13 @@ export interface o_project { export interface o_prompt { 'id'?: number; 'name'?: string | null; - 'prompt'?: string | null; + 'rompt'?: string | null; } export interface o_script { 'content'?: string | null; 'createTime'?: number | null; + 'errorReason'?: string | null; + 'extractState'?: number | null; 'id'?: number; 'name'?: string | null; 'projectId'?: number | null; @@ -227,6 +236,7 @@ export interface o_videoConfig { } export interface DB { + "_o_script_old_20260327": _o_script_old_20260327; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData; From 6c39194964ad620460b601df2dcf43825f492489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=B8=85?= <2944435683> Date: Sat, 28 Mar 2026 00:25:53 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B5=84=E4=BA=A7?= =?UTF-8?q?=E8=BD=AE=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/assets/pollingImageAssets.ts | 3 +- src/routes/assets/pollingPromptAssets.ts | 2 +- .../batchGenerateImageAssets.ts | 33 ++++--------------- .../assetsGenerate/batchPolishAssetsPrompt.ts | 19 +++-------- src/types/database.d.ts | 8 +++-- 5 files changed, 20 insertions(+), 45 deletions(-) diff --git a/src/routes/assets/pollingImageAssets.ts b/src/routes/assets/pollingImageAssets.ts index df8a83a..428cb6a 100644 --- a/src/routes/assets/pollingImageAssets.ts +++ b/src/routes/assets/pollingImageAssets.ts @@ -14,8 +14,9 @@ export default router.post( const { ids } = req.body; const data = await u .db("o_assets") - .leftJoin("o_image", "o_assets.id", "o_image.assetsId") + .leftJoin("o_image", "o_assets.imageId", "o_image.id") .whereIn("o_assets.id", ids) + .whereNot("o_image.state", "生成中") .select("o_image.state", "o_assets.id", "o_image.filePath"); const result = await Promise.all( data.map(async (item: any) => ({ diff --git a/src/routes/assets/pollingPromptAssets.ts b/src/routes/assets/pollingPromptAssets.ts index 40a285a..61efdd1 100644 --- a/src/routes/assets/pollingPromptAssets.ts +++ b/src/routes/assets/pollingPromptAssets.ts @@ -12,7 +12,7 @@ export default router.post( }), async (req, res) => { const { ids } = req.body; - const data = await u.db("o_assets").whereIn("id", ids).select("*"); + const data = await u.db("o_assets").whereIn("id", ids).whereNot("promptState", "生成中").select("*"); res.status(200).send(success(data)); }, ); diff --git a/src/routes/assetsGenerate/batchGenerateImageAssets.ts b/src/routes/assetsGenerate/batchGenerateImageAssets.ts index 16fc998..1fce062 100644 --- a/src/routes/assetsGenerate/batchGenerateImageAssets.ts +++ b/src/routes/assetsGenerate/batchGenerateImageAssets.ts @@ -88,21 +88,18 @@ export default router.post("/", validateFields(requestSchema), async (req, res) state: "生成中", assetsId: item.id, }); + await u.db("o_assets").where("id", item.id).update({ imageId }); totalNovelId.push(imageId); } - // 3. 按并发数限制并发生成 + // 3. 后台异步并发生成,不阻塞响应 const limit = pLimit(concurrentCount ?? 1); - const results: { assetsId: number; success: boolean; path?: string; message?: string }[] = []; const tasks = items.map((item: { id: number; type: string; name: string; prompt: string; base64: string | null | undefined }, index: number) => limit(async () => { const imageId = totalNovelId[index]; const cfg = assetTypeConfig[item.type as AssetType]; - if (!cfg) { - results.push({ assetsId: item.id, success: false, message: `不支持的类型: ${item.type}` }); - return; - } + if (!cfg) return; await u.db("o_assets").where("id", item.id).update({ imageId }); @@ -126,10 +123,7 @@ export default router.post("/", validateFields(requestSchema), async (req, res) aiImage.save(imagePath); const imageData = await u.db("o_image").where("id", imageId).select("*").first(); - if (!imageData) { - results.push({ assetsId: item.id, success: false, message: "资产已被删除" }); - return; - } + if (!imageData) return; await u .db("o_image") @@ -142,28 +136,15 @@ export default router.post("/", validateFields(requestSchema), async (req, res) resolution, }); - const path = await u.oss.getFileUrl(imagePath); await u.db("o_assets").where("id", item.id).update({ imageId }); - - results.push({ assetsId: item.id, success: true, path }); } catch (e: any) { await u.db("o_image").where("id", imageId).update({ state: "生成失败" }); - results.push({ assetsId: item.id, success: false, message: u.error(e).message || "图片生成失败" }); } }), ); - await Promise.all(tasks); + // 后台执行,不等待结果 + Promise.all(tasks).catch(() => {}); - const successCount = results.filter((r) => r.success).length; - const failCount = results.filter((r) => !r.success).length; - - return res.status(200).send( - success({ - total: items.length, - successCount, - failCount, - results, - }), - ); + return res.status(200).send(success({ total: items.length })); }); diff --git a/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts b/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts index adaef73..422bb43 100644 --- a/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts +++ b/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts @@ -99,17 +99,13 @@ export default router.post( const assetsIds = items.map((item: { assetsId: number }) => item.assetsId); await u.db("o_assets").whereIn("id", assetsIds).update({ promptState: "生成中" }); - // 按并发数限制并发生成 + // 后台异步并发生成,不阻塞响应 const limit = pLimit(concurrentCount ?? 1); - const results: { assetsId: number; success: boolean; prompt?: string; message?: string }[] = []; const tasks = items.map((item: { assetsId: number; type: string; name: string; describe: string }) => limit(async () => { const config = typeConfig[item.type]; - if (!config) { - results.push({ assetsId: item.assetsId, success: false, message: "不支持的类型" }); - return; - } + if (!config) return; findItemByName(result, item.name, config.itemType); @@ -137,25 +133,20 @@ export default router.post( })) as any; if (!_output) { - results.push({ assetsId: item.assetsId, success: false, message: "生成结果为空" }); await u.db("o_assets").where("id", item.assetsId).update({ promptState: "生成失败" }); return; } await u.db("o_assets").where("id", item.assetsId).update({ prompt: _output, promptState: "已完成" }); - results.push({ assetsId: item.assetsId, success: true, prompt: _output }); } catch (e: any) { await u.db("o_assets").where("id", item.assetsId).update({ promptState: "生成失败" }); - results.push({ assetsId: item.assetsId, success: false, message: e?.data?.error?.message ?? e?.message ?? "生成失败" }); } }), ); - await Promise.all(tasks); + // 后台执行,不等待结果 + Promise.all(tasks).catch(() => {}); - const successCount = results.filter((r) => r.success).length; - const failCount = results.filter((r) => !r.success).length; - - return res.status(200).send(success({ total: items.length, successCount, failCount, results })); + return res.status(200).send(success({ total: items.length })); }, ); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index eed488e..eea92c2 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,4 +1,4 @@ -// @db-hash 8e5f2b7a28d4494b291d802b055b6399 +// @db-hash 05ecfd675f848d88631c1a546996caea //该文件由脚本自动生成,请勿手动修改 export interface memories { @@ -7,7 +7,6 @@ export interface memories { 'embedding'?: string | null; 'id'?: string; 'isolationKey': string; - 'name'?: string | null; 'relatedMessageIds'?: string | null; 'role'?: string | null; 'summarized'?: number | null; @@ -47,6 +46,7 @@ export interface o_assets { 'name'?: string | null; 'projectId'?: number | null; 'prompt'?: string | null; + 'promptState'?: string | null; 'remark'?: string | null; 'scriptId'?: number | null; 'startTime'?: number | null; @@ -121,11 +121,13 @@ export interface o_project { export interface o_prompt { 'id'?: number; 'name'?: string | null; - 'rompt'?: string | null; + 'prompt'?: string | null; } export interface o_script { 'content'?: string | null; 'createTime'?: number | null; + 'errorReason'?: string | null; + 'extractState'?: number | null; 'id'?: number; 'name'?: string | null; 'projectId'?: number | null;