生图片、视频加入到任务 中心,添加风格数据
This commit is contained in:
parent
af4cce8fb6
commit
3153b2b79d
1411
output.json
Normal file
1411
output.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -317,6 +317,10 @@ export default async (cells: { prompt: string }[], scriptId: number, projectId:
|
|||||||
size: "4K",
|
size: "4K",
|
||||||
aspectRatio: projectInfo?.videoRatio ? (projectInfo.videoRatio as any) : "16:9",
|
aspectRatio: projectInfo?.videoRatio ? (projectInfo.videoRatio as any) : "16:9",
|
||||||
imageBase64: processedImages.map((buf) => buf.toString("base64")),
|
imageBase64: processedImages.map((buf) => buf.toString("base64")),
|
||||||
|
taskClass: "分镜图生成",
|
||||||
|
name: `分镜图-${outline?.title || "未知剧集"}`,
|
||||||
|
describe: prompts,
|
||||||
|
projectId,
|
||||||
},
|
},
|
||||||
apiConfig,
|
apiConfig,
|
||||||
);
|
);
|
||||||
|
|||||||
1411
src/lib/artStyle.ts
Normal file
1411
src/lib/artStyle.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,6 @@
|
|||||||
import { Knex } from "knex";
|
import { Knex } from "knex";
|
||||||
import { v4 as uuid } from "uuid";
|
import { v4 as uuid } from "uuid";
|
||||||
|
import { artStyle } from "./artStyle";
|
||||||
interface TableSchema {
|
interface TableSchema {
|
||||||
name: string;
|
name: string;
|
||||||
builder: (table: Knex.CreateTableBuilder) => void;
|
builder: (table: Knex.CreateTableBuilder) => void;
|
||||||
@ -160,20 +161,6 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
|
|||||||
table.unique(["id"]);
|
table.unique(["id"]);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "t_taskList",
|
|
||||||
builder: (table) => {
|
|
||||||
table.integer("id").notNullable();
|
|
||||||
table.integer("projectName");
|
|
||||||
table.text("name");
|
|
||||||
table.text("prompt");
|
|
||||||
table.text("state");
|
|
||||||
table.text("startTime");
|
|
||||||
table.text("endTime");
|
|
||||||
table.primary(["id"]);
|
|
||||||
table.unique(["id"]);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "t_image",
|
name: "t_image",
|
||||||
builder: (table) => {
|
builder: (table) => {
|
||||||
@ -207,6 +194,35 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
|
|||||||
},
|
},
|
||||||
initData: async (knex) => {},
|
initData: async (knex) => {},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "t_myTasks",
|
||||||
|
builder: (table) => {
|
||||||
|
table.integer("id").notNullable();
|
||||||
|
table.integer("projectId");
|
||||||
|
table.string("taskClass");
|
||||||
|
table.string("relatedObjects");
|
||||||
|
table.string("model");
|
||||||
|
table.text("describe");
|
||||||
|
table.string("state");
|
||||||
|
table.integer("startTime");
|
||||||
|
table.primary(["id"]);
|
||||||
|
table.unique(["id"]);
|
||||||
|
},
|
||||||
|
initData: async (knex) => {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "t_artStyle",
|
||||||
|
builder: (table) => {
|
||||||
|
table.integer("id").notNullable();
|
||||||
|
table.string("name");
|
||||||
|
table.text("styles");
|
||||||
|
table.primary(["id"]);
|
||||||
|
table.unique(["id"]);
|
||||||
|
},
|
||||||
|
initData: async (knex) => {
|
||||||
|
await knex("t_artStyle").insert(artStyle.map((item, index) => ({ id: index + 1, name: item.name, styles: JSON.stringify(item.styles) })));
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "t_videoConfig",
|
name: "t_videoConfig",
|
||||||
builder: (table) => {
|
builder: (table) => {
|
||||||
|
|||||||
334
src/router.ts
334
src/router.ts
@ -1,170 +1,174 @@
|
|||||||
// @routes-hash c97cf72361299980ea4b0c43549a0de8
|
// @routes-hash b847c9a4378ca63b381628ce9b2ebc81
|
||||||
import { Express } from "express";
|
import { Express } from "express";
|
||||||
|
|
||||||
import route1 from "./routes/assets/addAssets";
|
import route1 from "./routes/artStyle/getArtStyle";
|
||||||
import route2 from "./routes/assets/delAssets";
|
import route2 from "./routes/assets/addAssets";
|
||||||
import route3 from "./routes/assets/delAssetsImage";
|
import route3 from "./routes/assets/delAssets";
|
||||||
import route4 from "./routes/assets/generateAssets";
|
import route4 from "./routes/assets/delAssetsImage";
|
||||||
import route5 from "./routes/assets/getAssets";
|
import route5 from "./routes/assets/generateAssets";
|
||||||
import route6 from "./routes/assets/getImage";
|
import route6 from "./routes/assets/getAssets";
|
||||||
import route7 from "./routes/assets/getStoryboard";
|
import route7 from "./routes/assets/getImage";
|
||||||
import route8 from "./routes/assets/polishPrompt";
|
import route8 from "./routes/assets/getStoryboard";
|
||||||
import route9 from "./routes/assets/saveAssets";
|
import route9 from "./routes/assets/polishPrompt";
|
||||||
import route10 from "./routes/assets/updateAssets";
|
import route10 from "./routes/assets/saveAssets";
|
||||||
import route11 from "./routes/index/index";
|
import route11 from "./routes/assets/updateAssets";
|
||||||
import route12 from "./routes/novel/addNovel";
|
import route12 from "./routes/index/index";
|
||||||
import route13 from "./routes/novel/delNovel";
|
import route13 from "./routes/novel/addNovel";
|
||||||
import route14 from "./routes/novel/getNovel";
|
import route14 from "./routes/novel/delNovel";
|
||||||
import route15 from "./routes/novel/updateNovel";
|
import route15 from "./routes/novel/getNovel";
|
||||||
import route16 from "./routes/other/clearDatabase";
|
import route16 from "./routes/novel/updateNovel";
|
||||||
import route17 from "./routes/other/deleteAllData";
|
import route17 from "./routes/other/clearDatabase";
|
||||||
import route18 from "./routes/other/getCaptcha";
|
import route18 from "./routes/other/deleteAllData";
|
||||||
import route19 from "./routes/other/login";
|
import route19 from "./routes/other/getCaptcha";
|
||||||
import route20 from "./routes/other/testAI";
|
import route20 from "./routes/other/login";
|
||||||
import route21 from "./routes/other/testImage";
|
import route21 from "./routes/other/testAI";
|
||||||
import route22 from "./routes/other/testVideo";
|
import route22 from "./routes/other/testImage";
|
||||||
import route23 from "./routes/outline/addOutline";
|
import route23 from "./routes/other/testVideo";
|
||||||
import route24 from "./routes/outline/agentsOutline";
|
import route24 from "./routes/outline/addOutline";
|
||||||
import route25 from "./routes/outline/delOutline";
|
import route25 from "./routes/outline/agentsOutline";
|
||||||
import route26 from "./routes/outline/getHistory";
|
import route26 from "./routes/outline/delOutline";
|
||||||
import route27 from "./routes/outline/getOutline";
|
import route27 from "./routes/outline/getHistory";
|
||||||
import route28 from "./routes/outline/getPartScript";
|
import route28 from "./routes/outline/getOutline";
|
||||||
import route29 from "./routes/outline/getStoryline";
|
import route29 from "./routes/outline/getPartScript";
|
||||||
import route30 from "./routes/outline/setHistory";
|
import route30 from "./routes/outline/getStoryline";
|
||||||
import route31 from "./routes/outline/updateOutline";
|
import route31 from "./routes/outline/setHistory";
|
||||||
import route32 from "./routes/outline/updateScript";
|
import route32 from "./routes/outline/updateOutline";
|
||||||
import route33 from "./routes/outline/updateStoryline";
|
import route33 from "./routes/outline/updateScript";
|
||||||
import route34 from "./routes/project/addProject";
|
import route34 from "./routes/outline/updateStoryline";
|
||||||
import route35 from "./routes/project/delProject";
|
import route35 from "./routes/project/addProject";
|
||||||
import route36 from "./routes/project/getProject";
|
import route36 from "./routes/project/delProject";
|
||||||
import route37 from "./routes/project/getProjectCount";
|
import route37 from "./routes/project/getProject";
|
||||||
import route38 from "./routes/project/getSingleProject";
|
import route38 from "./routes/project/getProjectCount";
|
||||||
import route39 from "./routes/project/updateProject";
|
import route39 from "./routes/project/getSingleProject";
|
||||||
import route40 from "./routes/prompt/getPrompts";
|
import route40 from "./routes/project/updateProject";
|
||||||
import route41 from "./routes/prompt/updatePrompt";
|
import route41 from "./routes/prompt/getPrompts";
|
||||||
import route42 from "./routes/script/generateScriptApi";
|
import route42 from "./routes/prompt/updatePrompt";
|
||||||
import route43 from "./routes/script/generateScriptSave";
|
import route43 from "./routes/script/generateScriptApi";
|
||||||
import route44 from "./routes/script/geScriptApi";
|
import route44 from "./routes/script/generateScriptSave";
|
||||||
import route45 from "./routes/setting/addModel";
|
import route45 from "./routes/script/geScriptApi";
|
||||||
import route46 from "./routes/setting/configurationModel";
|
import route46 from "./routes/setting/addModel";
|
||||||
import route47 from "./routes/setting/delModel";
|
import route47 from "./routes/setting/configurationModel";
|
||||||
import route48 from "./routes/setting/getAiModelList";
|
import route48 from "./routes/setting/delModel";
|
||||||
import route49 from "./routes/setting/getAiModelMap";
|
import route49 from "./routes/setting/getAiModelList";
|
||||||
import route50 from "./routes/setting/getLog";
|
import route50 from "./routes/setting/getAiModelMap";
|
||||||
import route51 from "./routes/setting/getSetting";
|
import route51 from "./routes/setting/getLog";
|
||||||
import route52 from "./routes/setting/getVideoModelDetail";
|
import route52 from "./routes/setting/getSetting";
|
||||||
import route53 from "./routes/setting/getVideoModelList";
|
import route53 from "./routes/setting/getVideoModelDetail";
|
||||||
import route54 from "./routes/setting/updateModel";
|
import route54 from "./routes/setting/getVideoModelList";
|
||||||
import route55 from "./routes/setting/updeteModel";
|
import route55 from "./routes/setting/updateModel";
|
||||||
import route56 from "./routes/storyboard/batchSuperScoreImage";
|
import route56 from "./routes/setting/updeteModel";
|
||||||
import route57 from "./routes/storyboard/chatStoryboard";
|
import route57 from "./routes/storyboard/batchSuperScoreImage";
|
||||||
import route58 from "./routes/storyboard/delStoryboard";
|
import route58 from "./routes/storyboard/chatStoryboard";
|
||||||
import route59 from "./routes/storyboard/generateShotImage";
|
import route59 from "./routes/storyboard/delStoryboard";
|
||||||
import route60 from "./routes/storyboard/generateStoryboardApi";
|
import route60 from "./routes/storyboard/generateShotImage";
|
||||||
import route61 from "./routes/storyboard/generateVideoPrompt";
|
import route61 from "./routes/storyboard/generateStoryboardApi";
|
||||||
import route62 from "./routes/storyboard/getStoryboard";
|
import route62 from "./routes/storyboard/generateVideoPrompt";
|
||||||
import route63 from "./routes/storyboard/keepStoryboard";
|
import route63 from "./routes/storyboard/getStoryboard";
|
||||||
import route64 from "./routes/storyboard/saveStoryboard";
|
import route64 from "./routes/storyboard/keepStoryboard";
|
||||||
import route65 from "./routes/storyboard/uploadImage";
|
import route65 from "./routes/storyboard/saveStoryboard";
|
||||||
import route66 from "./routes/task/getTaskApi";
|
import route66 from "./routes/storyboard/uploadImage";
|
||||||
import route67 from "./routes/task/taskDetails";
|
import route67 from "./routes/task/getMyTaskApi";
|
||||||
import route68 from "./routes/user/getUser";
|
import route68 from "./routes/task/getTaskCategories";
|
||||||
import route69 from "./routes/user/saveUser";
|
import route69 from "./routes/task/taskDetails";
|
||||||
import route70 from "./routes/video/addVideo";
|
import route70 from "./routes/user/getUser";
|
||||||
import route71 from "./routes/video/addVideoConfig";
|
import route71 from "./routes/user/saveUser";
|
||||||
import route72 from "./routes/video/deleteVideoConfig";
|
import route72 from "./routes/video/addVideo";
|
||||||
import route73 from "./routes/video/generatePrompt";
|
import route73 from "./routes/video/addVideoConfig";
|
||||||
import route74 from "./routes/video/generateVideo";
|
import route74 from "./routes/video/deleteVideoConfig";
|
||||||
import route75 from "./routes/video/getManufacturer";
|
import route75 from "./routes/video/generatePrompt";
|
||||||
import route76 from "./routes/video/getVideo";
|
import route76 from "./routes/video/generateVideo";
|
||||||
import route77 from "./routes/video/getVideoConfigs";
|
import route77 from "./routes/video/getManufacturer";
|
||||||
import route78 from "./routes/video/getVideoModel";
|
import route78 from "./routes/video/getVideo";
|
||||||
import route79 from "./routes/video/getVideoStoryboards";
|
import route79 from "./routes/video/getVideoConfigs";
|
||||||
import route80 from "./routes/video/reviseVideoStoryboards";
|
import route80 from "./routes/video/getVideoModel";
|
||||||
import route81 from "./routes/video/saveVideo";
|
import route81 from "./routes/video/getVideoStoryboards";
|
||||||
import route82 from "./routes/video/upDateVideoConfig";
|
import route82 from "./routes/video/reviseVideoStoryboards";
|
||||||
|
import route83 from "./routes/video/saveVideo";
|
||||||
|
import route84 from "./routes/video/upDateVideoConfig";
|
||||||
|
|
||||||
export default async (app: Express) => {
|
export default async (app: Express) => {
|
||||||
app.use("/assets/addAssets", route1);
|
app.use("/artStyle/getArtStyle", route1);
|
||||||
app.use("/assets/delAssets", route2);
|
app.use("/assets/addAssets", route2);
|
||||||
app.use("/assets/delAssetsImage", route3);
|
app.use("/assets/delAssets", route3);
|
||||||
app.use("/assets/generateAssets", route4);
|
app.use("/assets/delAssetsImage", route4);
|
||||||
app.use("/assets/getAssets", route5);
|
app.use("/assets/generateAssets", route5);
|
||||||
app.use("/assets/getImage", route6);
|
app.use("/assets/getAssets", route6);
|
||||||
app.use("/assets/getStoryboard", route7);
|
app.use("/assets/getImage", route7);
|
||||||
app.use("/assets/polishPrompt", route8);
|
app.use("/assets/getStoryboard", route8);
|
||||||
app.use("/assets/saveAssets", route9);
|
app.use("/assets/polishPrompt", route9);
|
||||||
app.use("/assets/updateAssets", route10);
|
app.use("/assets/saveAssets", route10);
|
||||||
app.use("/index", route11);
|
app.use("/assets/updateAssets", route11);
|
||||||
app.use("/novel/addNovel", route12);
|
app.use("/index", route12);
|
||||||
app.use("/novel/delNovel", route13);
|
app.use("/novel/addNovel", route13);
|
||||||
app.use("/novel/getNovel", route14);
|
app.use("/novel/delNovel", route14);
|
||||||
app.use("/novel/updateNovel", route15);
|
app.use("/novel/getNovel", route15);
|
||||||
app.use("/other/clearDatabase", route16);
|
app.use("/novel/updateNovel", route16);
|
||||||
app.use("/other/deleteAllData", route17);
|
app.use("/other/clearDatabase", route17);
|
||||||
app.use("/other/getCaptcha", route18);
|
app.use("/other/deleteAllData", route18);
|
||||||
app.use("/other/login", route19);
|
app.use("/other/getCaptcha", route19);
|
||||||
app.use("/other/testAI", route20);
|
app.use("/other/login", route20);
|
||||||
app.use("/other/testImage", route21);
|
app.use("/other/testAI", route21);
|
||||||
app.use("/other/testVideo", route22);
|
app.use("/other/testImage", route22);
|
||||||
app.use("/outline/addOutline", route23);
|
app.use("/other/testVideo", route23);
|
||||||
app.use("/outline/agentsOutline", route24);
|
app.use("/outline/addOutline", route24);
|
||||||
app.use("/outline/delOutline", route25);
|
app.use("/outline/agentsOutline", route25);
|
||||||
app.use("/outline/getHistory", route26);
|
app.use("/outline/delOutline", route26);
|
||||||
app.use("/outline/getOutline", route27);
|
app.use("/outline/getHistory", route27);
|
||||||
app.use("/outline/getPartScript", route28);
|
app.use("/outline/getOutline", route28);
|
||||||
app.use("/outline/getStoryline", route29);
|
app.use("/outline/getPartScript", route29);
|
||||||
app.use("/outline/setHistory", route30);
|
app.use("/outline/getStoryline", route30);
|
||||||
app.use("/outline/updateOutline", route31);
|
app.use("/outline/setHistory", route31);
|
||||||
app.use("/outline/updateScript", route32);
|
app.use("/outline/updateOutline", route32);
|
||||||
app.use("/outline/updateStoryline", route33);
|
app.use("/outline/updateScript", route33);
|
||||||
app.use("/project/addProject", route34);
|
app.use("/outline/updateStoryline", route34);
|
||||||
app.use("/project/delProject", route35);
|
app.use("/project/addProject", route35);
|
||||||
app.use("/project/getProject", route36);
|
app.use("/project/delProject", route36);
|
||||||
app.use("/project/getProjectCount", route37);
|
app.use("/project/getProject", route37);
|
||||||
app.use("/project/getSingleProject", route38);
|
app.use("/project/getProjectCount", route38);
|
||||||
app.use("/project/updateProject", route39);
|
app.use("/project/getSingleProject", route39);
|
||||||
app.use("/prompt/getPrompts", route40);
|
app.use("/project/updateProject", route40);
|
||||||
app.use("/prompt/updatePrompt", route41);
|
app.use("/prompt/getPrompts", route41);
|
||||||
app.use("/script/generateScriptApi", route42);
|
app.use("/prompt/updatePrompt", route42);
|
||||||
app.use("/script/generateScriptSave", route43);
|
app.use("/script/generateScriptApi", route43);
|
||||||
app.use("/script/geScriptApi", route44);
|
app.use("/script/generateScriptSave", route44);
|
||||||
app.use("/setting/addModel", route45);
|
app.use("/script/geScriptApi", route45);
|
||||||
app.use("/setting/configurationModel", route46);
|
app.use("/setting/addModel", route46);
|
||||||
app.use("/setting/delModel", route47);
|
app.use("/setting/configurationModel", route47);
|
||||||
app.use("/setting/getAiModelList", route48);
|
app.use("/setting/delModel", route48);
|
||||||
app.use("/setting/getAiModelMap", route49);
|
app.use("/setting/getAiModelList", route49);
|
||||||
app.use("/setting/getLog", route50);
|
app.use("/setting/getAiModelMap", route50);
|
||||||
app.use("/setting/getSetting", route51);
|
app.use("/setting/getLog", route51);
|
||||||
app.use("/setting/getVideoModelDetail", route52);
|
app.use("/setting/getSetting", route52);
|
||||||
app.use("/setting/getVideoModelList", route53);
|
app.use("/setting/getVideoModelDetail", route53);
|
||||||
app.use("/setting/updateModel", route54);
|
app.use("/setting/getVideoModelList", route54);
|
||||||
app.use("/setting/updeteModel", route55);
|
app.use("/setting/updateModel", route55);
|
||||||
app.use("/storyboard/batchSuperScoreImage", route56);
|
app.use("/setting/updeteModel", route56);
|
||||||
app.use("/storyboard/chatStoryboard", route57);
|
app.use("/storyboard/batchSuperScoreImage", route57);
|
||||||
app.use("/storyboard/delStoryboard", route58);
|
app.use("/storyboard/chatStoryboard", route58);
|
||||||
app.use("/storyboard/generateShotImage", route59);
|
app.use("/storyboard/delStoryboard", route59);
|
||||||
app.use("/storyboard/generateStoryboardApi", route60);
|
app.use("/storyboard/generateShotImage", route60);
|
||||||
app.use("/storyboard/generateVideoPrompt", route61);
|
app.use("/storyboard/generateStoryboardApi", route61);
|
||||||
app.use("/storyboard/getStoryboard", route62);
|
app.use("/storyboard/generateVideoPrompt", route62);
|
||||||
app.use("/storyboard/keepStoryboard", route63);
|
app.use("/storyboard/getStoryboard", route63);
|
||||||
app.use("/storyboard/saveStoryboard", route64);
|
app.use("/storyboard/keepStoryboard", route64);
|
||||||
app.use("/storyboard/uploadImage", route65);
|
app.use("/storyboard/saveStoryboard", route65);
|
||||||
app.use("/task/getTaskApi", route66);
|
app.use("/storyboard/uploadImage", route66);
|
||||||
app.use("/task/taskDetails", route67);
|
app.use("/task/getMyTaskApi", route67);
|
||||||
app.use("/user/getUser", route68);
|
app.use("/task/getTaskCategories", route68);
|
||||||
app.use("/user/saveUser", route69);
|
app.use("/task/taskDetails", route69);
|
||||||
app.use("/video/addVideo", route70);
|
app.use("/user/getUser", route70);
|
||||||
app.use("/video/addVideoConfig", route71);
|
app.use("/user/saveUser", route71);
|
||||||
app.use("/video/deleteVideoConfig", route72);
|
app.use("/video/addVideo", route72);
|
||||||
app.use("/video/generatePrompt", route73);
|
app.use("/video/addVideoConfig", route73);
|
||||||
app.use("/video/generateVideo", route74);
|
app.use("/video/deleteVideoConfig", route74);
|
||||||
app.use("/video/getManufacturer", route75);
|
app.use("/video/generatePrompt", route75);
|
||||||
app.use("/video/getVideo", route76);
|
app.use("/video/generateVideo", route76);
|
||||||
app.use("/video/getVideoConfigs", route77);
|
app.use("/video/getManufacturer", route77);
|
||||||
app.use("/video/getVideoModel", route78);
|
app.use("/video/getVideo", route78);
|
||||||
app.use("/video/getVideoStoryboards", route79);
|
app.use("/video/getVideoConfigs", route79);
|
||||||
app.use("/video/reviseVideoStoryboards", route80);
|
app.use("/video/getVideoModel", route80);
|
||||||
app.use("/video/saveVideo", route81);
|
app.use("/video/getVideoStoryboards", route81);
|
||||||
app.use("/video/upDateVideoConfig", route82);
|
app.use("/video/reviseVideoStoryboards", route82);
|
||||||
|
app.use("/video/saveVideo", route83);
|
||||||
|
app.use("/video/upDateVideoConfig", route84);
|
||||||
}
|
}
|
||||||
|
|||||||
19
src/routes/artStyle/getArtStyle.ts
Normal file
19
src/routes/artStyle/getArtStyle.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
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();
|
||||||
|
|
||||||
|
export default router.post(
|
||||||
|
"/",
|
||||||
|
validateFields({
|
||||||
|
name: z.string(),
|
||||||
|
}),
|
||||||
|
async (req, res) => {
|
||||||
|
const { name } = req.body;
|
||||||
|
const data = await u.db("t_artStyle").where("name", name).select("styles").first();
|
||||||
|
const styles = data?.styles ? JSON.parse(data.styles) : [];
|
||||||
|
res.status(200).send(success(styles));
|
||||||
|
},
|
||||||
|
);
|
||||||
@ -123,8 +123,13 @@ export default router.post(
|
|||||||
state: "生成中",
|
state: "生成中",
|
||||||
assetsId: id,
|
assetsId: id,
|
||||||
});
|
});
|
||||||
const apiConfig = await u.getPromptAi("assetsImage");
|
let taskClass = "";
|
||||||
|
if (type == "role") taskClass = "角色图生成";
|
||||||
|
if (type == "scene") taskClass = "场景图生成";
|
||||||
|
if (type == "props") taskClass = "道具图生成";
|
||||||
|
if (type == "storyboard") taskClass = "分镜图生成";
|
||||||
|
|
||||||
|
const apiConfig = await u.getPromptAi("assetsImage");
|
||||||
try {
|
try {
|
||||||
const contentStr = await u.ai.image(
|
const contentStr = await u.ai.image(
|
||||||
{
|
{
|
||||||
@ -133,6 +138,10 @@ export default router.post(
|
|||||||
imageBase64: base64 ? [base64] : [],
|
imageBase64: base64 ? [base64] : [],
|
||||||
size: "2K",
|
size: "2K",
|
||||||
aspectRatio: "16:9",
|
aspectRatio: "16:9",
|
||||||
|
taskClass: taskClass,
|
||||||
|
name: name,
|
||||||
|
describe: prompt,
|
||||||
|
projectId: projectId,
|
||||||
},
|
},
|
||||||
apiConfig,
|
apiConfig,
|
||||||
);
|
);
|
||||||
@ -171,7 +180,6 @@ export default router.post(
|
|||||||
filePath: imagePath,
|
filePath: imagePath,
|
||||||
type: insertType,
|
type: insertType,
|
||||||
});
|
});
|
||||||
|
|
||||||
const path = await u.oss.getFileUrl(imagePath!);
|
const path = await u.oss.getFileUrl(imagePath!);
|
||||||
|
|
||||||
// const state = await u.db("t_assets").where("id", id).select("state").first();
|
// const state = await u.db("t_assets").where("id", id).select("state").first();
|
||||||
|
|||||||
@ -24,6 +24,10 @@ export default router.post(
|
|||||||
imageBase64: [],
|
imageBase64: [],
|
||||||
aspectRatio: "16:9",
|
aspectRatio: "16:9",
|
||||||
size: "1K",
|
size: "1K",
|
||||||
|
taskClass: "测试任务",
|
||||||
|
name: "测试图片生成",
|
||||||
|
describe: "测试语言模型生成图片",
|
||||||
|
projectId: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: modelName,
|
model: modelName,
|
||||||
|
|||||||
@ -28,6 +28,10 @@ export default router.post(
|
|||||||
aspectRatio: "16:9",
|
aspectRatio: "16:9",
|
||||||
audio: false,
|
audio: false,
|
||||||
mode: "single",
|
mode: "single",
|
||||||
|
taskClass: "测试视频生成",
|
||||||
|
name: "测试视频生成",
|
||||||
|
describe: "测试视频生成",
|
||||||
|
projectId: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: modelName,
|
model: modelName,
|
||||||
|
|||||||
@ -27,6 +27,10 @@ async function superResolutionAndSave(src: string, projectId: number, videoRatio
|
|||||||
systemPrompt: "你的核心任务是将所给的图片超分到 1K ,不改变图片任何内容,仅改变分辨率",
|
systemPrompt: "你的核心任务是将所给的图片超分到 1K ,不改变图片任何内容,仅改变分辨率",
|
||||||
prompt: "你的核心任务是将所给的图片超分到 1K ,不改变图片任何内容,仅改变分辨率",
|
prompt: "你的核心任务是将所给的图片超分到 1K ,不改变图片任何内容,仅改变分辨率",
|
||||||
imageBase64: [await urlToBase64(src)],
|
imageBase64: [await urlToBase64(src)],
|
||||||
|
taskClass: "分镜图超分",
|
||||||
|
name: `分镜图超分-${v4()}`,
|
||||||
|
describe: `原始图片链接: ${src}`,
|
||||||
|
projectId,
|
||||||
},
|
},
|
||||||
apiConfig,
|
apiConfig,
|
||||||
);
|
);
|
||||||
|
|||||||
@ -4,50 +4,45 @@ import { success } from "@/lib/responseFormat";
|
|||||||
import { validateFields } from "@/middleware/middleware";
|
import { validateFields } from "@/middleware/middleware";
|
||||||
import { number, z } from "zod";
|
import { number, z } from "zod";
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
export default router.post(
|
||||||
export default router.get(
|
|
||||||
"/",
|
"/",
|
||||||
validateFields({
|
validateFields({
|
||||||
projectName: z.string(),
|
state: z.string().optional().nullable(),
|
||||||
taskName: z.string(),
|
taskClass: z.string().optional().nullable(),
|
||||||
state: z.string(),
|
|
||||||
page: z.number(),
|
page: z.number(),
|
||||||
limit: z.number(),
|
limit: z.number(),
|
||||||
|
projectId: z.number(),
|
||||||
}),
|
}),
|
||||||
async (req, res) => {
|
async (req, res) => {
|
||||||
const { projectName, taskName, state, page = 1, limit = 10 }: any = req.query;
|
const { taskClass, state, page = 1, limit = 10, projectId }: any = req.body;
|
||||||
const offset = (page - 1) * limit;
|
const offset = (page - 1) * limit;
|
||||||
const data = await u
|
const data = await u
|
||||||
.db("t_taskList")
|
.db("t_myTasks")
|
||||||
|
.where("projectId", projectId)
|
||||||
.andWhere((qb) => {
|
.andWhere((qb) => {
|
||||||
if (projectName) {
|
if (taskClass) {
|
||||||
qb.andWhere("t_taskList.projectName", projectName);
|
qb.andWhere("t_myTasks.taskClass", taskClass);
|
||||||
}
|
|
||||||
if (taskName) {
|
|
||||||
qb.andWhere("t_taskList.name", taskName);
|
|
||||||
}
|
}
|
||||||
if (state) {
|
if (state) {
|
||||||
qb.andWhere("t_taskList.state", state);
|
qb.andWhere("t_myTasks.state", state);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.select("*")
|
.select("*")
|
||||||
.offset(offset)
|
.offset(offset)
|
||||||
.limit(limit);
|
.limit(limit);
|
||||||
const totalQuery = (await u
|
const totalQuery = (await u
|
||||||
.db("t_taskList")
|
.db("t_myTasks")
|
||||||
|
.where("projectId", projectId)
|
||||||
.andWhere((qb) => {
|
.andWhere((qb) => {
|
||||||
if (projectName) {
|
if (taskClass) {
|
||||||
qb.andWhere("t_taskList.projectName", projectName);
|
qb.andWhere("t_myTasks.taskClass", taskClass);
|
||||||
}
|
|
||||||
if (taskName) {
|
|
||||||
qb.andWhere("t_taskList.name", taskName);
|
|
||||||
}
|
}
|
||||||
if (state) {
|
if (state) {
|
||||||
qb.andWhere("t_taskList.state", state);
|
qb.andWhere("t_myTasks.state", state);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.count("* as total")
|
.count("* as total")
|
||||||
.first()) as any;
|
.first()) as any;
|
||||||
res.status(200).send(success({ data, total: totalQuery?.total }));
|
res.status(200).send(success({ data, total: totalQuery?.total }));
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
17
src/routes/task/getTaskCategories.ts
Normal file
17
src/routes/task/getTaskCategories.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import express from "express";
|
||||||
|
import u from "@/utils";
|
||||||
|
import { success } from "@/lib/responseFormat";
|
||||||
|
import { validateFields } from "@/middleware/middleware";
|
||||||
|
import { number, z } from "zod";
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
export default router.post(
|
||||||
|
"/",
|
||||||
|
validateFields({
|
||||||
|
projectId: z.number(),
|
||||||
|
}),
|
||||||
|
async (req, res) => {
|
||||||
|
const data = await u.db("t_myTasks").where("projectId", req.body.projectId).select("taskClass").groupBy("taskClass");
|
||||||
|
res.status(200).send(success(data));
|
||||||
|
},
|
||||||
|
);
|
||||||
@ -177,6 +177,10 @@ ${prompt}
|
|||||||
resolution: resolution as any,
|
resolution: resolution as any,
|
||||||
audio: audioEnabled,
|
audio: audioEnabled,
|
||||||
mode: mode as any,
|
mode: mode as any,
|
||||||
|
taskClass: "视频生成",
|
||||||
|
name: `视频生成-${videoId}`,
|
||||||
|
describe: `视频生成,时长${duration}秒,分辨率${resolution}`,
|
||||||
|
projectId,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
baseURL: aiConfigData?.baseUrl!,
|
baseURL: aiConfigData?.baseUrl!,
|
||||||
|
|||||||
29
src/types/database.d.ts
vendored
29
src/types/database.d.ts
vendored
@ -1,4 +1,4 @@
|
|||||||
// @db-hash 0f9789bd5ad2eebd79bd502988efcb4e
|
// @db-hash 4073740ecb78a07f69489a53512e9b4d
|
||||||
//该文件由脚本自动生成,请勿手动修改
|
//该文件由脚本自动生成,请勿手动修改
|
||||||
|
|
||||||
export interface t_aiModelMap {
|
export interface t_aiModelMap {
|
||||||
@ -7,6 +7,11 @@ export interface t_aiModelMap {
|
|||||||
'key'?: string | null;
|
'key'?: string | null;
|
||||||
'name'?: string | null;
|
'name'?: string | null;
|
||||||
}
|
}
|
||||||
|
export interface t_artStyle {
|
||||||
|
'id'?: number;
|
||||||
|
'name'?: string | null;
|
||||||
|
'styles'?: string | null;
|
||||||
|
}
|
||||||
export interface t_assets {
|
export interface t_assets {
|
||||||
'duration'?: string | null;
|
'duration'?: string | null;
|
||||||
'episode'?: string | null;
|
'episode'?: string | null;
|
||||||
@ -59,6 +64,16 @@ export interface t_imageModel {
|
|||||||
'model'?: string | null;
|
'model'?: string | null;
|
||||||
'type'?: string | null;
|
'type'?: string | null;
|
||||||
}
|
}
|
||||||
|
export interface t_myTasks {
|
||||||
|
'describe'?: string | null;
|
||||||
|
'id'?: number;
|
||||||
|
'model'?: string | null;
|
||||||
|
'projectId'?: number | null;
|
||||||
|
'relatedObjects'?: string | null;
|
||||||
|
'startTime'?: number | null;
|
||||||
|
'state'?: string | null;
|
||||||
|
'taskClass'?: string | null;
|
||||||
|
}
|
||||||
export interface t_novel {
|
export interface t_novel {
|
||||||
'chapter'?: string | null;
|
'chapter'?: string | null;
|
||||||
'chapterData'?: string | null;
|
'chapterData'?: string | null;
|
||||||
@ -115,15 +130,6 @@ export interface t_storyline {
|
|||||||
'novelIds'?: string | null;
|
'novelIds'?: string | null;
|
||||||
'projectId'?: number | null;
|
'projectId'?: number | null;
|
||||||
}
|
}
|
||||||
export interface t_taskList {
|
|
||||||
'endTime'?: string | null;
|
|
||||||
'id'?: number;
|
|
||||||
'name'?: string | null;
|
|
||||||
'projectName'?: number | null;
|
|
||||||
'prompt'?: string | null;
|
|
||||||
'startTime'?: string | null;
|
|
||||||
'state'?: string | null;
|
|
||||||
}
|
|
||||||
export interface t_textModel {
|
export interface t_textModel {
|
||||||
'id'?: number;
|
'id'?: number;
|
||||||
'image'?: number | null;
|
'image'?: number | null;
|
||||||
@ -183,11 +189,13 @@ export interface t_videoModel {
|
|||||||
|
|
||||||
export interface DB {
|
export interface DB {
|
||||||
"t_aiModelMap": t_aiModelMap;
|
"t_aiModelMap": t_aiModelMap;
|
||||||
|
"t_artStyle": t_artStyle;
|
||||||
"t_assets": t_assets;
|
"t_assets": t_assets;
|
||||||
"t_chatHistory": t_chatHistory;
|
"t_chatHistory": t_chatHistory;
|
||||||
"t_config": t_config;
|
"t_config": t_config;
|
||||||
"t_image": t_image;
|
"t_image": t_image;
|
||||||
"t_imageModel": t_imageModel;
|
"t_imageModel": t_imageModel;
|
||||||
|
"t_myTasks": t_myTasks;
|
||||||
"t_novel": t_novel;
|
"t_novel": t_novel;
|
||||||
"t_outline": t_outline;
|
"t_outline": t_outline;
|
||||||
"t_project": t_project;
|
"t_project": t_project;
|
||||||
@ -195,7 +203,6 @@ export interface DB {
|
|||||||
"t_script": t_script;
|
"t_script": t_script;
|
||||||
"t_setting": t_setting;
|
"t_setting": t_setting;
|
||||||
"t_storyline": t_storyline;
|
"t_storyline": t_storyline;
|
||||||
"t_taskList": t_taskList;
|
|
||||||
"t_textModel": t_textModel;
|
"t_textModel": t_textModel;
|
||||||
"t_user": t_user;
|
"t_user": t_user;
|
||||||
"t_video": t_video;
|
"t_video": t_video;
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import other from "./owned/other";
|
|||||||
import gemini from "./owned/gemini";
|
import gemini from "./owned/gemini";
|
||||||
import modelScope from "./owned/modelScope";
|
import modelScope from "./owned/modelScope";
|
||||||
import grsai from "./owned/grsai";
|
import grsai from "./owned/grsai";
|
||||||
|
import { tr } from "zod/locales";
|
||||||
|
|
||||||
const urlToBase64 = async (url: string): Promise<string> => {
|
const urlToBase64 = async (url: string): Promise<string> => {
|
||||||
const res = await axios.get(url, { responseType: "arraybuffer" });
|
const res = await axios.get(url, { responseType: "arraybuffer" });
|
||||||
@ -29,20 +30,31 @@ const modelInstance = {
|
|||||||
// apimart: apimart,
|
// apimart: apimart,
|
||||||
modelScope,
|
modelScope,
|
||||||
other,
|
other,
|
||||||
grsai
|
grsai,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export default async (input: ImageConfig, config: AIConfig) => {
|
export default async (input: ImageConfig, config: AIConfig) => {
|
||||||
const { model, apiKey, baseURL, manufacturer } = { ...config };
|
const { model, apiKey, baseURL, manufacturer } = { ...config };
|
||||||
|
|
||||||
if (!config || !config?.model || !config?.apiKey || !config?.manufacturer) throw new Error("请检查模型配置是否正确");
|
if (!config || !config?.model || !config?.apiKey || !config?.manufacturer) throw new Error("请检查模型配置是否正确");
|
||||||
|
|
||||||
const manufacturerFn = modelInstance[manufacturer as keyof typeof modelInstance];
|
const manufacturerFn = modelInstance[manufacturer as keyof typeof modelInstance];
|
||||||
if (!manufacturerFn) if (!manufacturerFn) throw new Error("不支持的图片厂商");
|
if (!manufacturerFn) if (!manufacturerFn) throw new Error("不支持的图片厂商");
|
||||||
|
|
||||||
// if (manufacturer !== "other") {
|
// if (manufacturer !== "other") {
|
||||||
// const owned = modelList.find((m) => m.model === model);
|
// const owned = modelList.find((m) => m.model === model);
|
||||||
// if (!owned) throw new Error("不支持的模型");
|
// if (!owned) throw new Error("不支持的模型");
|
||||||
// }
|
// }
|
||||||
|
//添加到任务中心
|
||||||
|
const [taskId] = await u.db("t_myTasks").insert({
|
||||||
|
taskClass: input.taskClass,
|
||||||
|
relatedObjects: input.name,
|
||||||
|
model: config?.model ? config.model : "未知模型",
|
||||||
|
describe: input.describe ? input.describe : "无",
|
||||||
|
state: "进行中",
|
||||||
|
startTime: Date.now(),
|
||||||
|
projectId: input.projectId,
|
||||||
|
});
|
||||||
// 补充图片的 base64 内容类型字符串
|
// 补充图片的 base64 内容类型字符串
|
||||||
if (input.imageBase64 && input.imageBase64.length > 0) {
|
if (input.imageBase64 && input.imageBase64.length > 0) {
|
||||||
input.imageBase64 = input.imageBase64.map((img) => {
|
input.imageBase64 = input.imageBase64.map((img) => {
|
||||||
@ -66,9 +78,18 @@ export default async (input: ImageConfig, config: AIConfig) => {
|
|||||||
return `data:image/png;base64,${img}`;
|
return `data:image/png;base64,${img}`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
let imageUrl = await manufacturerFn(input, { model, apiKey, baseURL });
|
let imageUrl = await manufacturerFn(input, { model, apiKey, baseURL });
|
||||||
if (!input.resType) input.resType = "b64";
|
if (!input.resType) input.resType = "b64";
|
||||||
if (input.resType === "b64" && imageUrl.startsWith("http")) imageUrl = await urlToBase64(imageUrl);
|
if (input.resType === "b64" && imageUrl.startsWith("http")) imageUrl = await urlToBase64(imageUrl);
|
||||||
|
await u.db("t_myTasks").where("id", taskId).update({
|
||||||
|
state: "已完成",
|
||||||
|
});
|
||||||
return imageUrl;
|
return imageUrl;
|
||||||
|
} catch (error) {
|
||||||
|
await u.db("t_myTasks").where("id", taskId).update({
|
||||||
|
state: "生成失败",
|
||||||
|
});
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,6 +5,10 @@ interface ImageConfig {
|
|||||||
size: "1K" | "2K" | "4K";
|
size: "1K" | "2K" | "4K";
|
||||||
aspectRatio: string;
|
aspectRatio: string;
|
||||||
resType?: "url" | "b64";
|
resType?: "url" | "b64";
|
||||||
|
taskClass: string;
|
||||||
|
name: string;
|
||||||
|
describe: string;
|
||||||
|
projectId: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AIConfig {
|
interface AIConfig {
|
||||||
|
|||||||
@ -21,7 +21,7 @@ const modelInstance = {
|
|||||||
runninghub: runninghub,
|
runninghub: runninghub,
|
||||||
apimart: apimart,
|
apimart: apimart,
|
||||||
other: other,
|
other: other,
|
||||||
grsai:grsai
|
grsai: grsai,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export default async (input: VideoConfig, config?: AIConfig) => {
|
export default async (input: VideoConfig, config?: AIConfig) => {
|
||||||
@ -32,7 +32,16 @@ export default async (input: VideoConfig, config?: AIConfig) => {
|
|||||||
if (!manufacturerFn) if (!manufacturerFn) throw new Error("不支持的视频厂商");
|
if (!manufacturerFn) if (!manufacturerFn) throw new Error("不支持的视频厂商");
|
||||||
// const owned = modelList.find((m) => m.model === model);
|
// const owned = modelList.find((m) => m.model === model);
|
||||||
// if (!owned) throw new Error("不支持的模型");
|
// if (!owned) throw new Error("不支持的模型");
|
||||||
|
//添加到任务中心
|
||||||
|
const [taskId] = await u.db("t_myTasks").insert({
|
||||||
|
taskClass: input.taskClass,
|
||||||
|
relatedObjects: input.name,
|
||||||
|
model: config?.model ? config.model : "未知模型",
|
||||||
|
describe: input.describe ? input.describe : "无",
|
||||||
|
state: "进行中",
|
||||||
|
startTime: Date.now(),
|
||||||
|
projectId: input.projectId,
|
||||||
|
});
|
||||||
// 补充图片的 base64 内容类型字符串
|
// 补充图片的 base64 内容类型字符串
|
||||||
if (input.imageBase64 && input.imageBase64.length > 0) {
|
if (input.imageBase64 && input.imageBase64.length > 0) {
|
||||||
input.imageBase64 = input.imageBase64.map((img) => {
|
input.imageBase64 = input.imageBase64.map((img) => {
|
||||||
@ -59,9 +68,19 @@ export default async (input: VideoConfig, config?: AIConfig) => {
|
|||||||
|
|
||||||
let videoUrl = await manufacturerFn(input, { model, apiKey, baseURL });
|
let videoUrl = await manufacturerFn(input, { model, apiKey, baseURL });
|
||||||
if (videoUrl) {
|
if (videoUrl) {
|
||||||
|
try {
|
||||||
const response = await axios.get(videoUrl, { responseType: "stream" });
|
const response = await axios.get(videoUrl, { responseType: "stream" });
|
||||||
await u.oss.writeFile(input.savePath, response.data);
|
await u.oss.writeFile(input.savePath, response.data);
|
||||||
|
await u.db("t_myTasks").where("id", taskId).update({
|
||||||
|
state: "已完成",
|
||||||
|
});
|
||||||
return input.savePath;
|
return input.savePath;
|
||||||
|
} catch (err) {
|
||||||
|
await u.db("t_myTasks").where("id", taskId).update({
|
||||||
|
state: "生成失败",
|
||||||
|
});
|
||||||
|
return videoUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return videoUrl;
|
return videoUrl;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,6 +7,10 @@ interface VideoConfig {
|
|||||||
imageBase64?: string[];
|
imageBase64?: string[];
|
||||||
audio?: boolean;
|
audio?: boolean;
|
||||||
mode: "startEnd" | "multi" | "single" | "text";
|
mode: "startEnd" | "multi" | "single" | "text";
|
||||||
|
taskClass: string;
|
||||||
|
name: string;
|
||||||
|
projectId: number;
|
||||||
|
describe?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AIConfig {
|
interface AIConfig {
|
||||||
|
|||||||
@ -88,6 +88,10 @@ export default async (images: Record<string, string>, directive: string, project
|
|||||||
imageBase64: base64Images,
|
imageBase64: base64Images,
|
||||||
aspectRatio: aspectRatio ? aspectRatio : "16:9",
|
aspectRatio: aspectRatio ? aspectRatio : "16:9",
|
||||||
size: "1K",
|
size: "1K",
|
||||||
|
taskClass: "图片编辑",
|
||||||
|
name: `图片编辑-${uuid()}`,
|
||||||
|
describe: `编辑指令: ${directive}`,
|
||||||
|
projectId,
|
||||||
},
|
},
|
||||||
apiConfig,
|
apiConfig,
|
||||||
);
|
);
|
||||||
|
|||||||
2454
tempCodeRunnerFile.javascript
Normal file
2454
tempCodeRunnerFile.javascript
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user