diff --git a/src/lib/initDB.ts b/src/lib/initDB.ts index b70e11a..6c30f9f 100644 --- a/src/lib/initDB.ts +++ b/src/lib/initDB.ts @@ -454,6 +454,7 @@ description: 专注于从剧本内容中提取所使用的资产(角色、场 table.integer("flowId"); //工作流id table.integer("startTime"); table.string("promptState"); + table.text("promptErrorReason"); table.primary(["id"]); table.unique(["id"]); }, @@ -470,6 +471,7 @@ description: 专注于从剧本内容中提取所使用的资产(角色、场 table.text("model"); table.text("resolution"); table.text("state"); + table.text("errorReason"); table.text("reason"); table.primary(["id"]); table.unique(["id"]); diff --git a/src/routes/assets/getAssetsApi.ts b/src/routes/assets/getAssetsApi.ts index 8910fbe..c3d95b1 100644 --- a/src/routes/assets/getAssetsApi.ts +++ b/src/routes/assets/getAssetsApi.ts @@ -34,7 +34,7 @@ export default router.post( let childQuery = u .db("o_assets") .leftJoin("o_image", "o_assets.imageId", "o_image.id") - .select("o_assets.*", "o_image.filePath", "o_image.state") + .select("o_assets.*", "o_image.filePath", "o_image.state", "o_image.errorReason") .where("o_assets.projectId", projectId) .andWhere("o_assets.type", type) .whereNotNull("o_assets.assetsId"); diff --git a/src/routes/assetsGenerate/batchGenerateImageAssets.ts b/src/routes/assetsGenerate/batchGenerateImageAssets.ts index 55e4e30..9cd1094 100644 --- a/src/routes/assetsGenerate/batchGenerateImageAssets.ts +++ b/src/routes/assetsGenerate/batchGenerateImageAssets.ts @@ -142,7 +142,10 @@ export default router.post("/", validateFields(requestSchema), async (req, res) await u.db("o_assets").where("id", item.id).update({ imageId }); } catch (e: any) { - await u.db("o_image").where("id", imageId).update({ state: "生成失败" }); + await u + .db("o_image") + .where("id", imageId) + .update({ state: "生成失败", errorReason: u.error(e).message }); } }), ); diff --git a/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts b/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts index 1738e99..72c9c07 100644 --- a/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts +++ b/src/routes/assetsGenerate/batchPolishAssetsPrompt.ts @@ -127,13 +127,18 @@ export default router.post( await u.db("o_assets").where("id", item.assetsId).update({ prompt: _output, promptState: "已完成" }); } catch (e: any) { - await u.db("o_assets").where("id", item.assetsId).update({ promptState: "生成失败" }); + await u + .db("o_assets") + .where("id", item.assetsId) + .update({ promptState: "失败", promptErrorReason: u.error(e).message }); } }), ); // 后台执行,不等待结果 - Promise.all(tasks).catch(() => {}); + Promise.all(tasks).catch((err: any) => { + res.status(500).send(error(err)); + }); return res.status(200).send(success({ total: items.length })); }, diff --git a/src/routes/assetsGenerate/generateAssets.ts b/src/routes/assetsGenerate/generateAssets.ts index 830c536..1c32f5d 100644 --- a/src/routes/assetsGenerate/generateAssets.ts +++ b/src/routes/assetsGenerate/generateAssets.ts @@ -134,7 +134,10 @@ export default router.post("/", validateFields(requestSchema), async (req, res) return res.status(200).send(success({ path, assetsId: id })); } catch (e) { - await u.db("o_image").where("id", imageId).update({ state: "生成失败" }); + await u + .db("o_image") + .where("id", imageId) + .update({ state: "生成失败", errorReason: u.error(e).message }); return res.status(400).send(error(u.error(e).message || "图片生成失败")); } }); diff --git a/src/routes/assetsGenerate/polishAssetsPrompt.ts b/src/routes/assetsGenerate/polishAssetsPrompt.ts index c02decc..438af1e 100644 --- a/src/routes/assetsGenerate/polishAssetsPrompt.ts +++ b/src/routes/assetsGenerate/polishAssetsPrompt.ts @@ -110,6 +110,10 @@ export default router.post( res.status(200).send(success({ prompt: _output, assetsId })); } catch (e: any) { + await u + .db("o_assets") + .where("id", assetsId) + .update({ promptState: "失败", promptErrorReason: u.error(e).message }); return res.status(500).send(error(e?.data?.error?.message ?? e?.message ?? "生成失败")); } }, diff --git a/src/routes/cornerScape/getAllAssets.ts b/src/routes/cornerScape/getAllAssets.ts index ef4ce0a..83620a1 100644 --- a/src/routes/cornerScape/getAllAssets.ts +++ b/src/routes/cornerScape/getAllAssets.ts @@ -16,12 +16,13 @@ export default router.post( const data = await u .db("o_assets") .leftJoin("o_image", "o_assets.imageId", "o_image.id") - .select("o_assets.*", "o_image.filePath", "o_image.state", "o_image.model", "o_image.resolution") + .select("o_assets.*", "o_image.filePath", "o_image.state", "o_image.model", "o_image.resolution", "o_image.errorReason") .where("o_assets.projectId", projectId) .andWhere("o_assets.type", "<>", "clip") .modify((qb) => { if (type && type.length > 0) qb.whereIn("o_assets.type", type); - }).orderByRaw(`CASE o_assets.type WHEN 'role' THEN 1 WHEN 'scene' THEN 2 WHEN 'tool' THEN 3 ELSE 4 END`); + }) + .orderByRaw(`CASE o_assets.type WHEN 'role' THEN 1 WHEN 'scene' THEN 2 WHEN 'tool' THEN 3 ELSE 4 END`); const result = await Promise.all( data.map(async (parent: any) => { const historyImages = await u.db("o_image").where("assetsId", parent.id).andWhere("state", "已完成").select("id", "filePath"); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index 6d8457b..d72b0fc 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,48 +1,42 @@ -// @db-hash c145f43374602285beea82bbd51eaec8 +// @db-hash 4789feeeda48b86ecadc17318a89460b //该文件由脚本自动生成,请勿手动修改 -export interface _o_storyboard_old_20260331 { - 'camera'?: string | null; - 'createTime'?: number | null; - 'description'?: string | null; - 'duration'?: string | null; - 'filePath'?: string | null; - 'frameMode'?: string | null; +export interface _o_assets_old_20260331 { + 'assetsId'?: number | null; + 'describe'?: string | null; 'id'?: number; - 'index'?: number | null; - 'lines'?: string | null; - 'mode'?: string | null; - 'model'?: string | null; + 'imageId'?: number | null; + 'name'?: string | null; + 'projectId'?: number | null; 'prompt'?: string | null; - 'reason'?: string | null; - 'resolution'?: string | null; + 'promptState'?: string | null; + 'remark'?: string | null; 'scriptId'?: number | null; - 'sound'?: string | null; - 'state'?: string | null; - 'title'?: string | null; - 'videoPrompt'?: string | null; + 'startTime'?: number | null; + 'type'?: string | null; } -export interface _o_storyboard_old_20260331_1 { - 'camera'?: string | null; - 'createTime'?: number | null; - 'description'?: string | null; - 'duration'?: string | null; +export interface _o_image_old_20260331 { + 'assetsId'?: number | null; 'filePath'?: string | null; - 'frameMode'?: string | null; 'id'?: number; - 'index'?: number | null; - 'lines'?: string | null; - 'mode'?: string | null; 'model'?: string | null; - 'prompt'?: string | null; - 'reason'?: string | null; 'resolution'?: string | null; - 'scriptId'?: number | null; - 'sound'?: string | null; 'state'?: string | null; - 'title'?: string | null; - 'track'?: string | null; - 'videoPrompt'?: string | null; + 'type'?: string | null; +} +export interface _o_project_old_20260331 { + 'artStyle'?: string | null; + 'createTime'?: number | null; + 'id'?: number | null; + 'imageModel'?: string | null; + 'imageQuality'?: string | null; + 'intro'?: string | null; + 'name'?: string | null; + 'projectType'?: string | null; + 'type'?: string | null; + 'userId'?: number | null; + 'videoModel'?: string | null; + 'videoRatio'?: string | null; } export interface memories { 'content': string; @@ -90,6 +84,7 @@ export interface o_assets { 'name'?: string | null; 'projectId'?: number | null; 'prompt'?: string | null; + 'promptErrorReason'?: string | null; 'promptState'?: string | null; 'remark'?: string | null; 'scriptId'?: number | null; @@ -113,10 +108,10 @@ export interface o_eventChapter { } export interface o_image { 'assetsId'?: number | null; + 'errorReason'?: string | null; 'filePath'?: string | null; 'id'?: number; 'model'?: string | null; - 'reason'?: string | null; 'resolution'?: string | null; 'state'?: string | null; 'type'?: string | null; @@ -157,6 +152,7 @@ export interface o_project { 'imageModel'?: string | null; 'imageQuality'?: string | null; 'intro'?: string | null; + 'mode'?: string | null; 'name'?: string | null; 'projectType'?: string | null; 'type'?: string | null; @@ -204,17 +200,25 @@ export interface o_skillList { 'updateTime': number; } export interface o_storyboard { + 'camera'?: string | null; 'createTime'?: number | null; + 'description'?: string | null; 'duration'?: string | null; 'filePath'?: string | null; + 'frameMode'?: string | null; 'id'?: number; 'index'?: number | null; - 'projectId'?: number | null; + 'lines'?: string | null; + 'mode'?: string | null; + 'model'?: string | null; 'prompt'?: string | null; 'reason'?: string | null; + 'resolution'?: string | null; 'scriptId'?: number | null; + 'sound'?: string | null; 'state'?: string | null; - 'trackId'?: number | null; + 'title'?: string | null; + 'videoPrompt'?: string | null; } export interface o_tasks { 'describe'?: string | null; @@ -251,22 +255,8 @@ export interface o_video { 'projectId'?: number | null; 'scriptId'?: number | null; 'state'?: string | null; - 'storyboardId'?: number | null; 'time'?: number | null; -} -export interface o_videoConfig { - 'audio'?: number | null; - 'createTime'?: number | null; - 'data'?: string | null; - 'duration'?: number | null; - 'id'?: number; - 'mode'?: string | null; - 'model'?: string | null; - 'prompt'?: string | null; - 'resolution'?: string | null; - 'storyboardId'?: number | null; - 'updateTime'?: number | null; - 'videoId'?: number | null; + 'videoTrackId'?: number | null; } export interface o_videoTrack { 'id'?: number; @@ -276,8 +266,9 @@ export interface o_videoTrack { } export interface DB { - "_o_storyboard_old_20260331": _o_storyboard_old_20260331; - "_o_storyboard_old_20260331_1": _o_storyboard_old_20260331_1; + "_o_assets_old_20260331": _o_assets_old_20260331; + "_o_image_old_20260331": _o_image_old_20260331; + "_o_project_old_20260331": _o_project_old_20260331; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData; @@ -303,6 +294,5 @@ export interface DB { "o_user": o_user; "o_vendorConfig": o_vendorConfig; "o_video": o_video; - "o_videoConfig": o_videoConfig; "o_videoTrack": o_videoTrack; }