Skip to content

[Bug]:#487 的答题状态继承问题在 v1.5.3 Quiz custom模式下复现 #677

Description

@vent7779

Do you need to file an issue?

  • I have searched the existing issues and this bug is not already filed.
  • I believe this is a legitimate bug, not just a question or feature request.

Describe the bug

#487 的问题类似,#487 报告的是 Mimic paper 模式,已在 v1.4.0-beta 修复;但在 v1.5.3上,使用custom模式(挂载知识库)仍出现了类似问题。

具体表现
在同一个对话里先后生成两次 Quiz,第二次生成的新 Quiz 会继承上一次的答题状态,用户还未答题就显示为已作答(绿/红标记)。

完整时间线

  1. 新 Quiz 渲染后即显示大部分题目已作答(如 8/10),绿/红标记对应的是用户对上一套题的答案,按题号位置套用;
  2. 这些旧答案在生成过程中就被逐题自动判卷并写入了题库;
  3. 期间前端还出现过同一条消息被渲染成两条的现象(内容逐字相同,一条带污染的作答状态,一条全新,显示的耗时也不一致),疑似与前端连接超时后的状态恢复有关;
  4. 用户刷新页面后,对话里只保留一条消息且作答状态恢复干净;
  5. 但第 2 步写入题库的虚假记录仍然存在:题库中出现用户从未作答过的题目,标记为已做,答案为上一套题的作答。

数据层证据(来自 data/user/chat_history.db 的 notebook_entries 表)

turn_id                        question_id  user_answer            is_correct
turn_..._81ac112452(第一套)    q_1..q_10    A,A,C,C,C,C,C,B,C,B    (真实作答)
(空)                (第二套)   q_1..q_8     A,A,C,C,C,C,C,B        (被继承并重判)

这批空 turn_id 记录的 created_at(08:56:38 ~ 09:00:56)落在第二套题的生成窗口内(08:55 ~ 09:01),即写入发生在用户见到题目之前。

Steps to reproduce

  1. 新建对话,用测验功能出一套题(例如 10 道选择题);
  2. 作答其中若干题;
  3. 在同一个对话里再出一套新题(10 道);
  4. 观察新题卡片渲染后的状态;
  5. 观察题库中题目新增情况。

Expected Behavior

新 Quiz 的答题状态应该是全新的,且在用户未答题的情况下,题库应该没有新增题目。

Related Module

Question Generator

Configuration Used

  • 出题功能 + 挂载知识库(LlamaIndex 引擎,文档来自 Obsidian )
  • 模型:DeepSeek 官方 API(v4-flash)
  • Embedding:硅基流动 BAAI/bge-m3
  • 出题 max_tokens 已调整为 8192,前端超时已调整为 300 秒

Logs and screenshots

按时间线:
(前提:用户在同一对话里已经出过一套题并作答)
P1 用户要求重新出题后,对话界面先出现10题(显示8/10,已作答的8题答案与上一套quiz的作答一致)
P2 等待一段时间,出现两套一模一样的题目(一个显示状态全新,一个显示8/10)
P3 刷新对话后,只保留了状态全新的题目
P4 在用户完全未答题的情况下,题库内保留了P1中的作答记录
P5 用户答题后在题库中出现了相同的题目(右下角时间戳不一样)

Image Image Image Image Image

Additional Information

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions