refactor: 精简发给模型的上下文、隐藏接口原始报错,合并重复的删除逻辑
- 发给模型的对话只留最近 20 条,除最后一条 AI 回复外旧回复的代码块换成占位文字, 对话越长越省 token,也不会超出上下文长度 - 学生看到的 AI 报错只显示超时 / 繁忙 / 出错(状态码),完整错误写日志; 客户端自己断开导致的中止不再记错误 - 管理员查询对话必须带 task_id 或 user_id,不再一次查出全站所有对话 - “已评分或获奖不能删”和“删除一轮对话”合并到 services/cascade.ts,补上删除一轮对话的测试 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
325474bdb7
commit
ffdfbc2513
8 files changed
+122
-35
No files matched your search
@@ -16,7 +16,7 @@ import {
|
||||
type Env,
|
||||
uuidParam,
|
||||
} from "../http"
|
||||
import { deleteSubmissions } from "../services/cascade"
|
||||
import { deleteRound, deleteSubmissions, hasRatingsOrAwards } from "../services/cascade"
|
||||
import { updateSubmissionScore } from "../services/score"
|
||||
import { classifyMessage, inBackground } from "../services/classifier"
|
||||
import { buildGradebook, gradebookCsvRows, toCsv } from "../services/gradebook"
|
||||
@@ -82,13 +82,6 @@ function submissionOut(s: any) {
|
||||
}
|
||||
}
|
||||
|
||||
const hasRatingsOrAwards = (submissionId: string) =>
|
||||
!!get(
|
||||
`SELECT 1 WHERE EXISTS (SELECT 1 FROM submission_rating WHERE submission_id = $id)
|
||||
OR EXISTS (SELECT 1 FROM submission_submissionaward WHERE submission_id = $id)`,
|
||||
{ id: submissionId },
|
||||
)
|
||||
|
||||
// ── 创建提交 ──────────────────────────────────────────────────────────────────
|
||||
|
||||
router.post("/", async (c) => {
|
||||
@@ -508,11 +501,10 @@ router.delete("/:id", (c) => {
|
||||
throw new HttpError(400, "该提交已被评分或获奖,无法删除")
|
||||
}
|
||||
tx(() => {
|
||||
// 关联的助手消息会随提交一起删除,它前面那条用户消息也一起删掉
|
||||
// 有关联的 AI 回复时,回复和它前面的提问一起删掉
|
||||
const asst = get<MessageRow>(`SELECT * FROM prompt_message WHERE submission_id = $id`, { id })
|
||||
const userMsg = asst ? getPrecedingUserMessage(asst) : null
|
||||
deleteSubmissions("id = $id", { id })
|
||||
if (userMsg) run(`DELETE FROM prompt_message WHERE id = $id`, { id: userMsg.id })
|
||||
if (asst) deleteRound(asst)
|
||||
else deleteSubmissions("id = $id", { id })
|
||||
})
|
||||
return c.json({ message: "删除成功" })
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user