跳转至

title: [ISSUE-0018] hasEmailOnly 全表 50k 上限静默截断 description: "hasEmailOnly 全表 50k 上限超过后静默截断(观察项)" tags: [issue] created: 2026-05-26 updated: 2026-05-26 type: issue status: fixed severity: minor


[ISSUE-0018] hasEmailOnly 全表 50k 上限静默截断

相关源码src/api/search.tssrc/utils/merchant-stats.ts

用户感知的现象

商家累计超过 50,000 时: - 点「有邮箱」chip 只能看到前 50k 行的过滤结果 - 顶部 stats banner 的 withEmail / withWebsite 计数也只数前 50k - 用户看不到这是被截断了

根因分析

apiLocalDataList

const big = await getListByQuery(baseQuery, 1, 50_000, sort);

merchant-stats.ts ROWS_CAP 50_000 同样硬编码。

不修的理由

  • 本扩展典型用户场景在 10k 量级,50k 是 5 倍冗余
  • 改成分批累积 需要重写两处分页逻辑,工作量不小
  • 真到 50k 用户大概率有别的需求(导出 / 分账号管理)

未来如果用户报告或加企业版需求时再做: - 分批 limit/offset 累积 - 数据量超阈值时 banner 提示「仅显示前 5w 条,请按任务/筛选缩小范围」

如何避免再犯

  • 任何硬编码的容量上限要在 wiki 标明(已加到 issues)
  • 大数据场景下 UI 必须有截断告警,不能让用户以为是全集
  • 慎用「在 JS 端 post-filter」:性能依赖数据量,超过时静默错

相关问题