video-flow-toon/src/routes/agents/clearMemory.ts
2026-03-23 16:09:45 +08:00

38 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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({
projectId: z.number(),
episodesId: z.number().optional(),
agentType: z.enum(["scriptAgent", "productionAgent"]),
type: z.enum(["message", "summary", "all"]).optional(),
}),
async (req, res) => {
const { projectId, episodesId,agentType, type = "all" } = req.body;
const isolationKey = `${projectId}:${agentType}${episodesId ? `:${episodesId}` : ""}`;
if (type === "all") {
await u.db("memories").where({ isolationKey }).del();
} else if (type === "message") {
// 删 message 时同步删关联的 summary避免悬挂引用
await u.db("memories").where({ isolationKey, type: "message" }).del();
await u.db("memories").where({ isolationKey, type: "summary" }).del();
} else {
// 删 summary 时将关联的 message 重置为未总结,使其重新进入 shortTerm
await u
.db("memories")
.where({ isolationKey, type: "message", summarized: 1 })
.update({ summarized: 0 });
await u.db("memories").where({ isolationKey, type: "summary" }).del();
}
res.status(200).send(success(null));
},
);