Merge branch '108' of https://github.com/HBAI-Ltd/Toonflow-app into 108
This commit is contained in:
commit
3c7c18b2d7
@ -664,7 +664,7 @@ Image [2]: @图2 — [外貌关键描述]
|
||||
### 约束
|
||||
|
||||
- 前置条件:分镜表已构建完成且用户已确认
|
||||
- 你必须使用XML格式写入工作区分镜面板:<storyboardItem videoPrompt='视频提示词' prompt='提示词内容' track='分组' duration='视频推荐时间' associateAssetsIds="[该分镜所需的资产ID列表]" shouldGenerateImage="是否需要生成分镜图片 true/false, 默认为true" ></storyboardItem>
|
||||
- 你必须使用XML格式写入工作区分镜面板:<storyboardItem videoDesc='视频描述' prompt='提示词内容' track='分组' duration='视频推荐时间' associateAssetsIds="[该分镜所需的资产ID列表]" shouldGenerateImage="是否需要生成分镜图片 true/false, 默认为true" />
|
||||
- 分组总时长约束:每个 `group` 的累计时长不得超过 15 秒
|
||||
- 行数一致性约束:分镜面板 `items` 数量必须与 `stoaryTable` 的分镜数据行数量完全一致(不包含表头与分隔行)
|
||||
- 时长一致性约束:分镜面板 `duration` 必须与 `stoaryTable` 对应行时长完全一致
|
||||
|
||||
@ -135,7 +135,7 @@ function createSubAgent(parentCtx: AgentContext) {
|
||||
"你必须使用如下XML格式写入工作区:\n```",
|
||||
"拍摄计划:<scriptPlan>内容</scriptPlan>",
|
||||
"分镜表:<storyboardTable>内容</storyboardTable>",
|
||||
"分镜面板:<storyboardItem videoPrompt='视频提示词' prompt=提示词内容 track='分组' duration='视频推荐时间' associateAssetsIds='[该分镜所需的资产ID列表]'></storyboardItem>",
|
||||
"分镜面板:<storyboardItem videoDesc='视频描述' prompt=提示词内容 track='分组' duration='视频推荐时间' associateAssetsIds='[该分镜所需的资产ID列表]' />",
|
||||
"```",
|
||||
].join("\n");
|
||||
const projectData = await u.db("o_project").where("id", resTool.data.projectId).first();
|
||||
|
||||
@ -127,6 +127,7 @@ export default router.post(
|
||||
desc: child.describe ?? "",
|
||||
src: child.filePath && (await u.oss.getFileUrl(child.filePath!)),
|
||||
state: child.state ?? "未生成",
|
||||
errorReason: child?.errorReason ?? "",
|
||||
})),
|
||||
),
|
||||
})),
|
||||
@ -140,6 +141,7 @@ export default router.post(
|
||||
associateAssetsIds: assets2StoryboardMap[i.id!] ?? [],
|
||||
src: i.filePath,
|
||||
state: i.state,
|
||||
reason: i?.reason ?? "",
|
||||
}))
|
||||
.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
||||
res.status(200).send(success(flowData));
|
||||
|
||||
@ -18,14 +18,14 @@ export default router.post(
|
||||
prompt: z.string(),
|
||||
duration: z.number(),
|
||||
state: z.string(),
|
||||
videoPrompt: z.string(),
|
||||
videoDesc: z.string(),
|
||||
shouldGenerateImage: z.number(),
|
||||
src: z.string().nullable(),
|
||||
scriptId: z.number(),
|
||||
projectId: z.number(),
|
||||
}),
|
||||
async (req, res) => {
|
||||
const { prompt, duration, state, src, scriptId, projectId, videoPrompt, shouldGenerateImage } = req.body;
|
||||
const { prompt, duration, state, src, scriptId, projectId, videoDesc, shouldGenerateImage } = req.body;
|
||||
|
||||
const [trackId] = await u.db("o_videoTrack").insert({
|
||||
scriptId: scriptId,
|
||||
@ -37,7 +37,7 @@ export default router.post(
|
||||
state,
|
||||
filePath: new URL(src).pathname,
|
||||
trackId,
|
||||
videoPrompt,
|
||||
videoDesc,
|
||||
shouldGenerateImage,
|
||||
scriptId: scriptId,
|
||||
projectId: projectId,
|
||||
|
||||
@ -14,7 +14,7 @@ export default router.post(
|
||||
track: z.string(),
|
||||
state: z.string(),
|
||||
src: z.string().nullable(),
|
||||
videoPrompt: z.string(),
|
||||
videoDesc: z.string(),
|
||||
shouldGenerateImage: z.number(),
|
||||
associateAssetsIds: z.array(z.number()),
|
||||
}),
|
||||
@ -33,7 +33,7 @@ export default router.post(
|
||||
scriptId,
|
||||
projectId,
|
||||
track:item.track,
|
||||
videoPrompt:item.videoPrompt,
|
||||
videoDesc:item.videoDesc,
|
||||
shouldGenerateImage:item.shouldGenerateImage,
|
||||
createTime: Date.now(),
|
||||
});
|
||||
|
||||
@ -11,11 +11,13 @@ export default router.post(
|
||||
validateFields({
|
||||
id: z.number(),
|
||||
prompt: z.string(),
|
||||
videoDesc: z.string(),
|
||||
}),
|
||||
async (req, res) => {
|
||||
const { id, prompt } = req.body;
|
||||
await u.db("o_storyboard").where({ id }).update({
|
||||
prompt,
|
||||
videoDesc,
|
||||
});
|
||||
res.status(200).send(success({ message: "更新提示词成功" }));
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user