[ISSUE-0064] 第 14 轮 agent — 最后一批 polish¶
第 14 轮独立 agent 审查 v0.10.82+83 累积改动。找出 4 个,agent 自己强烈建议第 14 轮后真停:
"本轮 BUG #1 (polling 闪) 就是 v0.10.83 自己引入的新闪烁 — 修一个闪烁制造另一个闪烁,typical 边际递减信号。第 14 轮以后再审,预期只能挖到'理论 race 但实际看不到'级别。建议路线:ship → 收 3 天真用户反馈。"
修 4 个(最后一批)¶
🟠 #1 polling 闪烁(v0.10.83 自己引入的)¶
v0.10.83 加 !rowsLoading 守卫修首次 mount 闪烁,但 useRequest polling 30s 时 rowsLoading 也短暂 true。空 DB 用户每 30s 看到 "去创建任务" → "No rows" → "去创建任务" 闪一次。
修:区分"首次 loading"和"polling loading",用 everLoaded state 标记:
const [everLoaded, setEverLoaded] = useState(false);
useEffect(() => {
if (!rowsLoading && rowsSnapshot !== undefined) setEverLoaded(true);
}, [rowsLoading, rowsSnapshot]);
const isInitialLoading = !everLoaded && !!rowsLoading;
CTA 守卫 / LocalTable loading 都改用 isInitialLoading 替代 rowsLoading。
🟠 #2 pageSize 切换无 page reset(经典 pagination bug,历史遗留)¶
page=5 + pageSize=20(rows 80-100)→ 用户切 50 条/页 → DataTable 传 (newPage=5, newPageSize=50) → setState({page:5, pageSize:50}) → 但 total=100, maxPage=ceil(100/50)=2,page=5 越界 → DataGrid 空白页。
修:
onPageChange={(newPage, newPageSize) => {
if (newPageSize !== pageSize) {
setState({ page: 1, pageSize: newPageSize }); // pageSize 变 → page 回 1
} else {
setState({ page: newPage, pageSize: newPageSize });
}
setConfigCacheValue(newPageSize);
}}
🟡 #3 merchantStats 时序漏(与 #1 同根)¶
v0.10.83 只守 rowsLoading,但 merchantStats.total 也异步(独立 useRequest)。理论上 rows 先返但 merchantStats 没回时仍可能闪 CTA。
修 #1 后用 isInitialLoading 综合标记,包含 rowsLoading 起的"首次"概念,间接覆盖此 case(rows 还没拉到 → isInitialLoading=true → CTA 隐藏)。merchantStats 后到只影响 chip 数字,不影响 CTA。
🟢 #4 SW sync error guard(对称补 unhandledrejection)¶
ext-context-guard 同时装 error 和 unhandledrejection(line 107+119)。v0.10.82 SW guard 只装了 unhandledrejection,漏 error。SW 内同步 throw(如 alarm handler 内 throw)仍冒到 chrome 错误面板。
修:补 self.addEventListener('error', ...) 对称。
audit_grep¶
- pattern: "onPageChange[^}]+setState\\(\\s*\\{\\s*page:\\s*newPage,\\s*pageSize:\\s*newPageSize"
description: "pageSize 变化时必须 reset page=1(防越界空白页)"
第 14 轮 agent 元洞察¶
"第 14 轮起,agent 审查回报率显著低于'用户实测 1 周'的回报率。"
理由: 1. v0.10.82 是预防性(无用户报告) 2. v0.10.83 是 agent #7 旧 🟡 升级 3. 本轮 BUG #1 就是 v0.10.83 自己引入的新闪烁(修闪烁制造闪烁 — 边际递减信号) 4. BUG #2 (pageSize) 是历史遗留,跟 14 轮重构无关
→ 第 14 轮后真停,收 3 天真用户反馈再决定下一轮主题。
14 轮 agent 审查总结¶
| 轮 | 触发版本 | 抓到 |
|---|---|---|
| 第 6 轮 | v0.10.58 | 6 真 bug |
| 第 7 轮 | v0.10.60 | 4 真 bug |
| 第 8 轮 | v0.10.62 | 1🔴+3🟡 |
| 第 9 轮 | v0.10.67 | 3 真 bug |
| 第 10 轮 | v0.10.74 | 6 真 bug |
| 第 11 轮 | v0.10.76 | 4 真 bug |
| 第 12 轮 | v0.10.80 | 2 polish |
| 第 13 轮 | v0.10.81 | 1 真 bug(重构丢语义) |
| 第 14 轮 | v0.10.84 | 2🟠+1🟡+1🟢 + 强烈建议停 |
累积 27+ 个真 bug + ~10 个 polish。
相关¶
- [[0063-merchant-first-mount-flash-empty|0063-商家列表首次mount闪无数据]] — #1 的来源(自己引入新闪烁)
- 0062-background-SW-unhandledrejection-guard — #4 的来源(漏 error event)
- 修bug全字典扫描 — pageSize 该补哪个表的全字典