feat: 提示词链显示层级走势、每轮改了多少行;课堂总结加“怎么问的 AI”
- 提示词弹框:顶部每轮一根层级柱子,点了跳到那一轮;每轮标出代码比上一版 +/− 多少行 (没改标“代码没变”),和前面某轮一字不差的提问标“重复提问” - 课堂总结:每人最新一版平均几轮、一轮就交、最后一版用外部 AI、问过引导的比例, 以及各层级提问次数 - prompt_message 加两个覆盖索引,统计只读小列(像素画板全部班级 197 份约 0.3 ms) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f41fda3c19
commit
e06930c8f7
7 files changed
+299
-29
No files matched your search
@@ -645,6 +645,39 @@ describe("课堂总结", () => {
|
||||
const all = await adm("GET", `/api/submission/stats/${task}`)
|
||||
expect(all.json.top_scored.map((t: any) => t.username)).toEqual(["weba2小李", "weba1小明"])
|
||||
})
|
||||
|
||||
test("统计每人最新一版的提示词链", async () => {
|
||||
const { createConversation, insertMessage } = await import("../src/services/prompt")
|
||||
makeUser("adm", "admin")
|
||||
const task = makeTask("挑战")
|
||||
const say = (conv: string, source: string, level: number | null, submission_id?: string) => {
|
||||
const id = insertMessage({ conversation_id: conv, role: "user", source, content: "提问" })
|
||||
run(`UPDATE prompt_message SET prompt_level = $level WHERE id = $id`, { level, id })
|
||||
insertMessage({ conversation_id: conv, role: "assistant", source, content: "回答", submission_id })
|
||||
}
|
||||
// 小明:AI 对话 → 引导 → 外部 AI,交最后这版;交了之后的提问不算
|
||||
const a = makeUser("weba1小明", "normal", "a1")
|
||||
const convA = createConversation(a, task)
|
||||
say(convA, "conversation", 3)
|
||||
say(convA, "guidance", 2)
|
||||
say(convA, "manual", 6, makeSubmission(a, task))
|
||||
say(convA, "conversation", 1)
|
||||
// 小红:一轮就交
|
||||
const b = makeUser("weba1小红", "normal", "a1")
|
||||
say(createConversation(b, task), "conversation", 1, makeSubmission(b, task))
|
||||
// 小刚:手动交的,没有提示词
|
||||
makeSubmission(makeUser("weba1小刚", "normal", "a1"), task)
|
||||
|
||||
const res = await (await client("adm"))("GET", `/api/submission/stats/${task}`)
|
||||
expect(res.json.prompts).toEqual({
|
||||
with_chain: 2,
|
||||
one_round: 1,
|
||||
external: 1,
|
||||
used_guidance: 1,
|
||||
avg_rounds: 1.5,
|
||||
levels: [1, 0, 1, 0, 0, 1],
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe("提示词分类", () => {
|
||||
|
||||
Reference in new issue
Block a user