Skip to content

Codex/stage15 real entry - #62

Open
xjx-star wants to merge 2 commits into
XiaoCow666:mainfrom
xjx-star:codex/stage15-real-entry
Open

xjx-star wants to merge 2 commits into
XiaoCow666:mainfrom
xjx-star:codex/stage15-real-entry

Conversation

@xjx-star

Copy link
Copy Markdown
Contributor

变更范围

阶段十五:把阶段十四的知识证据能力接入学生代码工作台真实流式问答入口,并补齐 AI 流中断时的可恢复失败路径。

  • routes/api.py:/api/code_advice 的 SSE 空回答、LLM 中断和未知异常统一返回安全的知识证据状态;不新增跨作业检索数据。
  • templates/submit_code.html:前端不再吞掉 SSE error 事件;显示可理解的错误信息,并保留本次检索的知识证据回执。
  • tests/test_code_advice_knowledge.py:补充真实接口中断集成测试。
  • tests/test_knowledge_evidence_integration.py:验证学生提交页和证据回执/失败处理钩子。
  • KNOWLEDGE_RAG_STAGE15.md:记录入口、复现、回滚和风险。

本分支基于阶段十四 commit e4cd81e(PR #61);阶段十四先合并后,本 PR 可视为其上的阶段十五增量。

验证命令及结果

  • python -m pytest tests/test_code_advice_knowledge.py tests/test_knowledge_evidence_integration.py -q --disable-warnings
    • 7 passed,退出码 0。
  • python -m pytest -q --disable-warnings
    • 749 passed,退出码 0,约 17 分 17 秒。
  • Python 静态编译:通过。
  • git diff --check:通过。
  • Node 语法校验:10 个不含 Jinja 占位符的页面脚本块通过;含 Jinja 变量的脚本块由 Flask 页面集成测试渲染验证。

事实与推断边界

已确认:真实 Flask 登录会话、作业权限、/submit 页面、/api/code_advice SSE 成功路径和流中断路径均能保持安全证据投影;旧的 done/非流式成功路径未改变。

未验证:真实外部 AI provider、浏览器端真实网络断线、生产 Redis、生产数据库和线上部署。生产 provider 成本、全局配额和 SLA 仍需单独决策。

回滚与后续风险

回滚本 PR commit 即可恢复原错误事件和前端处理,不涉及数据库结构、权限、部署或核心成功响应字段。仍建议补一次真实浏览器网络中断演练,并在 PR #61/本 PR 评审和隔离验证通过后再标记阶段任务完成。

@XiaoCow666 XiaoCow666 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeSense 自动评审

未发现会导致接口无法运行、知识证据泄露、核心流式问答回归或任务目标未完成的阻塞问题。SSE 的空回答与流中断现在会携带安全证据回执,前端能够显示错误并渲染该回执。

合并后可以继续改进的地方

  • 浏览器在服务端错误事件到达前发生真实网络断开时,前端只能走通用网络异常分支,无法保留尚未接收的知识证据;PR 描述已明确这一边界,建议后续通过浏览器端端到端演练确认用户体验。
  • 学生页集成测试目前主要断言渲染后的脚本包含错误处理钩子字符串,尚未直接执行浏览器端 SSE 错误事件后的证据渲染行为;可在后续增加浏览器自动化测试。

已有验证信息

  • PR 提供的定向测试证据:python -m pytest tests/test_code_advice_knowledge.py tests/test_knowledge_evidence_integration.py -q --disable-warnings,7 passed,退出码 0。
  • PR 提供的全量测试证据:python -m pytest -q --disable-warnings,749 passed,退出码 0。
  • PR 描述声称 Python 静态编译、git diff --check 及页面脚本语法校验通过。

评审事件:61fee020-b3fc-11f1-85a2-d145913b7c2c

@XiaoCow666 XiaoCow666 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

未发现所提供 diff 中存在必须修改的问题,可以合并。

本次仅完成静态审查,未运行命令或测试。已检查范围:

  • routes/api.py::generate():空回答、LLM 中断和其他异常统一构造 error 事件,并附带已有的 knowledge_fields,便于失败时显示证据回执。
  • templates/submit_code.htmlstreamErrorPayload 将 SSE 错误传递到外层异常处理,使用服务端提示并调用 renderKnowledgeReceipt()
  • services/knowledge_optimization.pyservices/knowledge_rag.py:调用预算在 embedding 执行前检查,计数按请求创建;默认 provider 保持 cjk_ngram
  • services/knowledge_evidence.py:公共投影保留 timeoutrate_limited 及对应回退码。
  • 新增测试覆盖服务端中断事件、预算拒绝、provider 选择和状态投影。

后续建议(不阻塞):

  1. tests/test_knowledge_evidence_integration.py 新增断言只检查 HTML 中的字符串。建议补充浏览器行为验证:回答产生部分内容后收到 error 事件,确认页面显示错误提示和证据回执,并能重新发送问题。
  2. tests/test_code_advice_knowledge.py 的中断用例替换了检索函数和 LLM client,因此能够验证 Flask 接口的事件组装,外部 provider 中断行为仍需单独验证。请在 PR description 中保留这一范围说明。
  3. 合并前针对最终提交运行 python -m pytest tests/test_code_advice_knowledge.py tests/test_knowledge_evidence_integration.py tests/test_knowledge_optimization.py tests/test_knowledge_rag.py tests/test_knowledge_evidence.py -q --disable-warnings,在 PR description 记录提交 SHA、命令和实际结果;所述 749 passed 属于贡献者提供的结果,本次未独立复验。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants