Merge branch 'develop'

This commit is contained in:
ACT丶流星雨 2026-01-30 22:36:35 +08:00
commit c567e7fa87
6 changed files with 240 additions and 196 deletions

View File

@ -1,6 +1,6 @@
{
"name": "toonflow-serve",
"version": "1.0.1",
"version": "1.0.2",
"description": "ToonFlow Serve - Electron Application",
"main": "build/main.js",
"author": "ToonFlow Team",

File diff suppressed because one or more lines are too long

View File

@ -44,8 +44,11 @@ export default async function startServe() {
const setting = await u.db("t_setting").where("id", 1).select("tokenKey").first();
if (!setting) return res.status(500).send({ message: "服务器未配置,请联系管理员" });
const { tokenKey } = setting;
const token = req.headers.authorization?.replace("Bearer ", "");
if (req.path == "/other/login") return next();
// 从 header 或 query 参数获取 token
const token = req.headers.authorization?.replace("Bearer ", "") || (req.query.token as string).replace("Bearer ", "");
// 白名单路径
if (req.path === "/other/login") return next();
if (!token) return res.status(401).send({ message: "未提供token" });
try {
const decoded = jwt.verify(token, tokenKey as string);

View File

@ -1,4 +1,4 @@
// @routes-hash 72a19d0a42620de7690a4335be827821
// @routes-hash 7f65684b8af5d021b07d338de1dc06a8
import { Express } from "express";
import route1 from "./routes/assets/addAssets";
@ -19,55 +19,56 @@ import route15 from "./routes/other/clearDatabase";
import route16 from "./routes/other/deleteAllData";
import route17 from "./routes/other/getCaptcha";
import route18 from "./routes/other/login";
import route19 from "./routes/outline/addOutline";
import route20 from "./routes/outline/agentsOutline";
import route21 from "./routes/outline/delOutline";
import route22 from "./routes/outline/getHistory";
import route23 from "./routes/outline/getOutline";
import route24 from "./routes/outline/getPartScript";
import route25 from "./routes/outline/getStoryline";
import route26 from "./routes/outline/setHistory";
import route27 from "./routes/outline/updateOutline";
import route28 from "./routes/outline/updateScript";
import route29 from "./routes/outline/updateStoryline";
import route30 from "./routes/project/addProject";
import route31 from "./routes/project/delProject";
import route32 from "./routes/project/getProject";
import route33 from "./routes/project/getProjectCount";
import route34 from "./routes/project/getSingleProject";
import route35 from "./routes/project/updateProject";
import route36 from "./routes/prompt/getPrompts";
import route37 from "./routes/prompt/updatePrompt";
import route38 from "./routes/script/generateScriptApi";
import route39 from "./routes/script/generateScriptSave";
import route40 from "./routes/script/geScriptApi";
import route41 from "./routes/setting/getSetting";
import route42 from "./routes/setting/updateSetting";
import route43 from "./routes/storyboard/batchSuperScoreImage";
import route44 from "./routes/storyboard/chatStoryboard";
import route45 from "./routes/storyboard/generateShotImage";
import route46 from "./routes/storyboard/generateStoryboardApi";
import route47 from "./routes/storyboard/generateVideoPrompt";
import route48 from "./routes/storyboard/getStoryboard";
import route49 from "./routes/storyboard/keepStoryboard";
import route50 from "./routes/storyboard/saveStoryboard";
import route51 from "./routes/storyboard/uploadImage";
import route52 from "./routes/task/getTaskApi";
import route53 from "./routes/task/taskDetails";
import route54 from "./routes/user/getUser";
import route55 from "./routes/video/addVideo";
import route56 from "./routes/video/addVideoConfig";
import route57 from "./routes/video/deleteVideoConfig";
import route58 from "./routes/video/generatePrompt";
import route59 from "./routes/video/generateVideo";
import route60 from "./routes/video/getManufacturer";
import route61 from "./routes/video/getVideo";
import route62 from "./routes/video/getVideoConfigs";
import route63 from "./routes/video/getVideoModel";
import route64 from "./routes/video/getVideoStoryboards";
import route65 from "./routes/video/reviseVideoStoryboards";
import route66 from "./routes/video/saveVideo";
import route67 from "./routes/video/upDateVideoConfig";
import route19 from "./routes/other/testAI";
import route20 from "./routes/outline/addOutline";
import route21 from "./routes/outline/agentsOutline";
import route22 from "./routes/outline/delOutline";
import route23 from "./routes/outline/getHistory";
import route24 from "./routes/outline/getOutline";
import route25 from "./routes/outline/getPartScript";
import route26 from "./routes/outline/getStoryline";
import route27 from "./routes/outline/setHistory";
import route28 from "./routes/outline/updateOutline";
import route29 from "./routes/outline/updateScript";
import route30 from "./routes/outline/updateStoryline";
import route31 from "./routes/project/addProject";
import route32 from "./routes/project/delProject";
import route33 from "./routes/project/getProject";
import route34 from "./routes/project/getProjectCount";
import route35 from "./routes/project/getSingleProject";
import route36 from "./routes/project/updateProject";
import route37 from "./routes/prompt/getPrompts";
import route38 from "./routes/prompt/updatePrompt";
import route39 from "./routes/script/generateScriptApi";
import route40 from "./routes/script/generateScriptSave";
import route41 from "./routes/script/geScriptApi";
import route42 from "./routes/setting/getSetting";
import route43 from "./routes/setting/updateSetting";
import route44 from "./routes/storyboard/batchSuperScoreImage";
import route45 from "./routes/storyboard/chatStoryboard";
import route46 from "./routes/storyboard/generateShotImage";
import route47 from "./routes/storyboard/generateStoryboardApi";
import route48 from "./routes/storyboard/generateVideoPrompt";
import route49 from "./routes/storyboard/getStoryboard";
import route50 from "./routes/storyboard/keepStoryboard";
import route51 from "./routes/storyboard/saveStoryboard";
import route52 from "./routes/storyboard/uploadImage";
import route53 from "./routes/task/getTaskApi";
import route54 from "./routes/task/taskDetails";
import route55 from "./routes/user/getUser";
import route56 from "./routes/video/addVideo";
import route57 from "./routes/video/addVideoConfig";
import route58 from "./routes/video/deleteVideoConfig";
import route59 from "./routes/video/generatePrompt";
import route60 from "./routes/video/generateVideo";
import route61 from "./routes/video/getManufacturer";
import route62 from "./routes/video/getVideo";
import route63 from "./routes/video/getVideoConfigs";
import route64 from "./routes/video/getVideoModel";
import route65 from "./routes/video/getVideoStoryboards";
import route66 from "./routes/video/reviseVideoStoryboards";
import route67 from "./routes/video/saveVideo";
import route68 from "./routes/video/upDateVideoConfig";
export default async (app: Express) => {
app.use("/assets/addAssets", route1);
@ -88,53 +89,54 @@ export default async (app: Express) => {
app.use("/other/deleteAllData", route16);
app.use("/other/getCaptcha", route17);
app.use("/other/login", route18);
app.use("/outline/addOutline", route19);
app.use("/outline/agentsOutline", route20);
app.use("/outline/delOutline", route21);
app.use("/outline/getHistory", route22);
app.use("/outline/getOutline", route23);
app.use("/outline/getPartScript", route24);
app.use("/outline/getStoryline", route25);
app.use("/outline/setHistory", route26);
app.use("/outline/updateOutline", route27);
app.use("/outline/updateScript", route28);
app.use("/outline/updateStoryline", route29);
app.use("/project/addProject", route30);
app.use("/project/delProject", route31);
app.use("/project/getProject", route32);
app.use("/project/getProjectCount", route33);
app.use("/project/getSingleProject", route34);
app.use("/project/updateProject", route35);
app.use("/prompt/getPrompts", route36);
app.use("/prompt/updatePrompt", route37);
app.use("/script/generateScriptApi", route38);
app.use("/script/generateScriptSave", route39);
app.use("/script/geScriptApi", route40);
app.use("/setting/getSetting", route41);
app.use("/setting/updateSetting", route42);
app.use("/storyboard/batchSuperScoreImage", route43);
app.use("/storyboard/chatStoryboard", route44);
app.use("/storyboard/generateShotImage", route45);
app.use("/storyboard/generateStoryboardApi", route46);
app.use("/storyboard/generateVideoPrompt", route47);
app.use("/storyboard/getStoryboard", route48);
app.use("/storyboard/keepStoryboard", route49);
app.use("/storyboard/saveStoryboard", route50);
app.use("/storyboard/uploadImage", route51);
app.use("/task/getTaskApi", route52);
app.use("/task/taskDetails", route53);
app.use("/user/getUser", route54);
app.use("/video/addVideo", route55);
app.use("/video/addVideoConfig", route56);
app.use("/video/deleteVideoConfig", route57);
app.use("/video/generatePrompt", route58);
app.use("/video/generateVideo", route59);
app.use("/video/getManufacturer", route60);
app.use("/video/getVideo", route61);
app.use("/video/getVideoConfigs", route62);
app.use("/video/getVideoModel", route63);
app.use("/video/getVideoStoryboards", route64);
app.use("/video/reviseVideoStoryboards", route65);
app.use("/video/saveVideo", route66);
app.use("/video/upDateVideoConfig", route67);
app.use("/other/testAI", route19);
app.use("/outline/addOutline", route20);
app.use("/outline/agentsOutline", route21);
app.use("/outline/delOutline", route22);
app.use("/outline/getHistory", route23);
app.use("/outline/getOutline", route24);
app.use("/outline/getPartScript", route25);
app.use("/outline/getStoryline", route26);
app.use("/outline/setHistory", route27);
app.use("/outline/updateOutline", route28);
app.use("/outline/updateScript", route29);
app.use("/outline/updateStoryline", route30);
app.use("/project/addProject", route31);
app.use("/project/delProject", route32);
app.use("/project/getProject", route33);
app.use("/project/getProjectCount", route34);
app.use("/project/getSingleProject", route35);
app.use("/project/updateProject", route36);
app.use("/prompt/getPrompts", route37);
app.use("/prompt/updatePrompt", route38);
app.use("/script/generateScriptApi", route39);
app.use("/script/generateScriptSave", route40);
app.use("/script/geScriptApi", route41);
app.use("/setting/getSetting", route42);
app.use("/setting/updateSetting", route43);
app.use("/storyboard/batchSuperScoreImage", route44);
app.use("/storyboard/chatStoryboard", route45);
app.use("/storyboard/generateShotImage", route46);
app.use("/storyboard/generateStoryboardApi", route47);
app.use("/storyboard/generateVideoPrompt", route48);
app.use("/storyboard/getStoryboard", route49);
app.use("/storyboard/keepStoryboard", route50);
app.use("/storyboard/saveStoryboard", route51);
app.use("/storyboard/uploadImage", route52);
app.use("/task/getTaskApi", route53);
app.use("/task/taskDetails", route54);
app.use("/user/getUser", route55);
app.use("/video/addVideo", route56);
app.use("/video/addVideoConfig", route57);
app.use("/video/deleteVideoConfig", route58);
app.use("/video/generatePrompt", route59);
app.use("/video/generateVideo", route60);
app.use("/video/getManufacturer", route61);
app.use("/video/getVideo", route62);
app.use("/video/getVideoConfigs", route63);
app.use("/video/getVideoModel", route64);
app.use("/video/getVideoStoryboards", route65);
app.use("/video/reviseVideoStoryboards", route66);
app.use("/video/saveVideo", route67);
app.use("/video/upDateVideoConfig", route68);
}

View File

@ -0,0 +1,40 @@
import express from "express";
import { success, error } from "@/lib/responseFormat";
import { createAgent } from "langchain";
import { openAI } from "@/agents/models";
import { OpenAIChatModel, type OpenAIChatModelOptions } from "@aigne/openai";
import { validateFields } from "@/middleware/middleware";
import { z } from "zod";
const router = express.Router();
// 检查语言模型
export default router.post(
"/",
validateFields({
modelName: z.string(),
apiKey: z.string(),
baseURL: z.string().optional(),
}),
async (req, res) => {
const { modelName, apiKey, baseURL } = req.body;
const ai = new OpenAIChatModel({
apiKey: apiKey,
baseURL: baseURL,
model: modelName,
modelOptions: { temperature: 0.7 },
});
try {
const data = await ai.invoke({
messages: [
{
role: "user",
content: "hello",
},
],
});
res.status(200).send(success(data));
} catch (err: any) {
res.status(500).send(error(err.error.message || "模型调用失败"));
}
},
);

View File

@ -82,7 +82,6 @@ router.ws("/", async (ws, req) => {
type DataTyype = "msg" | "setNovel" | "cleanHistory";
ws.on("message", async function (rawData: string) {
let data: { type: DataTyype; data: any } | null = null;
try {
data = JSON.parse(rawData);
} catch (error) {