From 7abda02b2537e5ad7a61510d5b98ba4482e20d8b Mon Sep 17 00:00:00 2001 From: zhishi <1951671751@qq.com> Date: Fri, 6 Feb 2026 14:47:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B1=86=E5=8C=85text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/env.ts | 20 +++--- src/router.ts | 122 ++++++++++++++++++++----------------- src/utils/ai/text/index.ts | 4 +- 3 files changed, 80 insertions(+), 66 deletions(-) diff --git a/src/env.ts b/src/env.ts index d5cb46f..3cfbfad 100644 --- a/src/env.ts +++ b/src/env.ts @@ -1,13 +1,18 @@ -import { readFileSync, existsSync } from "fs"; +import { readFileSync, existsSync, writeFileSync } from "fs"; + +function createDefaultEnvFile(path: string) { + const defaultContent = ["# 环境变量配置", "NODE_ENV=dev"].join("\n"); + writeFileSync(path, defaultContent, { encoding: "utf8" }); + console.log(`[环境变量]: 已创建默认的 ${path}`); +} function loadDotenvESM(envPath = ".env.local") { - // 尝试从 userData 目录读取环境变量,如果不存在则使用当前目录 let finalPath: string; if (typeof process.versions?.electron !== "undefined") { const { app } = require("electron"); - finalPath = app.getPath("userData"); - // 如果 userData 目录中不存在,尝试使用当前目录 + finalPath = app.getPath("userData") + `/${envPath}`; + // 如果 userData 目录下的 env 文件不存在,则尝试当前目录 if (!existsSync(finalPath)) { finalPath = envPath; } @@ -15,9 +20,9 @@ function loadDotenvESM(envPath = ".env.local") { finalPath = envPath; } + // 若文件不存在,自动创建一个带默认内容的环境变量文件 if (!existsSync(finalPath)) { - console.log(`[环境变量]: ${envPath} 文件不存在`); - return; + createDefaultEnvFile(finalPath); } const text = readFileSync(finalPath, "utf8"); @@ -25,7 +30,8 @@ function loadDotenvESM(envPath = ".env.local") { const idx = line.indexOf("="); if (idx > 0) process.env[line.slice(0, idx).trim()] = line.slice(idx + 1).trim(); } - console.log(`[环境变量]: ${finalPath}`); + console.log(`[环境变量]: 已加载 ${finalPath}`); } +// 若非 Electron 环境,则加载 .env.local if (typeof process.versions?.electron == "undefined") loadDotenvESM(".env.local"); diff --git a/src/router.ts b/src/router.ts index 7a7b09e..b0c9207 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,4 +1,4 @@ -// @routes-hash e51790d6b94bfa5992116635a72e547b +// @routes-hash df8fc2bdd69f6bbf900ca75396098390 import { Express } from "express"; import route1 from "./routes/assets/addAssets"; @@ -44,34 +44,38 @@ import route40 from "./routes/prompt/updatePrompt"; import route41 from "./routes/script/generateScriptApi"; import route42 from "./routes/script/generateScriptSave"; import route43 from "./routes/script/geScriptApi"; -import route44 from "./routes/setting/getLog"; -import route45 from "./routes/setting/getSetting"; -import route46 from "./routes/setting/updateSetting"; -import route47 from "./routes/storyboard/batchSuperScoreImage"; -import route48 from "./routes/storyboard/chatStoryboard"; -import route49 from "./routes/storyboard/generateShotImage"; -import route50 from "./routes/storyboard/generateStoryboardApi"; -import route51 from "./routes/storyboard/generateVideoPrompt"; -import route52 from "./routes/storyboard/getStoryboard"; -import route53 from "./routes/storyboard/keepStoryboard"; -import route54 from "./routes/storyboard/saveStoryboard"; -import route55 from "./routes/storyboard/uploadImage"; -import route56 from "./routes/task/getTaskApi"; -import route57 from "./routes/task/taskDetails"; -import route58 from "./routes/user/getUser"; -import route59 from "./routes/video/addVideo"; -import route60 from "./routes/video/addVideoConfig"; -import route61 from "./routes/video/deleteVideoConfig"; -import route62 from "./routes/video/generatePrompt"; -import route63 from "./routes/video/generateVideo"; -import route64 from "./routes/video/getManufacturer"; -import route65 from "./routes/video/getVideo"; -import route66 from "./routes/video/getVideoConfigs"; -import route67 from "./routes/video/getVideoModel"; -import route68 from "./routes/video/getVideoStoryboards"; -import route69 from "./routes/video/reviseVideoStoryboards"; -import route70 from "./routes/video/saveVideo"; -import route71 from "./routes/video/upDateVideoConfig"; +import route44 from "./routes/setting/addModel"; +import route45 from "./routes/setting/configurationModel"; +import route46 from "./routes/setting/delModel"; +import route47 from "./routes/setting/getAiModelMap"; +import route48 from "./routes/setting/getLog"; +import route49 from "./routes/setting/getSetting"; +import route50 from "./routes/setting/updeteModel"; +import route51 from "./routes/storyboard/batchSuperScoreImage"; +import route52 from "./routes/storyboard/chatStoryboard"; +import route53 from "./routes/storyboard/generateShotImage"; +import route54 from "./routes/storyboard/generateStoryboardApi"; +import route55 from "./routes/storyboard/generateVideoPrompt"; +import route56 from "./routes/storyboard/getStoryboard"; +import route57 from "./routes/storyboard/keepStoryboard"; +import route58 from "./routes/storyboard/saveStoryboard"; +import route59 from "./routes/storyboard/uploadImage"; +import route60 from "./routes/task/getTaskApi"; +import route61 from "./routes/task/taskDetails"; +import route62 from "./routes/user/getUser"; +import route63 from "./routes/video/addVideo"; +import route64 from "./routes/video/addVideoConfig"; +import route65 from "./routes/video/deleteVideoConfig"; +import route66 from "./routes/video/generatePrompt"; +import route67 from "./routes/video/generateVideo"; +import route68 from "./routes/video/getManufacturer"; +import route69 from "./routes/video/getVideo"; +import route70 from "./routes/video/getVideoConfigs"; +import route71 from "./routes/video/getVideoModel"; +import route72 from "./routes/video/getVideoStoryboards"; +import route73 from "./routes/video/reviseVideoStoryboards"; +import route74 from "./routes/video/saveVideo"; +import route75 from "./routes/video/upDateVideoConfig"; export default async (app: Express) => { app.use("/assets/addAssets", route1); @@ -117,32 +121,36 @@ export default async (app: Express) => { app.use("/script/generateScriptApi", route41); app.use("/script/generateScriptSave", route42); app.use("/script/geScriptApi", route43); - app.use("/setting/getLog", route44); - app.use("/setting/getSetting", route45); - app.use("/setting/updateSetting", route46); - app.use("/storyboard/batchSuperScoreImage", route47); - app.use("/storyboard/chatStoryboard", route48); - app.use("/storyboard/generateShotImage", route49); - app.use("/storyboard/generateStoryboardApi", route50); - app.use("/storyboard/generateVideoPrompt", route51); - app.use("/storyboard/getStoryboard", route52); - app.use("/storyboard/keepStoryboard", route53); - app.use("/storyboard/saveStoryboard", route54); - app.use("/storyboard/uploadImage", route55); - app.use("/task/getTaskApi", route56); - app.use("/task/taskDetails", route57); - app.use("/user/getUser", route58); - app.use("/video/addVideo", route59); - app.use("/video/addVideoConfig", route60); - app.use("/video/deleteVideoConfig", route61); - app.use("/video/generatePrompt", route62); - app.use("/video/generateVideo", route63); - app.use("/video/getManufacturer", route64); - app.use("/video/getVideo", route65); - app.use("/video/getVideoConfigs", route66); - app.use("/video/getVideoModel", route67); - app.use("/video/getVideoStoryboards", route68); - app.use("/video/reviseVideoStoryboards", route69); - app.use("/video/saveVideo", route70); - app.use("/video/upDateVideoConfig", route71); + app.use("/setting/addModel", route44); + app.use("/setting/configurationModel", route45); + app.use("/setting/delModel", route46); + app.use("/setting/getAiModelMap", route47); + app.use("/setting/getLog", route48); + app.use("/setting/getSetting", route49); + app.use("/setting/updeteModel", route50); + app.use("/storyboard/batchSuperScoreImage", route51); + app.use("/storyboard/chatStoryboard", route52); + app.use("/storyboard/generateShotImage", route53); + app.use("/storyboard/generateStoryboardApi", route54); + app.use("/storyboard/generateVideoPrompt", route55); + app.use("/storyboard/getStoryboard", route56); + app.use("/storyboard/keepStoryboard", route57); + app.use("/storyboard/saveStoryboard", route58); + app.use("/storyboard/uploadImage", route59); + app.use("/task/getTaskApi", route60); + app.use("/task/taskDetails", route61); + app.use("/user/getUser", route62); + app.use("/video/addVideo", route63); + app.use("/video/addVideoConfig", route64); + app.use("/video/deleteVideoConfig", route65); + app.use("/video/generatePrompt", route66); + app.use("/video/generateVideo", route67); + app.use("/video/getManufacturer", route68); + app.use("/video/getVideo", route69); + app.use("/video/getVideoConfigs", route70); + app.use("/video/getVideoModel", route71); + app.use("/video/getVideoStoryboards", route72); + app.use("/video/reviseVideoStoryboards", route73); + app.use("/video/saveVideo", route74); + app.use("/video/upDateVideoConfig", route75); } diff --git a/src/utils/ai/text/index.ts b/src/utils/ai/text/index.ts index c57c9c3..433f84b 100644 --- a/src/utils/ai/text/index.ts +++ b/src/utils/ai/text/index.ts @@ -45,14 +45,14 @@ const buildOptions = async (input: AIInput, config: AIConfig) => { }, }; - const output = input.output ? outputBuilders[owned.responseFormat]?.(input.output) ?? null : null; + const output = input.output ? (outputBuilders[owned.responseFormat]?.(input.output) ?? null) : null; return { config: { model: process.env.NODE_ENV === "dev" ? wrapLanguageModel({ - model: modelInstance(model!) as any, + model: modelInstance.chat(model!) as any, middleware: devToolsMiddleware(), }) : (modelInstance(model!) as LanguageModel),