跳转至

[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)=2page=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 同时装 errorunhandledrejection(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

相关