[ISSUE-0061] 第 13 轮 agent — server mode page reset regression¶
v0.10.80 commit 后第 13 轮 agent 审查。前 12 轮每轮都找出 bug,v0.10.80 我以为收敛 ✅。 但 agent 抠出 1 个真 bug — v0.10.79 大重构丢失的行为语义。
病灶¶
src/sections/page/local-data-view.tsx:211-216:
// v0.10.79 之后(错)
useEffect(() => {
if (mode === 'client') {
setState({ page: 1 });
}
}, [mode, quickFilter, keyword, filterTaskId]);
只 client mode reset,server mode 漏。
用户痛点: - 用户在 server mode page=5 - 改 keyword 命中只剩 30 行 (= 2 页) - hook useEffect 触发 dataRun({ current: 5, keyword: 'new', ... }) - server 返 list=[](skip 80 但只有 30 行) - 表格空白 → 用户错觉"没数据"
历史轨迹¶
| 版本 | 状态 |
|---|---|
| v0.10.78 之前 | useEffect [filters, keyword, logic, filterTaskId, quickFilter, mode] → getTableData(1) ✓ 强制 page=1 |
| v0.10.79 (hook 大重构) | getTableData 进 hook 内,page reset 语义丢失 |
| v0.10.74 修 #4 (历史补丁) | 加 client mode useEffect setState({page:1}) — 但只 client mode |
| v0.10.79 重构 | 没把 server mode 的 reset 也加回来 |
| v0.10.80 polish | 没注意到这个漏 |
| v0.10.81 (本轮) | 删 client mode 守卫 + 补 filters/logic deps |
修¶
// v0.10.81 ISSUE-0061:两种 mode 都 reset
useEffect(() => {
setState({ page: 1 });
}, [quickFilter, keyword, filterTaskId, filters, logic]);
- 删
if (mode === 'client')守卫 - 补
filters, logic到 deps(旧版有,v0.10.74 遗漏) - mode 自身切换不需要在 deps —
setModewrapper 已自带page: 1
元洞察(agent 直击)¶
"v0.10.79 大重构丢失了行为语义。Hook 化时只搬了'读数据'路径,没搬'控制 page'的次生路径。重构清单应该不仅列 useEffect,还列每个 useEffect 的副作用语义('reset page=1'),逐项确认目标位置承接。"
"这种 hook 化重构后的语义流失类 bug,agent 难一眼看出,因为 grep 不到对应 token —— 只有顺着用户视角'我刚改了 keyword 应该怎样'才能挖出。"
→ 沉淀到「重构语义清单 rule」(下次重构必做)。
audit_grep¶
- pattern: "useEffect[\\s\\S]{0,300}mode\\s*===\\s*['\"]client['\"][\\s\\S]{0,200}setState\\([^)]*page:\\s*1"
description: "page reset 不应只在 client mode — server mode 同样需要"
工作流¶
✅ bump → build → sanity check 0.10.81
结论 / 元规则¶
重构后至少经过 1 个独立 agent 审查 + 用户实测一段时间,否则别声称"收敛"。 v0.10.79 commit message 我写"大重构治本"+第 12 轮 agent 只抠出 polish → 我误以为收敛。 第 13 轮 agent 一击命中真 bug。
下一步建议:真停下来观察一段时间,让用户实际使用兜底,再决定是否继续治理。
相关¶
- [[0059-usedatasource-hook-refactor|0059-useDataSource-hook大重构]] — 大重构(丢语义来源)
- [[0060-round12-agent-usedatasource-double-fetch|0060-第12轮agent-useDataSource双拉-死代码]] — 第 12 轮 agent polish(漏抓 page reset)
- 修bug全字典扫描 — 重构语义清单是新一层