Skip to content

fix: 阶段一通过后生命周期状态条不刷新,耗时与下一步指向旧阶段 - #60

Merged
XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
linxi123-A:fix/lifecycle-refresh-on-stage1-pass
Sep 19, 2026
Merged

XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
linxi123-A:fix/lifecycle-refresh-on-stage1-pass

Conversation

@linxi123-A

Copy link
Copy Markdown
Contributor

背景(一次真实操作观察到的缺灯)

在通过线上「学生体验」入口完整走核心学习路径(阶段一 → 阶段二)时发现:功能能完成,但关键状态变化无法及时观察。

关键路径与问题

  1. 进入 arena,前端调 /thinking/api/start_session,状态条「学习会话状态」在此时填充一次:
    • 最近活动、服务器观察时间:0分0秒、下一步:完成本阶段的思路描述
  2. 学生作答阶段一 3 道引导题(实际耗时约 30 秒)→ 提交思路
  3. 后端评判通过后已把 current_stage 更新为 2 并提交事务,还写了 stage_pass 日志
  4. 前端提示「思路描述通过!进入积木编程阶段」并切换到阶段二——但状态条仍停在会话创建时的快照:
    • 服务器观察时间仍显示 0分0秒(真实已过约 30 秒)
    • 下一步仍显示 「完成本阶段的思路描述」(指向已完成的阶段一)

状态条此前只在三种时机刷新:页面初始化、手动点「同步状态」、标签页重新可见。阶段提交成功这一最关键的状态变化点没有刷新,学生看到的是一盏"不亮的灯"。

根因

阶段一提交成功的处理分支(static/js/thinking.js)没有调用既有的 refreshSessionLifecycle()。该函数读取现有只读接口 /thinking/api/session/<id>/status 并原地渲染,不 reload、不跳转、不触碰输入——灯和开关都已存在,只差在阶段切换时按一下。

改动(一个调用环节,static/js/thinking.js)

阶段一 data.passed 分支在切换阶段前新增:

@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 自动评审

核心目标已完成:阶段一通过后会触发既有的生命周期状态刷新,并保留原有阶段切换流程。未发现会导致功能无法运行、数据错误或明显回归的阻塞问题。

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

  • 新增测试仅通过源码字符串断言验证调用存在,无法覆盖请求失败、异步时序或实际状态条渲染结果;这是测试覆盖范围的可改进项,不阻塞本次修复。

已有验证信息

  • PR 提供了新增的 pytest 测试文件,但事件中未提供任何测试执行或检查通过的证据。

评审事件:d1696b80-b3dc-11f1-90d8-743aba34de3a

@XiaoCow666
XiaoCow666 merged commit 3f552ef into XiaoCow666:main Sep 19, 2026
1 check 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