fix(v2): 修掉预审面板不刷新与候选行同 id 连开多行的缺陷
真实 Chrome 端到端验证第二篇(/prescreen-workbench、/experience-center)发现两个
源码守卫与生产构建都看不见的缺陷:
- 发起 AI 预审、运行结束后 PrescreenPanel 不重载:新运行进不了"查看哪一次运行",
面板继续显示上一次运行,而徽标写着"结果会自动刷新"。根因是 load() 只依赖
project.id;补修时又发现 worker 先写 run.status、再另写 prescreen_run 视图
(assistant_worker.process_next),两者不在同一事务,只读一次会读到视图还没
落库的中间态,因此改为按运行集合重载并在最新运行进入视图前短时重试。
- 候选区 key={card.id} 撞 React key,且「自然语言修改适用范围」「补充独立测试」
按 card.id 开合,点一行连开 4 行(同一 card.id 的草稿行与各版本行共享 id)。
改为行级 rowKey(组件id@版本@状态)。
同时新增可选脚本 scripts/browser-e2e-modules.cjs(42/42 通过),并给
test_prescreen_ui.cjs / test_experience_center_ui.cjs 补上对应源码断言。
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -99,4 +99,19 @@ assert.match(panel, /domain\.text/, "数据域必须以文字呈现");
|
||||
assert.match(lib, /雷达面积不换算成百分比|STAGE_LEGEND/, "必须说明阶段与概率无关");
|
||||
assert.ok(!/probability\s*[:=]\s*[0-9]/.test(panel), "面板不得写入任何概率数值");
|
||||
|
||||
// 11. 从本页发起的运行必须能被面板读到(真实浏览器端到端验证发现的缺陷)
|
||||
// 面板原先只依赖 project.id 重载,于是从本页发起预审、运行跑完后,面板仍停在旧运行上,
|
||||
// 新运行也进不了"查看哪一次运行"——而徽标写着"结果会自动刷新"。
|
||||
// 源码守卫与生产构建都看不出这类问题,只有真渲染会暴露;这里锁住修好的依赖关系。
|
||||
assert.match(panel, /const runKeys = \(project\.runs \|\| \[\]\)/,
|
||||
"面板必须从项目的运行集合推导重载信号");
|
||||
assert.match(panel, /\[project\.id, runKeys\]/,
|
||||
"运行集合变化时面板必须重载,否则发起的预审不会被读到");
|
||||
assert.ok(!/\[project\.id\]\)/.test(panel),
|
||||
"不得退回只依赖 project.id 的重载(发起的运行会读不到)");
|
||||
// run.status 与 prescreen_run 视图不是同一事务写入的:只读一次会读到视图还没落库的中间态
|
||||
assert.match(panel, /item\.id === newestRun/,
|
||||
"重载前必须确认最新运行已出现在视图列表里,不能只赌一次");
|
||||
assert.match(panel, /rounds < 5/, "重试必须有次数上限,不得变成无限轮询");
|
||||
|
||||
console.log("prescreen-ui: PASS");
|
||||
|
||||
Reference in New Issue
Block a user