Implementation Plans

Calibration 加载性能设计

Calibration 加载性能设计

目标

把 Calibration 的首屏工作量从“读取、传输并渲染全部内容”改为固定大小的首批内容,同时保持 Feedback、筛选和内容排序的现有语义。

方案

  • 服务端首次只读取 50 条内容;游标由 created_atid 组成,保证排序稳定。
  • 新增只读 GET /api/calibration,支持 cursorfilter 与受限的 limit。切换筛选时重置列表,点击“加载更多”才请求下一页。
  • Calibration 查询使用一次作者聚合和一次最新 Feedback 聚合,再 join 到当前页,替换每行相关子查询。
  • 增加排序、作者聚合及最新 Feedback 所需的 SQLite 索引。
  • 客户端只渲染已加载页;筛选项单独从数据库读取,因此不会因为首屏只有 50 条而缺失。

错误与兼容性

  • 非法 API 参数返回 400;请求失败在页面内提示,可重试。
  • 保留 getCalibrationContentItems(),供既有测试和调用方取得完整集合。
  • Feedback 保存后仍刷新服务端数据,保证 Profile 与 History 一致。

验证

  • 数据库测试覆盖分页、游标、分类筛选、未反馈筛选与最新 Feedback。
  • Route Handler 测试覆盖分页成功和非法参数。
  • 运行 npm testnpm run build,并比较 /calibration 的响应体与本地加载耗时。