2026-04-14 16:31:54 +08:00

65 lines
1.7 KiB
TypeScript

import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
import { flowDataSchema } from "@/agents/productionAgent/tools";
export default router.post(
"/",
validateFields({
projectId: z.number(),
episodesId: z.number(),
data: z.any(),
}),
async (req, res) => {
const {
data,
projectId,
episodesId,
}: {
data: z.infer<typeof flowDataSchema>;
projectId: number;
episodesId: number;
} = req.body;
const sqlData = await u.db("o_agentWorkData").where("projectId", String(projectId)).andWhere("episodesId", String(episodesId)).first();
const filterDatas = data.storyboard.filter((i) => !i.id);
if (data.storyboard && data.storyboard.length && !filterDatas.length) {
try {
await Promise.all(
data.storyboard
.filter((i) => i.id)
.map(async (i, index) => {
await u.db("o_storyboard").where("id", i.id).update({
index: index,
});
}),
);
} catch (error) {
console.error("更新分镜排序失败", error)
}
}
if (!sqlData) {
await u.db("o_agentWorkData").insert({
projectId,
episodesId,
key: "productionAgent",
data: JSON.stringify(data),
});
} else {
await u
.db("o_agentWorkData")
.where("projectId", String(projectId))
.where("key", "productionAgent")
.andWhere("episodesId", String(episodesId))
.update({
data: JSON.stringify(data),
});
}
return res.status(200).send(success());
},
);