no message

This commit is contained in:
zhishi 2026-04-07 02:54:34 +08:00
parent 9a055e80ff
commit ae43aab3a2

View File

@ -37,7 +37,69 @@ export default router.post(
}),
async (req, res) => {
const { projectId, scriptId } = req.body;
const projectData = await u.db("o_project").where("id", projectId).select("id", "videoModel").first();
const [videoId, videoModelName] = projectData.videoModel.split(":");
const vendorData = await u.db("o_vendorConfig").where("id", videoId).select("models").first();
const models = JSON.parse(vendorData!.models!);
const findData = models.find((i: any) => i.modelName == videoModelName);
const isRef = findData.mode.every((i: any) => Array.isArray(i));
const storyboardList = await u.db("o_storyboard").where({ scriptId, projectId }).orderBy("index", "asc");
await Promise.all(
storyboardList.map(async (i) => {
i.filePath = i.filePath ? await u.oss.getFileUrl(i.filePath) : "";
}),
);
const storyboardTrackRecord:Record<number,any[]> = {};
storyboardList.forEach((i) => {
if (storyboardTrackRecord[i.trackId!]) {
storyboardTrackRecord[i.trackId!].push({
src: i.filePath,
fileType: "image",
sources: "storyboard",
...(i.prompt != null ? { prompt: i.videoDesc } : {}),
...(i.id != null ? { id: i.id } : {}),
});
} else {
storyboardTrackRecord[i.trackId!] = [{
src: i.filePath,
fileType: "image",
sources: "storyboard",
...(i.prompt != null ? { prompt: i.videoDesc } : {}),
...(i.id != null ? { id: i.id } : {}),
}];
}
});
// 按 storyboardId 分组的资产数据key 为 storyboardId
const otherDataMap: Record<number, any[]> = {};
if (isRef) {
const storyIds = storyboardList.map((s) => s.id);
const assetDatas = await u
.db("o_assets2Storyboard")
.leftJoin("o_assets", "o_assets2Storyboard.assetId", "o_assets.id")
.leftJoin("o_image", "o_image.id", "o_assets.imageId")
.whereIn("o_assets2Storyboard.storyboardId", storyIds as number[])
.select("o_assets.*", "o_image.filePath", "o_assets2Storyboard.storyboardId");
await Promise.all(
assetDatas.map(async (i) => {
const item = {
id: i.id,
name: i.name,
describe: i.describe,
type: i.type,
fileType: "image" as const,
sources: "assets",
src: i.filePath ? await u.oss.getFileUrl(i.filePath) : "",
};
const sid = i.storyboardId as number;
if (!otherDataMap[sid]) otherDataMap[sid] = [];
otherDataMap[sid].push(item);
}),
);
}
const id = await u.db("o_project").where({ id: projectId }).select("id").first();
const trackData = await u.db("o_videoTrack").where({ projectId, scriptId });
const videoList = await u.db("o_video").whereIn(
"videoTrackId",
@ -54,18 +116,10 @@ export default router.post(
state: (item?.state as "未生成" | "生成中" | "已完成" | "生成失败") ?? "未生成",
reason: item?.reason ?? "",
selectVideoId: Number(item?.videoId)!,
medias: await Promise.all(
storyboardList
.filter((s) => s.trackId === trackId)
.map(
async (s): Promise<TrackMedia> => ({
src: s.filePath ? await u.oss.getFileUrl(s.filePath) : "",
fileType: "image",
...(s.prompt != null ? { prompt: s.videoDesc } : {}),
...(s.id != null ? { id: s.id } : {}),
}),
),
),
medias: [
...(storyboardTrackRecord[trackId] ?? []),
...(storyboardTrackRecord[trackId] ?? []).flatMap((s) => otherDataMap[s.id] ?? []),
],
videoList: await Promise.all(
videoList
.filter((v) => v.videoTrackId === trackId)
@ -77,7 +131,6 @@ export default router.post(
),
});
}
res.status(200).send(
success({
storyboardList: await Promise.all(