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", "name": "toonflow-serve",
"version": "1.0.1", "version": "1.0.2",
"description": "ToonFlow Serve - Electron Application", "description": "ToonFlow Serve - Electron Application",
"main": "build/main.js", "main": "build/main.js",
"author": "ToonFlow Team", "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(); const setting = await u.db("t_setting").where("id", 1).select("tokenKey").first();
if (!setting) return res.status(500).send({ message: "服务器未配置,请联系管理员" }); if (!setting) return res.status(500).send({ message: "服务器未配置,请联系管理员" });
const { tokenKey } = setting; const { tokenKey } = setting;
const token = req.headers.authorization?.replace("Bearer ", ""); // 从 header 或 query 参数获取 token
if (req.path == "/other/login") return next(); 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" }); if (!token) return res.status(401).send({ message: "未提供token" });
try { try {
const decoded = jwt.verify(token, tokenKey as string); 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 { Express } from "express";
import route1 from "./routes/assets/addAssets"; import route1 from "./routes/assets/addAssets";
@ -19,55 +19,56 @@ import route15 from "./routes/other/clearDatabase";
import route16 from "./routes/other/deleteAllData"; import route16 from "./routes/other/deleteAllData";
import route17 from "./routes/other/getCaptcha"; import route17 from "./routes/other/getCaptcha";
import route18 from "./routes/other/login"; import route18 from "./routes/other/login";
import route19 from "./routes/outline/addOutline"; import route19 from "./routes/other/testAI";
import route20 from "./routes/outline/agentsOutline"; import route20 from "./routes/outline/addOutline";
import route21 from "./routes/outline/delOutline"; import route21 from "./routes/outline/agentsOutline";
import route22 from "./routes/outline/getHistory"; import route22 from "./routes/outline/delOutline";
import route23 from "./routes/outline/getOutline"; import route23 from "./routes/outline/getHistory";
import route24 from "./routes/outline/getPartScript"; import route24 from "./routes/outline/getOutline";
import route25 from "./routes/outline/getStoryline"; import route25 from "./routes/outline/getPartScript";
import route26 from "./routes/outline/setHistory"; import route26 from "./routes/outline/getStoryline";
import route27 from "./routes/outline/updateOutline"; import route27 from "./routes/outline/setHistory";
import route28 from "./routes/outline/updateScript"; import route28 from "./routes/outline/updateOutline";
import route29 from "./routes/outline/updateStoryline"; import route29 from "./routes/outline/updateScript";
import route30 from "./routes/project/addProject"; import route30 from "./routes/outline/updateStoryline";
import route31 from "./routes/project/delProject"; import route31 from "./routes/project/addProject";
import route32 from "./routes/project/getProject"; import route32 from "./routes/project/delProject";
import route33 from "./routes/project/getProjectCount"; import route33 from "./routes/project/getProject";
import route34 from "./routes/project/getSingleProject"; import route34 from "./routes/project/getProjectCount";
import route35 from "./routes/project/updateProject"; import route35 from "./routes/project/getSingleProject";
import route36 from "./routes/prompt/getPrompts"; import route36 from "./routes/project/updateProject";
import route37 from "./routes/prompt/updatePrompt"; import route37 from "./routes/prompt/getPrompts";
import route38 from "./routes/script/generateScriptApi"; import route38 from "./routes/prompt/updatePrompt";
import route39 from "./routes/script/generateScriptSave"; import route39 from "./routes/script/generateScriptApi";
import route40 from "./routes/script/geScriptApi"; import route40 from "./routes/script/generateScriptSave";
import route41 from "./routes/setting/getSetting"; import route41 from "./routes/script/geScriptApi";
import route42 from "./routes/setting/updateSetting"; import route42 from "./routes/setting/getSetting";
import route43 from "./routes/storyboard/batchSuperScoreImage"; import route43 from "./routes/setting/updateSetting";
import route44 from "./routes/storyboard/chatStoryboard"; import route44 from "./routes/storyboard/batchSuperScoreImage";
import route45 from "./routes/storyboard/generateShotImage"; import route45 from "./routes/storyboard/chatStoryboard";
import route46 from "./routes/storyboard/generateStoryboardApi"; import route46 from "./routes/storyboard/generateShotImage";
import route47 from "./routes/storyboard/generateVideoPrompt"; import route47 from "./routes/storyboard/generateStoryboardApi";
import route48 from "./routes/storyboard/getStoryboard"; import route48 from "./routes/storyboard/generateVideoPrompt";
import route49 from "./routes/storyboard/keepStoryboard"; import route49 from "./routes/storyboard/getStoryboard";
import route50 from "./routes/storyboard/saveStoryboard"; import route50 from "./routes/storyboard/keepStoryboard";
import route51 from "./routes/storyboard/uploadImage"; import route51 from "./routes/storyboard/saveStoryboard";
import route52 from "./routes/task/getTaskApi"; import route52 from "./routes/storyboard/uploadImage";
import route53 from "./routes/task/taskDetails"; import route53 from "./routes/task/getTaskApi";
import route54 from "./routes/user/getUser"; import route54 from "./routes/task/taskDetails";
import route55 from "./routes/video/addVideo"; import route55 from "./routes/user/getUser";
import route56 from "./routes/video/addVideoConfig"; import route56 from "./routes/video/addVideo";
import route57 from "./routes/video/deleteVideoConfig"; import route57 from "./routes/video/addVideoConfig";
import route58 from "./routes/video/generatePrompt"; import route58 from "./routes/video/deleteVideoConfig";
import route59 from "./routes/video/generateVideo"; import route59 from "./routes/video/generatePrompt";
import route60 from "./routes/video/getManufacturer"; import route60 from "./routes/video/generateVideo";
import route61 from "./routes/video/getVideo"; import route61 from "./routes/video/getManufacturer";
import route62 from "./routes/video/getVideoConfigs"; import route62 from "./routes/video/getVideo";
import route63 from "./routes/video/getVideoModel"; import route63 from "./routes/video/getVideoConfigs";
import route64 from "./routes/video/getVideoStoryboards"; import route64 from "./routes/video/getVideoModel";
import route65 from "./routes/video/reviseVideoStoryboards"; import route65 from "./routes/video/getVideoStoryboards";
import route66 from "./routes/video/saveVideo"; import route66 from "./routes/video/reviseVideoStoryboards";
import route67 from "./routes/video/upDateVideoConfig"; import route67 from "./routes/video/saveVideo";
import route68 from "./routes/video/upDateVideoConfig";
export default async (app: Express) => { export default async (app: Express) => {
app.use("/assets/addAssets", route1); app.use("/assets/addAssets", route1);
@ -88,53 +89,54 @@ export default async (app: Express) => {
app.use("/other/deleteAllData", route16); app.use("/other/deleteAllData", route16);
app.use("/other/getCaptcha", route17); app.use("/other/getCaptcha", route17);
app.use("/other/login", route18); app.use("/other/login", route18);
app.use("/outline/addOutline", route19); app.use("/other/testAI", route19);
app.use("/outline/agentsOutline", route20); app.use("/outline/addOutline", route20);
app.use("/outline/delOutline", route21); app.use("/outline/agentsOutline", route21);
app.use("/outline/getHistory", route22); app.use("/outline/delOutline", route22);
app.use("/outline/getOutline", route23); app.use("/outline/getHistory", route23);
app.use("/outline/getPartScript", route24); app.use("/outline/getOutline", route24);
app.use("/outline/getStoryline", route25); app.use("/outline/getPartScript", route25);
app.use("/outline/setHistory", route26); app.use("/outline/getStoryline", route26);
app.use("/outline/updateOutline", route27); app.use("/outline/setHistory", route27);
app.use("/outline/updateScript", route28); app.use("/outline/updateOutline", route28);
app.use("/outline/updateStoryline", route29); app.use("/outline/updateScript", route29);
app.use("/project/addProject", route30); app.use("/outline/updateStoryline", route30);
app.use("/project/delProject", route31); app.use("/project/addProject", route31);
app.use("/project/getProject", route32); app.use("/project/delProject", route32);
app.use("/project/getProjectCount", route33); app.use("/project/getProject", route33);
app.use("/project/getSingleProject", route34); app.use("/project/getProjectCount", route34);
app.use("/project/updateProject", route35); app.use("/project/getSingleProject", route35);
app.use("/prompt/getPrompts", route36); app.use("/project/updateProject", route36);
app.use("/prompt/updatePrompt", route37); app.use("/prompt/getPrompts", route37);
app.use("/script/generateScriptApi", route38); app.use("/prompt/updatePrompt", route38);
app.use("/script/generateScriptSave", route39); app.use("/script/generateScriptApi", route39);
app.use("/script/geScriptApi", route40); app.use("/script/generateScriptSave", route40);
app.use("/setting/getSetting", route41); app.use("/script/geScriptApi", route41);
app.use("/setting/updateSetting", route42); app.use("/setting/getSetting", route42);
app.use("/storyboard/batchSuperScoreImage", route43); app.use("/setting/updateSetting", route43);
app.use("/storyboard/chatStoryboard", route44); app.use("/storyboard/batchSuperScoreImage", route44);
app.use("/storyboard/generateShotImage", route45); app.use("/storyboard/chatStoryboard", route45);
app.use("/storyboard/generateStoryboardApi", route46); app.use("/storyboard/generateShotImage", route46);
app.use("/storyboard/generateVideoPrompt", route47); app.use("/storyboard/generateStoryboardApi", route47);
app.use("/storyboard/getStoryboard", route48); app.use("/storyboard/generateVideoPrompt", route48);
app.use("/storyboard/keepStoryboard", route49); app.use("/storyboard/getStoryboard", route49);
app.use("/storyboard/saveStoryboard", route50); app.use("/storyboard/keepStoryboard", route50);
app.use("/storyboard/uploadImage", route51); app.use("/storyboard/saveStoryboard", route51);
app.use("/task/getTaskApi", route52); app.use("/storyboard/uploadImage", route52);
app.use("/task/taskDetails", route53); app.use("/task/getTaskApi", route53);
app.use("/user/getUser", route54); app.use("/task/taskDetails", route54);
app.use("/video/addVideo", route55); app.use("/user/getUser", route55);
app.use("/video/addVideoConfig", route56); app.use("/video/addVideo", route56);
app.use("/video/deleteVideoConfig", route57); app.use("/video/addVideoConfig", route57);
app.use("/video/generatePrompt", route58); app.use("/video/deleteVideoConfig", route58);
app.use("/video/generateVideo", route59); app.use("/video/generatePrompt", route59);
app.use("/video/getManufacturer", route60); app.use("/video/generateVideo", route60);
app.use("/video/getVideo", route61); app.use("/video/getManufacturer", route61);
app.use("/video/getVideoConfigs", route62); app.use("/video/getVideo", route62);
app.use("/video/getVideoModel", route63); app.use("/video/getVideoConfigs", route63);
app.use("/video/getVideoStoryboards", route64); app.use("/video/getVideoModel", route64);
app.use("/video/reviseVideoStoryboards", route65); app.use("/video/getVideoStoryboards", route65);
app.use("/video/saveVideo", route66); app.use("/video/reviseVideoStoryboards", route66);
app.use("/video/upDateVideoConfig", route67); 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"; type DataTyype = "msg" | "setNovel" | "cleanHistory";
ws.on("message", async function (rawData: string) { ws.on("message", async function (rawData: string) {
let data: { type: DataTyype; data: any } | null = null; let data: { type: DataTyype; data: any } | null = null;
try { try {
data = JSON.parse(rawData); data = JSON.parse(rawData);
} catch (error) { } catch (error) {