Merge branch '108' of https://github.com/HBAI-Ltd/Toonflow-app into 108
# Conflicts: # src/router.ts
This commit is contained in:
commit
bc4f3107a5
@ -1,77 +0,0 @@
|
|||||||
# 烤龙肉的做法
|
|
||||||
|
|
||||||
## 前言
|
|
||||||
|
|
||||||
龙肉,作为幻想世界中最珍贵的食材之一,其烹饪方法自古以来就是冒险者和宫廷厨师们追求的终极秘技。以下是一份经典的烤龙肉食谱。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 食材准备
|
|
||||||
|
|
||||||
| 食材 | 用量 | 备注 |
|
|
||||||
|------|------|------|
|
|
||||||
| 龙肉(里脊或腿肉) | 2公斤 | 需提前放血处理 |
|
|
||||||
| 龙息椒粉 | 2大勺 | 普通辣椒粉可替代 |
|
|
||||||
| 凤凰蛋黄 | 3个 | 鸡蛋黄可替代 |
|
|
||||||
| 精灵橄榄油 | 100毫升 | 特级初榨橄榄油可替代 |
|
|
||||||
| 矮人黑盐 | 适量 | 海盐可替代 |
|
|
||||||
| 迷迭香、百里香 | 各一把 | 新鲜为佳 |
|
|
||||||
| 蒜头 | 8瓣 | 拍碎 |
|
|
||||||
| 蜂蜜 | 3大勺 | 用于表面刷酱 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 烹饪步骤
|
|
||||||
|
|
||||||
### 第一步:腌制龙肉(需提前一天)
|
|
||||||
|
|
||||||
1. 将龙肉洗净,用厨房纸巾吸干表面水分
|
|
||||||
2. 用锋利的刀在肉面划几道深约1厘米的斜纹,便于入味
|
|
||||||
3. 将蛋黄、橄榄油、龙息椒粉、黑盐混合,调成腌料
|
|
||||||
4. 均匀涂抹在龙肉表面,放入密封容器
|
|
||||||
5. 冷藏腌制12-24小时
|
|
||||||
|
|
||||||
### 第二步:准备香草束
|
|
||||||
|
|
||||||
1. 将迷迭香、百里香捆扎成束
|
|
||||||
2. 蒜瓣拍碎备用
|
|
||||||
3. 准备好蜂蜜刷酱
|
|
||||||
|
|
||||||
### 第三步:烤制
|
|
||||||
|
|
||||||
1. **预热烤炉**:将烤炉预热至220°C(若使用龙焰烤炉,调至"青龙"档位)
|
|
||||||
|
|
||||||
2. **初次高温烤制**:
|
|
||||||
- 将腌制好的龙肉放入烤盘
|
|
||||||
- 铺上香草束和蒜瓣
|
|
||||||
- 220°C烤制20分钟,封住肉汁
|
|
||||||
|
|
||||||
3. **转中温慢烤**:
|
|
||||||
- 温度降至160°C
|
|
||||||
- 每隔20分钟翻面一次,并刷上蜂蜜
|
|
||||||
- 继续烤制约1.5-2小时(视肉块大小调整)
|
|
||||||
|
|
||||||
4. **检验熟度**:
|
|
||||||
- 用探针温度计测量中心温度达65°C为五分熟
|
|
||||||
- 达75°C为全熟
|
|
||||||
- 龙肉建议七分熟(约70°C),口感最佳
|
|
||||||
|
|
||||||
### 第四步:静置与切片
|
|
||||||
|
|
||||||
1. 出炉后用锡纸包裹,静置15分钟
|
|
||||||
2. 逆着纹理切成1厘米厚的片状
|
|
||||||
3. 摆盘,淋上烤盘中的肉汁
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 小贴士
|
|
||||||
|
|
||||||
- ⚠️ **安全提示**:处理龙肉时请佩戴防火手套,残余龙息可能引发灼伤
|
|
||||||
- 🍷 **搭配推荐**:建议搭配精灵白葡萄酒或矮人麦芽啤酒
|
|
||||||
- 🔥 若龙肉带有冰属性(如霜龙),烤制时间需延长30%
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 成品效果
|
|
||||||
|
|
||||||
外皮金黄酥脆,内部肉质鲜嫩多汁,带有独特的硫磺香气与蜂蜜的甜润,回味中隐约有龙息的微辣感。
|
|
||||||
@ -19,6 +19,8 @@ if (!fs.existsSync(envFile)) {
|
|||||||
console.log(`📄 已自动创建环境变量文件: ${envFile}`);
|
console.log(`📄 已自动创建环境变量文件: ${envFile}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const pkg = JSON.parse(fs.readFileSync(path.resolve("package.json"), "utf8"));
|
||||||
|
|
||||||
const external = [
|
const external = [
|
||||||
"electron",
|
"electron",
|
||||||
"@huggingface/transformers",
|
"@huggingface/transformers",
|
||||||
@ -51,6 +53,9 @@ const appBuildConfig: esbuild.BuildOptions = {
|
|||||||
},
|
},
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
external,
|
external,
|
||||||
|
define: {
|
||||||
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Electron 主进程打包配置
|
// Electron 主进程打包配置
|
||||||
@ -69,6 +74,9 @@ const mainBuildConfig: esbuild.BuildOptions = {
|
|||||||
},
|
},
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
external,
|
external,
|
||||||
|
define: {
|
||||||
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
|||||||
@ -40,7 +40,6 @@ export async function decisionAI(ctx: AgentContext) {
|
|||||||
resTool.systemMessage("决策层AI 接管聊天");
|
resTool.systemMessage("决策层AI 接管聊天");
|
||||||
|
|
||||||
const memory = new Memory("scriptAgent", isolationKey);
|
const memory = new Memory("scriptAgent", isolationKey);
|
||||||
console.log("%c Line:43 🥟 isolationKey", "background:#4fff4B", isolationKey);
|
|
||||||
await memory.add("user", text);
|
await memory.add("user", text);
|
||||||
const [skill, mem] = await Promise.all([useSkill("script_agent_decision.md"), memory.get(text)]);
|
const [skill, mem] = await Promise.all([useSkill("script_agent_decision.md"), memory.get(text)]);
|
||||||
|
|
||||||
@ -59,7 +58,6 @@ export async function decisionAI(ctx: AgentContext) {
|
|||||||
].join("\n");
|
].join("\n");
|
||||||
|
|
||||||
const prefixSystem = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- ${i.id}: 第${i.index}章`).join("\n")}\n\n`;
|
const prefixSystem = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- ${i.id}: 第${i.index}章`).join("\n")}\n\n`;
|
||||||
console.log("%c Line:57 🍧 prefixSystem", "background:#ea7e5c", prefixSystem);
|
|
||||||
|
|
||||||
const { textStream } = await u.Ai.Text("scriptAgent").stream({
|
const { textStream } = await u.Ai.Text("scriptAgent").stream({
|
||||||
system: prefixSystem + systemPrompt,
|
system: prefixSystem + systemPrompt,
|
||||||
|
|||||||
@ -443,7 +443,7 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
|
|||||||
table.text("type").notNullable(); // "main" | "references"
|
table.text("type").notNullable(); // "main" | "references"
|
||||||
table.integer("createTime").notNullable();
|
table.integer("createTime").notNullable();
|
||||||
table.integer("updateTime").notNullable();
|
table.integer("updateTime").notNullable();
|
||||||
table.integer("state").notNullable(); // 1正常,0正在生成description,-1description为空。-2归属为空,-3md5变动
|
table.integer("state").notNullable(); // 1正常,0正在生成description,-1description为空。-2归属为空,-3md5变动,-4文件不存在
|
||||||
table.primary(["id"]);
|
table.primary(["id"]);
|
||||||
},
|
},
|
||||||
initData: async (knex) => {
|
initData: async (knex) => {
|
||||||
|
|||||||
288
src/router.ts
288
src/router.ts
@ -1,4 +1,4 @@
|
|||||||
// @routes-hash 6a0b99b951c1563adc7b58f09afa1a45
|
// @routes-hash 758e343e27eb25780faf00eeab306216
|
||||||
import { Express } from "express";
|
import { Express } from "express";
|
||||||
|
|
||||||
import route1 from "./routes/agents/clearMemory";
|
import route1 from "./routes/agents/clearMemory";
|
||||||
@ -13,59 +13,59 @@ import route9 from "./routes/assets/batchGenerationData";
|
|||||||
import route10 from "./routes/assets/delAssets";
|
import route10 from "./routes/assets/delAssets";
|
||||||
import route11 from "./routes/assets/getAssetsApi";
|
import route11 from "./routes/assets/getAssetsApi";
|
||||||
import route12 from "./routes/assets/getImage";
|
import route12 from "./routes/assets/getImage";
|
||||||
import route13 from "./routes/assets/saveAssets";
|
import route13 from "./routes/assets/getMaterialData";
|
||||||
import route14 from "./routes/assets/updateAssets";
|
import route14 from "./routes/assets/saveAssets";
|
||||||
import route15 from "./routes/assets/uploadClip";
|
import route15 from "./routes/assets/updateAssets";
|
||||||
import route16 from "./routes/assetsGenerate/generateAssets";
|
import route16 from "./routes/assets/uploadClip";
|
||||||
import route17 from "./routes/assetsGenerate/polishAssetsPrompt";
|
import route17 from "./routes/assetsGenerate/generateAssets";
|
||||||
import route18 from "./routes/cornerScape/getAllAssets";
|
import route18 from "./routes/assetsGenerate/polishAssetsPrompt";
|
||||||
import route19 from "./routes/general/generalStatistics";
|
import route19 from "./routes/cornerScape/getAllAssets";
|
||||||
import route20 from "./routes/general/getSingleProject";
|
import route20 from "./routes/general/generalStatistics";
|
||||||
import route21 from "./routes/general/updateProject";
|
import route21 from "./routes/general/getSingleProject";
|
||||||
import route22 from "./routes/login/login";
|
import route22 from "./routes/general/updateProject";
|
||||||
import route23 from "./routes/migrate/migrateData";
|
import route23 from "./routes/login/login";
|
||||||
import route24 from "./routes/modelSelect/getModelDetail";
|
import route24 from "./routes/migrate/migrateData";
|
||||||
import route25 from "./routes/modelSelect/getModelList";
|
import route25 from "./routes/modelSelect/getModelDetail";
|
||||||
import route26 from "./routes/novel/addNovel";
|
import route26 from "./routes/modelSelect/getModelList";
|
||||||
import route27 from "./routes/novel/batchDeleteNovel";
|
import route27 from "./routes/novel/addNovel";
|
||||||
import route28 from "./routes/novel/delNovel";
|
import route28 from "./routes/novel/batchDeleteNovel";
|
||||||
import route29 from "./routes/novel/event/batchDeleteEvent";
|
import route29 from "./routes/novel/delNovel";
|
||||||
import route30 from "./routes/novel/event/deletEvent";
|
import route30 from "./routes/novel/event/batchDeleteEvent";
|
||||||
import route31 from "./routes/novel/event/generateEvents";
|
import route31 from "./routes/novel/event/deletEvent";
|
||||||
import route32 from "./routes/novel/event/getEvent";
|
import route32 from "./routes/novel/event/generateEvents";
|
||||||
import route33 from "./routes/novel/getNovel";
|
import route33 from "./routes/novel/event/getEvent";
|
||||||
import route34 from "./routes/novel/getNovelEventState";
|
import route34 from "./routes/novel/getNovel";
|
||||||
import route35 from "./routes/novel/getNovelIndex";
|
import route35 from "./routes/novel/getNovelEventState";
|
||||||
import route36 from "./routes/novel/updateNovel";
|
import route36 from "./routes/novel/getNovelIndex";
|
||||||
import route37 from "./routes/other/deleteAllData";
|
import route37 from "./routes/novel/updateNovel";
|
||||||
import route38 from "./routes/other/getCaptcha";
|
import route38 from "./routes/other/deleteAllData";
|
||||||
import route39 from "./routes/production/assets/getAssetsData";
|
import route39 from "./routes/other/getVersion";
|
||||||
import route40 from "./routes/production/editImage/generateFlowImage";
|
import route40 from "./routes/production/assets/getAssetsData";
|
||||||
import route41 from "./routes/production/editImage/getImageFlow";
|
import route41 from "./routes/production/editImage/generateFlowImage";
|
||||||
import route42 from "./routes/production/editImage/saveImageFlow";
|
import route42 from "./routes/production/editImage/getImageFlow";
|
||||||
import route43 from "./routes/production/editImage/updateImageFlow";
|
import route43 from "./routes/production/editImage/saveImageFlow";
|
||||||
import route44 from "./routes/production/exportImage";
|
import route44 from "./routes/production/editImage/updateImageFlow";
|
||||||
import route45 from "./routes/production/getFlowData";
|
import route45 from "./routes/production/exportImage";
|
||||||
import route46 from "./routes/production/getProductionData";
|
import route46 from "./routes/production/getFlowData";
|
||||||
import route47 from "./routes/production/getStoryboardData";
|
import route47 from "./routes/production/getProductionData";
|
||||||
import route48 from "./routes/production/saveFlowData";
|
import route48 from "./routes/production/getStoryboardData";
|
||||||
import route49 from "./routes/production/storyboard/downPreviewImage";
|
import route49 from "./routes/production/saveFlowData";
|
||||||
import route50 from "./routes/production/storyboard/getStoryboardData";
|
import route50 from "./routes/production/storyboard/downPreviewImage";
|
||||||
import route51 from "./routes/production/storyboard/previewImage";
|
import route51 from "./routes/production/storyboard/getStoryboardData";
|
||||||
import route52 from "./routes/production/workbench/confirmSelection";
|
import route52 from "./routes/production/storyboard/previewImage";
|
||||||
import route53 from "./routes/production/workbench/delVideo";
|
import route53 from "./routes/production/workbench/confirmSelection";
|
||||||
import route54 from "./routes/production/workbench/generateVideo";
|
import route54 from "./routes/production/workbench/delVideo";
|
||||||
import route55 from "./routes/production/workbench/getChatLines";
|
import route55 from "./routes/production/workbench/generateVideo";
|
||||||
import route56 from "./routes/production/workbench/getVideoModelDetail";
|
import route56 from "./routes/production/workbench/getChatLines";
|
||||||
import route57 from "./routes/production/workbench/videoPolling";
|
import route57 from "./routes/production/workbench/getVideoModelDetail";
|
||||||
import route58 from "./routes/project/addProject";
|
import route58 from "./routes/production/workbench/videoPolling";
|
||||||
import route59 from "./routes/project/delProject";
|
import route59 from "./routes/project/addProject";
|
||||||
import route60 from "./routes/project/editProject";
|
import route60 from "./routes/project/delProject";
|
||||||
import route61 from "./routes/project/getProject";
|
import route61 from "./routes/project/editProject";
|
||||||
import route62 from "./routes/script/addScript";
|
import route62 from "./routes/project/getProject";
|
||||||
import route63 from "./routes/script/delScript";
|
import route63 from "./routes/script/addScript";
|
||||||
import route64 from "./routes/script/exportScript";
|
import route64 from "./routes/script/delScript";
|
||||||
import route65 from "./routes/script/extractAssets";
|
import route65 from "./routes/script/exportScript";
|
||||||
import route66 from "./routes/script/getScrptApi";
|
import route66 from "./routes/script/getScrptApi";
|
||||||
import route67 from "./routes/script/updateScript";
|
import route67 from "./routes/script/updateScript";
|
||||||
import route68 from "./routes/scriptAgent/getPlanData";
|
import route68 from "./routes/scriptAgent/getPlanData";
|
||||||
@ -78,24 +78,25 @@ import route74 from "./routes/setting/fileManagement/openFolder";
|
|||||||
import route75 from "./routes/setting/getTextModel";
|
import route75 from "./routes/setting/getTextModel";
|
||||||
import route76 from "./routes/setting/loginConfig/getUser";
|
import route76 from "./routes/setting/loginConfig/getUser";
|
||||||
import route77 from "./routes/setting/loginConfig/updateUserPwd";
|
import route77 from "./routes/setting/loginConfig/updateUserPwd";
|
||||||
import route78 from "./routes/setting/memoryConfig/getMemory";
|
import route78 from "./routes/setting/memoryConfig/delAllMemory";
|
||||||
import route79 from "./routes/setting/memoryConfig/sureMemory";
|
import route79 from "./routes/setting/memoryConfig/getMemory";
|
||||||
import route80 from "./routes/setting/skillManagement/addSkill";
|
import route80 from "./routes/setting/memoryConfig/sureMemory";
|
||||||
import route81 from "./routes/setting/skillManagement/deleteSkill";
|
import route81 from "./routes/setting/skillManagement/addSkill";
|
||||||
import route82 from "./routes/setting/skillManagement/embeddingSkill";
|
import route82 from "./routes/setting/skillManagement/deleteSkill";
|
||||||
import route83 from "./routes/setting/skillManagement/generateDescription";
|
import route83 from "./routes/setting/skillManagement/embeddingSkill";
|
||||||
import route84 from "./routes/setting/skillManagement/getSkillList";
|
import route84 from "./routes/setting/skillManagement/generateDescription";
|
||||||
import route85 from "./routes/setting/skillManagement/scanSkills";
|
import route85 from "./routes/setting/skillManagement/getSkillList";
|
||||||
import route86 from "./routes/setting/skillManagement/updateSkill";
|
import route86 from "./routes/setting/skillManagement/scanSkills";
|
||||||
import route87 from "./routes/setting/vendorConfig/addVendor";
|
import route87 from "./routes/setting/skillManagement/updateSkill";
|
||||||
import route88 from "./routes/setting/vendorConfig/deleteVendor";
|
import route88 from "./routes/setting/vendorConfig/addVendor";
|
||||||
import route89 from "./routes/setting/vendorConfig/getVendorList";
|
import route89 from "./routes/setting/vendorConfig/deleteVendor";
|
||||||
import route90 from "./routes/setting/vendorConfig/modelTest";
|
import route90 from "./routes/setting/vendorConfig/getVendorList";
|
||||||
import route91 from "./routes/setting/vendorConfig/updateVendor";
|
import route91 from "./routes/setting/vendorConfig/modelTest";
|
||||||
import route92 from "./routes/task/getTaskApi";
|
import route92 from "./routes/setting/vendorConfig/updateVendor";
|
||||||
import route93 from "./routes/task/getTaskCategories";
|
import route93 from "./routes/task/getTaskApi";
|
||||||
import route94 from "./routes/task/taskDetails";
|
import route94 from "./routes/task/getTaskCategories";
|
||||||
import route95 from "./routes/test/test";
|
import route95 from "./routes/task/taskDetails";
|
||||||
|
import route96 from "./routes/test/test";
|
||||||
|
|
||||||
export default async (app: Express) => {
|
export default async (app: Express) => {
|
||||||
app.use("/api/agents/clearMemory", route1);
|
app.use("/api/agents/clearMemory", route1);
|
||||||
@ -110,59 +111,59 @@ export default async (app: Express) => {
|
|||||||
app.use("/api/assets/delAssets", route10);
|
app.use("/api/assets/delAssets", route10);
|
||||||
app.use("/api/assets/getAssetsApi", route11);
|
app.use("/api/assets/getAssetsApi", route11);
|
||||||
app.use("/api/assets/getImage", route12);
|
app.use("/api/assets/getImage", route12);
|
||||||
app.use("/api/assets/saveAssets", route13);
|
app.use("/api/assets/getMaterialData", route13);
|
||||||
app.use("/api/assets/updateAssets", route14);
|
app.use("/api/assets/saveAssets", route14);
|
||||||
app.use("/api/assets/uploadClip", route15);
|
app.use("/api/assets/updateAssets", route15);
|
||||||
app.use("/api/assetsGenerate/generateAssets", route16);
|
app.use("/api/assets/uploadClip", route16);
|
||||||
app.use("/api/assetsGenerate/polishAssetsPrompt", route17);
|
app.use("/api/assetsGenerate/generateAssets", route17);
|
||||||
app.use("/api/cornerScape/getAllAssets", route18);
|
app.use("/api/assetsGenerate/polishAssetsPrompt", route18);
|
||||||
app.use("/api/general/generalStatistics", route19);
|
app.use("/api/cornerScape/getAllAssets", route19);
|
||||||
app.use("/api/general/getSingleProject", route20);
|
app.use("/api/general/generalStatistics", route20);
|
||||||
app.use("/api/general/updateProject", route21);
|
app.use("/api/general/getSingleProject", route21);
|
||||||
app.use("/api/login/login", route22);
|
app.use("/api/general/updateProject", route22);
|
||||||
app.use("/api/migrate/migrateData", route23);
|
app.use("/api/login/login", route23);
|
||||||
app.use("/api/modelSelect/getModelDetail", route24);
|
app.use("/api/migrate/migrateData", route24);
|
||||||
app.use("/api/modelSelect/getModelList", route25);
|
app.use("/api/modelSelect/getModelDetail", route25);
|
||||||
app.use("/api/novel/addNovel", route26);
|
app.use("/api/modelSelect/getModelList", route26);
|
||||||
app.use("/api/novel/batchDeleteNovel", route27);
|
app.use("/api/novel/addNovel", route27);
|
||||||
app.use("/api/novel/delNovel", route28);
|
app.use("/api/novel/batchDeleteNovel", route28);
|
||||||
app.use("/api/novel/event/batchDeleteEvent", route29);
|
app.use("/api/novel/delNovel", route29);
|
||||||
app.use("/api/novel/event/deletEvent", route30);
|
app.use("/api/novel/event/batchDeleteEvent", route30);
|
||||||
app.use("/api/novel/event/generateEvents", route31);
|
app.use("/api/novel/event/deletEvent", route31);
|
||||||
app.use("/api/novel/event/getEvent", route32);
|
app.use("/api/novel/event/generateEvents", route32);
|
||||||
app.use("/api/novel/getNovel", route33);
|
app.use("/api/novel/event/getEvent", route33);
|
||||||
app.use("/api/novel/getNovelEventState", route34);
|
app.use("/api/novel/getNovel", route34);
|
||||||
app.use("/api/novel/getNovelIndex", route35);
|
app.use("/api/novel/getNovelEventState", route35);
|
||||||
app.use("/api/novel/updateNovel", route36);
|
app.use("/api/novel/getNovelIndex", route36);
|
||||||
app.use("/api/other/deleteAllData", route37);
|
app.use("/api/novel/updateNovel", route37);
|
||||||
app.use("/api/other/getCaptcha", route38);
|
app.use("/api/other/deleteAllData", route38);
|
||||||
app.use("/api/production/assets/getAssetsData", route39);
|
app.use("/api/other/getVersion", route39);
|
||||||
app.use("/api/production/editImage/generateFlowImage", route40);
|
app.use("/api/production/assets/getAssetsData", route40);
|
||||||
app.use("/api/production/editImage/getImageFlow", route41);
|
app.use("/api/production/editImage/generateFlowImage", route41);
|
||||||
app.use("/api/production/editImage/saveImageFlow", route42);
|
app.use("/api/production/editImage/getImageFlow", route42);
|
||||||
app.use("/api/production/editImage/updateImageFlow", route43);
|
app.use("/api/production/editImage/saveImageFlow", route43);
|
||||||
app.use("/api/production/exportImage", route44);
|
app.use("/api/production/editImage/updateImageFlow", route44);
|
||||||
app.use("/api/production/getFlowData", route45);
|
app.use("/api/production/exportImage", route45);
|
||||||
app.use("/api/production/getProductionData", route46);
|
app.use("/api/production/getFlowData", route46);
|
||||||
app.use("/api/production/getStoryboardData", route47);
|
app.use("/api/production/getProductionData", route47);
|
||||||
app.use("/api/production/saveFlowData", route48);
|
app.use("/api/production/getStoryboardData", route48);
|
||||||
app.use("/api/production/storyboard/downPreviewImage", route49);
|
app.use("/api/production/saveFlowData", route49);
|
||||||
app.use("/api/production/storyboard/getStoryboardData", route50);
|
app.use("/api/production/storyboard/downPreviewImage", route50);
|
||||||
app.use("/api/production/storyboard/previewImage", route51);
|
app.use("/api/production/storyboard/getStoryboardData", route51);
|
||||||
app.use("/api/production/workbench/confirmSelection", route52);
|
app.use("/api/production/storyboard/previewImage", route52);
|
||||||
app.use("/api/production/workbench/delVideo", route53);
|
app.use("/api/production/workbench/confirmSelection", route53);
|
||||||
app.use("/api/production/workbench/generateVideo", route54);
|
app.use("/api/production/workbench/delVideo", route54);
|
||||||
app.use("/api/production/workbench/getChatLines", route55);
|
app.use("/api/production/workbench/generateVideo", route55);
|
||||||
app.use("/api/production/workbench/getVideoModelDetail", route56);
|
app.use("/api/production/workbench/getChatLines", route56);
|
||||||
app.use("/api/production/workbench/videoPolling", route57);
|
app.use("/api/production/workbench/getVideoModelDetail", route57);
|
||||||
app.use("/api/project/addProject", route58);
|
app.use("/api/production/workbench/videoPolling", route58);
|
||||||
app.use("/api/project/delProject", route59);
|
app.use("/api/project/addProject", route59);
|
||||||
app.use("/api/project/editProject", route60);
|
app.use("/api/project/delProject", route60);
|
||||||
app.use("/api/project/getProject", route61);
|
app.use("/api/project/editProject", route61);
|
||||||
app.use("/api/script/addScript", route62);
|
app.use("/api/project/getProject", route62);
|
||||||
app.use("/api/script/delScript", route63);
|
app.use("/api/script/addScript", route63);
|
||||||
app.use("/api/script/exportScript", route64);
|
app.use("/api/script/delScript", route64);
|
||||||
app.use("/api/script/extractAssets", route65);
|
app.use("/api/script/exportScript", route65);
|
||||||
app.use("/api/script/getScrptApi", route66);
|
app.use("/api/script/getScrptApi", route66);
|
||||||
app.use("/api/script/updateScript", route67);
|
app.use("/api/script/updateScript", route67);
|
||||||
app.use("/api/scriptAgent/getPlanData", route68);
|
app.use("/api/scriptAgent/getPlanData", route68);
|
||||||
@ -175,22 +176,23 @@ export default async (app: Express) => {
|
|||||||
app.use("/api/setting/getTextModel", route75);
|
app.use("/api/setting/getTextModel", route75);
|
||||||
app.use("/api/setting/loginConfig/getUser", route76);
|
app.use("/api/setting/loginConfig/getUser", route76);
|
||||||
app.use("/api/setting/loginConfig/updateUserPwd", route77);
|
app.use("/api/setting/loginConfig/updateUserPwd", route77);
|
||||||
app.use("/api/setting/memoryConfig/getMemory", route78);
|
app.use("/api/setting/memoryConfig/delAllMemory", route78);
|
||||||
app.use("/api/setting/memoryConfig/sureMemory", route79);
|
app.use("/api/setting/memoryConfig/getMemory", route79);
|
||||||
app.use("/api/setting/skillManagement/addSkill", route80);
|
app.use("/api/setting/memoryConfig/sureMemory", route80);
|
||||||
app.use("/api/setting/skillManagement/deleteSkill", route81);
|
app.use("/api/setting/skillManagement/addSkill", route81);
|
||||||
app.use("/api/setting/skillManagement/embeddingSkill", route82);
|
app.use("/api/setting/skillManagement/deleteSkill", route82);
|
||||||
app.use("/api/setting/skillManagement/generateDescription", route83);
|
app.use("/api/setting/skillManagement/embeddingSkill", route83);
|
||||||
app.use("/api/setting/skillManagement/getSkillList", route84);
|
app.use("/api/setting/skillManagement/generateDescription", route84);
|
||||||
app.use("/api/setting/skillManagement/scanSkills", route85);
|
app.use("/api/setting/skillManagement/getSkillList", route85);
|
||||||
app.use("/api/setting/skillManagement/updateSkill", route86);
|
app.use("/api/setting/skillManagement/scanSkills", route86);
|
||||||
app.use("/api/setting/vendorConfig/addVendor", route87);
|
app.use("/api/setting/skillManagement/updateSkill", route87);
|
||||||
app.use("/api/setting/vendorConfig/deleteVendor", route88);
|
app.use("/api/setting/vendorConfig/addVendor", route88);
|
||||||
app.use("/api/setting/vendorConfig/getVendorList", route89);
|
app.use("/api/setting/vendorConfig/deleteVendor", route89);
|
||||||
app.use("/api/setting/vendorConfig/modelTest", route90);
|
app.use("/api/setting/vendorConfig/getVendorList", route90);
|
||||||
app.use("/api/setting/vendorConfig/updateVendor", route91);
|
app.use("/api/setting/vendorConfig/modelTest", route91);
|
||||||
app.use("/api/task/getTaskApi", route92);
|
app.use("/api/setting/vendorConfig/updateVendor", route92);
|
||||||
app.use("/api/task/getTaskCategories", route93);
|
app.use("/api/task/getTaskApi", route93);
|
||||||
app.use("/api/task/taskDetails", route94);
|
app.use("/api/task/getTaskCategories", route94);
|
||||||
app.use("/api/test/test", route95);
|
app.use("/api/task/taskDetails", route95);
|
||||||
|
app.use("/api/test/test", route96);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,6 @@ export default router.post(
|
|||||||
}),
|
}),
|
||||||
async (req, res) => {
|
async (req, res) => {
|
||||||
const { id } = req.body;
|
const { id } = req.body;
|
||||||
console.log("%c Line:15 🍑 id", "background:#465975", id);
|
|
||||||
const assetsData = await u.db("o_image").where("assetsId", id);
|
const assetsData = await u.db("o_image").where("assetsId", id);
|
||||||
await Promise.all(assetsData.map((i) => i.filePath && u.oss.deleteFile(i.filePath)));
|
await Promise.all(assetsData.map((i) => i.filePath && u.oss.deleteFile(i.filePath)));
|
||||||
await u.db("o_assets").where({ id }).delete();
|
await u.db("o_assets").where({ id }).delete();
|
||||||
|
|||||||
32
src/routes/assets/getMaterialData.ts
Normal file
32
src/routes/assets/getMaterialData.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import express from "express";
|
||||||
|
import u from "@/utils";
|
||||||
|
import { success } from "@/lib/responseFormat";
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
// 获取生成图片
|
||||||
|
export default router.post("/", async (req, res) => {
|
||||||
|
const list = await u.db("o_assets").leftJoin("o_image", "o_assets.id", "=", "o_image.assetsId").where("o_assets.type", "clip").select("*");
|
||||||
|
const data = await Promise.all(
|
||||||
|
list.map(async (item) => ({
|
||||||
|
...item,
|
||||||
|
filePath: item.filePath ? await u.oss.getFileUrl(item.filePath) : "",
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
// 查询o_videoConfig表,拿到已选中的videoId
|
||||||
|
const configRows = await u.db("o_videoConfig").select("videoId");
|
||||||
|
const selectedIds = new Set(configRows.map((row) => row.videoId));
|
||||||
|
|
||||||
|
// 查询o_video表
|
||||||
|
const videoRows = await u.db("o_video").where("state", "生成成功").select("*");
|
||||||
|
|
||||||
|
// 处理并返回结果
|
||||||
|
const video = await Promise.all(
|
||||||
|
videoRows.map(async (row) => ({
|
||||||
|
id: row.id,
|
||||||
|
filePath: row.filePath ? await u.oss.getFileUrl(row.filePath) : "",
|
||||||
|
selected: selectedIds.has(row.id),
|
||||||
|
storyboard: row.storyboardId,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
res.status(200).send(success({ data, video }));
|
||||||
|
});
|
||||||
@ -1,13 +0,0 @@
|
|||||||
import express from "express";
|
|
||||||
import { success } from "@/lib/responseFormat";
|
|
||||||
import { md5 } from "js-md5";
|
|
||||||
const router = express.Router();
|
|
||||||
|
|
||||||
// 获取验证码
|
|
||||||
export default router.get("/", async (req, res) => {
|
|
||||||
const data: any = { svg: "<svg></svg>", captcha: md5("123") };
|
|
||||||
if (req.app.get("env") === "dev") {
|
|
||||||
data.key = 2;
|
|
||||||
}
|
|
||||||
res.status(200).send(success(data));
|
|
||||||
});
|
|
||||||
22
src/routes/other/getVersion.ts
Normal file
22
src/routes/other/getVersion.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import express from "express";
|
||||||
|
import { success } from "@/lib/responseFormat";
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
declare const __APP_VERSION__: string | undefined;
|
||||||
|
|
||||||
|
const APP_VERSION: string = (() => {
|
||||||
|
if (typeof __APP_VERSION__ !== "undefined") {
|
||||||
|
return __APP_VERSION__;
|
||||||
|
}
|
||||||
|
// 开发环境回退:从 package.json 读取
|
||||||
|
const pkgPath = path.resolve(process.cwd(), "package.json");
|
||||||
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
||||||
|
return pkg.version;
|
||||||
|
})();
|
||||||
|
|
||||||
|
export default router.get("/", async (req, res) => {
|
||||||
|
res.status(200).send(success(APP_VERSION));
|
||||||
|
});
|
||||||
@ -14,6 +14,7 @@ export default router.post(
|
|||||||
async (req, res) => {
|
async (req, res) => {
|
||||||
const { scriptId, specifyIds } = req.body;
|
const { scriptId, specifyIds } = req.body;
|
||||||
const data = await u.db("o_video").where("scriptId", scriptId).whereIn("id", specifyIds).andWhere("state", "生成中").select("*");
|
const data = await u.db("o_video").where("scriptId", scriptId).whereIn("id", specifyIds).andWhere("state", "生成中").select("*");
|
||||||
|
console.log("%c Line:17 🧀 data", "background:#93c0a4", data.length);
|
||||||
res.status(200).send(success(data));
|
res.status(200).send(success(data));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -20,9 +20,6 @@ export default router.post(
|
|||||||
const assetsData = await u.db("o_assets").where("projectId", id).select("id");
|
const assetsData = await u.db("o_assets").where("projectId", id).select("id");
|
||||||
const assetsIds = assetsData.map((item: any) => item.id);
|
const assetsIds = assetsData.map((item: any) => item.id);
|
||||||
|
|
||||||
const videoData = await u.db("o_video").whereIn("scriptId", scriptIds).select("id");
|
|
||||||
const videoIds = videoData.map((item: any) => item.id);
|
|
||||||
|
|
||||||
await u.db("o_project").where("id", id).delete();
|
await u.db("o_project").where("id", id).delete();
|
||||||
await u.db("o_novel").where("projectId", id).delete();
|
await u.db("o_novel").where("projectId", id).delete();
|
||||||
await u.db("o_outline").where("projectId", id).delete();
|
await u.db("o_outline").where("projectId", id).delete();
|
||||||
@ -31,17 +28,9 @@ export default router.post(
|
|||||||
await u.db("o_script").where("projectId", id).delete();
|
await u.db("o_script").where("projectId", id).delete();
|
||||||
await u.db("o_assets").where("projectId", id).delete();
|
await u.db("o_assets").where("projectId", id).delete();
|
||||||
|
|
||||||
const tempAssetsQuery = u.db("o_image").where("projectId", id);
|
|
||||||
if (assetsIds.length > 0) {
|
if (assetsIds.length > 0) {
|
||||||
tempAssetsQuery.orWhereIn("assetsId", assetsIds);
|
await u.db("o_image").where("projectId", id).orWhereIn("assetsId", assetsIds).delete();
|
||||||
}
|
}
|
||||||
if (scriptIds.length > 0) {
|
|
||||||
tempAssetsQuery.orWhereIn("scriptId", scriptIds);
|
|
||||||
}
|
|
||||||
if (videoIds.length > 0) {
|
|
||||||
tempAssetsQuery.orWhereIn("videoId", videoIds);
|
|
||||||
}
|
|
||||||
await tempAssetsQuery.delete();
|
|
||||||
|
|
||||||
await u.db("o_video").whereIn("scriptId", scriptIds).delete();
|
await u.db("o_video").whereIn("scriptId", scriptIds).delete();
|
||||||
|
|
||||||
|
|||||||
9
src/routes/setting/memoryConfig/delAllMemory.ts
Normal file
9
src/routes/setting/memoryConfig/delAllMemory.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import express from "express";
|
||||||
|
import { error, success } from "@/lib/responseFormat";
|
||||||
|
import u from "@/utils";
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
export default router.post("/", async (req, res) => {
|
||||||
|
await u.db("memories").del();
|
||||||
|
res.status(200).send(success(true));
|
||||||
|
});
|
||||||
@ -51,7 +51,16 @@ export default router.post(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const list = await query.select("*").orderBy("updateTime", "desc").orderBy("type", "desc").limit(limit).offset(offset);
|
const list = await query
|
||||||
|
.select("*")
|
||||||
|
.orderByRaw(`
|
||||||
|
CASE type WHEN 'main' THEN 1 ELSE 0 END ASC,
|
||||||
|
CASE WHEN id NOT IN (SELECT skillId FROM o_skillAttribution) THEN 0 ELSE 1 END ASC,
|
||||||
|
CASE WHEN state = 1 THEN 1 ELSE 0 END ASC,
|
||||||
|
updateTime DESC
|
||||||
|
`)
|
||||||
|
.limit(limit)
|
||||||
|
.offset(offset);
|
||||||
|
|
||||||
// 查询每个技能的归属
|
// 查询每个技能的归属
|
||||||
const skillIds = list.map((item: any) => item.id);
|
const skillIds = list.map((item: any) => item.id);
|
||||||
|
|||||||
@ -44,19 +44,19 @@ export default router.post("/", async (req, res) => {
|
|||||||
let updatedCount = 0;
|
let updatedCount = 0;
|
||||||
let removedCount = 0;
|
let removedCount = 0;
|
||||||
|
|
||||||
const scannedIds = new Set<string>();
|
const scannedPaths = new Set<string>();
|
||||||
const existingRows = await u.db("o_skillList").whereIn("type", ["main", "references"]).select("id", "md5", "type", "path");
|
const existingRows = await u.db("o_skillList").whereIn("type", ["main", "references"]).select("id", "md5", "type", "path");
|
||||||
|
|
||||||
for (const item of scanItems) {
|
for (const item of scanItems) {
|
||||||
const id = crypto.createHash("md5").update(item.relativePath).digest("hex");
|
scannedPaths.add(item.relativePath);
|
||||||
const name = path.basename(item.entry, ".md");
|
|
||||||
|
const existing = existingRows.find((row: any) => row.path === item.relativePath);
|
||||||
const content = await fs.readFile(item.fullPath, "utf-8");
|
const content = await fs.readFile(item.fullPath, "utf-8");
|
||||||
const md5 = crypto.createHash("md5").update(content).digest("hex");
|
const md5 = crypto.createHash("md5").update(content).digest("hex");
|
||||||
const existing = existingRows.find((row: any) => row.id === id);
|
|
||||||
|
|
||||||
scannedIds.add(id);
|
|
||||||
|
|
||||||
if (!existing) {
|
if (!existing) {
|
||||||
|
const id = crypto.createHash("md5").update(item.relativePath).digest("hex");
|
||||||
|
const name = path.basename(item.entry, ".md");
|
||||||
await u.db("o_skillList").insert({
|
await u.db("o_skillList").insert({
|
||||||
id,
|
id,
|
||||||
path: item.relativePath,
|
path: item.relativePath,
|
||||||
@ -70,25 +70,19 @@ export default router.post("/", async (req, res) => {
|
|||||||
state: -1,
|
state: -1,
|
||||||
});
|
});
|
||||||
insertedCount++;
|
insertedCount++;
|
||||||
continue;
|
} else {
|
||||||
}
|
const updateData: Record<string, any> = { md5, updateTime: now };
|
||||||
|
if (existing.md5 !== md5) {
|
||||||
if (existing.md5 !== md5 || existing.path !== item.relativePath || existing.type !== item.type) {
|
updateData.state = -3;
|
||||||
await u.db("o_skillList").where("id", id).update({
|
}
|
||||||
path: item.relativePath,
|
await u.db("o_skillList").where("id", existing.id).update(updateData);
|
||||||
name,
|
|
||||||
md5,
|
|
||||||
type: item.type,
|
|
||||||
updateTime: now,
|
|
||||||
state: -3,
|
|
||||||
});
|
|
||||||
updatedCount++;
|
updatedCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const removedIds = existingRows.map((row: any) => row.id).filter((id: string) => !scannedIds.has(id));
|
const removedIds = existingRows.filter((row: any) => !scannedPaths.has(row.path)).map((row: any) => row.id);
|
||||||
if (removedIds.length > 0) {
|
if (removedIds.length > 0) {
|
||||||
await u.db("o_skillList").whereIn("id", removedIds).delete();
|
await u.db("o_skillList").whereIn("id", removedIds).update({ state: -4, updateTime: now });
|
||||||
removedCount = removedIds.length;
|
removedCount = removedIds.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { validateFields } from "@/middleware/middleware";
|
|||||||
import fs from "fs/promises";
|
import fs from "fs/promises";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import crypto from "crypto";
|
import crypto from "crypto";
|
||||||
|
import { getEmbedding } from "@/utils/agent/embedding";
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
@ -99,6 +100,14 @@ export default router.post(
|
|||||||
state: resolveState(finalDescription, finalAttributions),
|
state: resolveState(finalDescription, finalAttributions),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (finalDescription && !current.embedding) {
|
||||||
|
const embedding = await getEmbedding(finalDescription);
|
||||||
|
await u
|
||||||
|
.db("o_skillList")
|
||||||
|
.where("id", nextId)
|
||||||
|
.update({ embedding: JSON.stringify(embedding) });
|
||||||
|
}
|
||||||
|
|
||||||
await u.db("o_skillAttribution").where("skillId", nextId).delete();
|
await u.db("o_skillAttribution").where("skillId", nextId).delete();
|
||||||
if (finalAttributions.length > 0) {
|
if (finalAttributions.length > 0) {
|
||||||
await u.db("o_skillAttribution").insert(
|
await u.db("o_skillAttribution").insert(
|
||||||
|
|||||||
@ -30,13 +30,8 @@ export default function runCode(code: string) {
|
|||||||
urlToBase64,
|
urlToBase64,
|
||||||
mergeImages,
|
mergeImages,
|
||||||
pollTask,
|
pollTask,
|
||||||
|
|
||||||
Response,
|
|
||||||
exports,
|
exports,
|
||||||
|
|
||||||
fetch,
|
|
||||||
axios,
|
axios,
|
||||||
|
|
||||||
FormData,
|
FormData,
|
||||||
},
|
},
|
||||||
compiler: "javascript",
|
compiler: "javascript",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user