perf(app): Phase 2 前端性能优化 5 项 — 8b-D01/D02/D03/M02/N01
Some checks failed
Main Merge / backend (push) Has been cancelled
Main Merge / frontend (push) Has been cancelled

- 8b-D01: Isar 添加 authorId+dateEpoch 复合索引和 dateEpoch 单独索引
- 8b-D02: getJournals 分页改为 DB 层 .offset().limit() 替代 Dart 层 sublist
- 8b-D03: home_bloc monthCount 改用日期范围独立查询(不受分页限制)
- 8b-M02: 笔画光栅化改为 BBox 裁剪 — 短笔画不再创建全画布尺寸图像
  - _CacheEntry 增加 offset 字段记录 BBox 偏移
  - _rasterizeStroke 计算包围盒 + 4px padding
  - _compositeIncremental 使用 offset 定位
- 8b-N01: SyncEngine enqueue 合并同一资源的操作
  - create+update → create(最新数据)
  - update+update → update(最新数据)
  - update+delete → delete
  - create+delete → 取消(不发送)
- 注意: Isar .g.dart 需运行 build_runner 重新生成
This commit is contained in:
iven
2026-06-03 16:05:11 +08:00
parent b6ffc60331
commit 32a91551c4
5 changed files with 142 additions and 40 deletions

View File

@@ -16,7 +16,8 @@ class JournalEntryCollection {
@Index()
String id = '';
/// 作者 ID
/// 作者 ID(索引 + 组合索引 authorId+dateEpoch覆盖按作者查询并按日期排序的场景
@Index(composite: [CompositeIndex('dateEpoch')])
String authorId = '';
/// 班级 ID可选
@@ -25,7 +26,8 @@ class JournalEntryCollection {
/// 日记标题
String title = '';
/// 日记日期epoch milliseconds
/// 日记日期epoch milliseconds— 单独索引支持日期范围查询
@Index()
int dateEpoch = 0;
/// 心情enum → string