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.ts、src/utils/merchant-stats.ts
用户感知的现象¶
商家累计超过 50,000 时: - 点「有邮箱」chip 只能看到前 50k 行的过滤结果 - 顶部 stats banner 的 withEmail / withWebsite 计数也只数前 50k - 用户看不到这是被截断了
根因分析¶
apiLocalDataList:
merchant-stats.ts ROWS_CAP 50_000 同样硬编码。
不修的理由¶
- 本扩展典型用户场景在 10k 量级,50k 是 5 倍冗余
- 改成分批累积 需要重写两处分页逻辑,工作量不小
- 真到 50k 用户大概率有别的需求(导出 / 分账号管理)
未来如果用户报告或加企业版需求时再做: - 分批 limit/offset 累积 - 数据量超阈值时 banner 提示「仅显示前 5w 条,请按任务/筛选缩小范围」
如何避免再犯¶
- 任何硬编码的容量上限要在 wiki 标明(已加到 issues)
- 大数据场景下 UI 必须有截断告警,不能让用户以为是全集
- 慎用「在 JS 端 post-filter」:性能依赖数据量,超过时静默错
相关问题¶
- ISSUE-0006 — hasEmailOnly 的引入
- ISSUE-0012 — 同路径另一个 bug