Skip to content

实现分页阶段0-10分页、懒加载、虚拟锚点与完整系统回归 - #46

Draft
7015725 wants to merge 29 commits into
agent/rebuild-performance-from-main-20260806from
agent/add-pagination-lazy-prefetch-20260807
Draft

实现分页阶段0-10分页、懒加载、虚拟锚点与完整系统回归#46
7015725 wants to merge 29 commits into
agent/rebuild-performance-from-main-20260806from
agent/add-pagination-lazy-prefetch-20260807

Conversation

@7015725

@7015725 7015725 commented Aug 6, 2026

Copy link
Copy Markdown
Owner

范围

当前 PR 包含 ClipHub 首页分页方案 Stage 0–10,现已完成实现与真机回归;继续保持 Draft,等待合并决策。

已完成且真机通过

  • Stage 0:快速关闭和线程探针。
  • Stage 1:统一 Repository 分页基础。
  • Stage 2:分页设置与持久化。
  • Stage 3:统一分页状态机。
  • Stage 4:AJAX Keyset 增量追加与 Footer。
  • Stage 5:数字分页与页码导航。
  • Stage 6:动态懒加载与下一页预加载。
  • Stage 7:虚拟 View 窗口、锚点恢复、新内容位置保持与回到最新。
  • Stage 8:数据块脱水、按 ID 重新水合、标签窗口查询与缺失 ID 修正。
  • Stage 9:数据变化、操作刷新、条件重建和分页模式切换锚点回归。

Stage 8 真机返回 ok = true:180 条初始数据中 108 条脱水;AJAX 追加到 362 条后 328 条脱水;重新水合、标签恢复、缺失 ID 修正、锚点、AJAX 与数字分页回归全部通过。

Stage 9 已实现且真机通过

版本:

  • moduleSetVersion = 20260807.13
  • Filter.MODULE_VERSION = 48
  • PAGINATION_STAGE = 9

实现内容:

  • 新记录到达旧位置时只标记“有新内容”,不改变当前 ID、滚动位置或锚点。
  • 删除、撤销、编辑、置顶和标签变化统一重载当前分页深度并恢复锚点。
  • 搜索、筛选、排序重建时扫描结果寻找原 anchorItemId
  • AJAX 与数字分页切换时按全局锚点索引映射加载深度或页码。
  • 合并关联变化事件,抑制新增记录后紧随标签事件的重复刷新。
  • 保持 Stage 6–8 的懒加载、预加载、虚拟 View 和数据窗口行为。

测试入口:

  • ClipHub_分页阶段9数据变化与操作回归测试入口.txt
  • 测试入口版本:4
  • 隔离运行目录:ClipHubPaginationStage9Mutation

Stage 9 v4 真机返回 ok = true:新内容待处理和回到最新正确;删除、撤销、编辑、置顶、标签、搜索与排序后的锚点误差均为 0px;数字分页映射到预期第 3 页,切回 AJAX 后锚点不变;所有错误字段为空,原设置已恢复。

Stage 9 v2 修正

v1 置顶排序时查询和分页结果正常,但重建过程中旧 ScrollView 再次捕获锚点,把待恢复 ID 从 163 覆盖为 187。v2 在统一变化刷新期间锁定首次捕获的 anchorItemId + anchorOffsetPx,首次恢复完成后再解锁,并使用独立生产与测试分片避免旧版本资源交叉校验。

Stage 9 v3 修正

v2 真机已通过删除、撤销、编辑、置顶、标签、筛选、搜索、排序、数字分页映射与 AJAX 恢复。唯一失败项为回到最新后旧窗口异步回调重新写入已清除锚点。v3 在 scrollToTopPending 期间禁止捕获锚点,并在测试中等待虚拟更新结束后额外延迟复核。

Stage 9 v4 修正

v3 真机结果中的新增、回到最新、删除/撤销、编辑、置顶、标签、搜索、排序、数字分页与 AJAX 回归均已实际通过;ok = false 来自测试在锚点恢复队列尚未完全执行时过早采样。v4 仅调整测试等待逻辑:变化派发后等待布局与锚点稳定,再校验同一 ID、偏移误差、调度状态与位置保持标记;生产模块和版本不变。

Stage 10 完整系统回归

Stage 10 不修改生产模块,新增测试入口 ClipHub_分页阶段10完整系统回归测试入口.txt,测试入口版本为 7,隔离运行目录为 ClipHubPaginationStage10SystemRegression

自动覆盖:20 轮暖启动、20 轮快速显示/关闭、普通隐藏恢复锚点与面板缓存、Filter IME 显示和布局恢复。

真实交互覆盖:系统侧滑返回、外部点击、窗口拖动、右下角缩放、横竖屏切换、Home、最近任务,以及最终完全停止、数据库关闭、运行锁释放和隔离目录清理。测试通过顶部非触摸提示条逐步引导,每个真实动作限时 35 秒。

Stage 10 v2 修正

v1 真机自动回归全部通过:20 轮暖启动、20 轮快速显示/关闭及普通隐藏恢复均正常,清理、设置恢复和完全停止也成功。失败发生在创建顶部交互提示条时,测试的主线程快速路径把 DefaultDispatcher-worker-8 误判为主线程;生产模块未失败。

v2 仅修改隔离测试:以主 Looper 所属线程 ID 判断 Android 主线程,并加入 lastCheckpoint 阶段定位。生产版本继续保持 .13 / Filter 48 / Stage 9,冻结模块与正式入口不变。

Stage 10 v3 修正

v2 真机再次确认全部自动回归、最终停止、设置恢复和隔离清理通过,提示条已正常创建;失败点推进至 interactive_ime。测试工作线程调用 Filter.performSearchToggleClick()Filter.handleBack() 时,模块内部 Looper 包装对象快速判断误走直接调用路径。

v3 仅在隔离测试中把展开搜索和关闭搜索动作显式投递到真实 Android 主线程;等待与状态采样保留在工作线程,避免阻塞主线程。生产模块、正式入口和版本不变。

Stage 10 v4 修正

v3 真机已完成搜索展开、输入焦点、IME 避让应用和关闭恢复,lastInsetPx = 1093,所有相关错误字段为空。唯一失败是 AtomicReference 返回 java.lang.Boolean(true) 后,测试使用 === true 比较,误记为 toggleWorked = false

v4 仅规范化该返回值后再判断,不改变测试执行路径,也不修改生产模块、正式入口和版本。

Stage 10 v5 修正

v4 真机已通过 IME、系统侧滑返回和浮窗外部点击,失败点推进至真实拖动。拖动热区位于浮窗最顶部正中间约 86dp × 24dp 的透明区域,且必须先保持超过长按阈值;提前移动会取消激活,旧提示不够明确。

v5 显示按当前窗口几何计算的屏幕目标坐标,明确要求按住约 1 秒、感觉震动后再拖动;失败时额外返回 dragPendingdragActivateCount、移动计数与前后几何。生产窗口代码、正式入口和版本不变。

Stage 10 v6 修正

v5 真机已通过真实拖动、右下角缩放、横竖屏切换和 Home,唯一中断点为最近任务。Home 关闭 UI 后任务监听会清空基线;旧测试重新显示浮窗后立即允许执行手势,可能在下一次约 180ms 采样前进入最近任务,使最近任务界面被误收为新基线。

v6 等待监听器恢复 running=true 且取得非空 baselinePackage,显示“准备完成”后才允许执行最近任务手势;失败时返回监听启停次数、前后包名、ActivityType、TaskId 和原因字段。生产模块、正式入口和版本不变。

Stage 10 v7 最近任务手工项跳过

真机确认 ClipHub 浮窗覆盖桌面时无法完成底部上划进入最近任务。按用户要求,v7 不再重新显示浮窗或等待该手势,固定记录 skipped = trueskipReason = user_confirmed_coloros_recents_gesture_blockedok = true,随后直接完成停止、设置恢复与隔离清理。

此项属于明确跳过,不表示最近任务关闭能力已经通过;Stage 10 其余自动和真实交互项目仍保持原通过条件。生产模块、正式入口和版本不变。

Stage 10 v7 真机 PASS

Android 14 / ColorOS / ShortX 返回 ok = truelastCheckpoint = completederror = null。20 轮暖启动、20 轮快速关闭、普通隐藏锚点恢复、IME、系统侧滑返回、外部点击、真实拖动、真实缩放、横竖屏切换、Home、最终停止和隔离清理全部通过。

数据库已关闭、运行锁已释放、UI 已清除、原分页设置已恢复。最近任务手工项按用户要求记录为 skipped = true,属于明确未验证例外,不计作该能力通过。结论:Stage 10 PASS(带最近任务跳过边界)。

冻结边界

  • src/ch_06_repository.js 不变。
  • src/ch_08_window.js 不变:4ccff8067656ae51602290c884081795ec0f65ea
  • src/ch_13_settings.js 不变:7826055348bfce1682e6191a29dd34cdc1bdf2f3
  • src/ch_15_app.js 不变:ff60665e8ddd34bd96fa276cc7b632ca73a56845
  • 正式入口、浮窗开关及停止后台链路不变。
  • 不新增 ch_16,模块数量保持 15。
  • Rhino ES5。
  • main 未直接修改。

提交边界

  • Stage 6:d2bce1d4ec49039a63fc94c8120e3b16c5321304
  • Stage 7:6c4b5b9f58bb3a8e1e7ff415922ad8db49d3c3c9
  • Stage 8:b2c8ec8b25d99def43be51b50a667dbb175f9b18
  • Stage 8 测试入口最终修正:00195b5ec8e4e6c16ba7ed88e2e36d6ca96dfedb
  • Stage 9 初版:82c56a992c8e37ff870e7f015af3dd5e5f49b852
  • Stage 9 排序锚点锁修正:5399799069c7de12a80695f4ff98d17fbb1ac844
  • Stage 9 回到最新锚点清理修正:0a36e4a17c079557bb46b2b3616080c197730aaf
  • Stage 9 异步恢复测试采样修正:7d9a0c647b0ca21f79b5c97afdacab03ff8115f1
  • Stage 10 完整系统回归入口:cc0a4cb1eed668c770c2d8f247f2e5fea7657176
  • Stage 10 v2 主线程判定修正:58dc679f2cbe8075a8d373fd7f9bb4624020e5d3
  • Stage 10 v3 输入法主线程调用修正:06d2575a2c27ef5ffc9478bc7464b429276318c3
  • Stage 10 v4 输入法结果判定修正:107b45599218e51c35bf22f2563fcc8dd507b243
  • Stage 10 v5 真实拖动引导与诊断:7babbb47b370263f4d9c5283c00d92327543929a
  • Stage 10 v6 最近任务监听基线稳定:eb295ed4b5b9bdd247947736c7474a9e5fd0f00e
  • Stage 10 v7 跳过最近任务手工项:402f00264d9d9fe1d13b73e491027fb9266ce9b2
  • Stage 10 真机 PASS 记录:cbdd9fde2372b3c7c929d67cd897c319e5e52d98

下一步:分页专项 Stage 0–10 已收口;由用户决定何时将 PR 转为 Ready 或合并。

@7015725
7015725 force-pushed the agent/add-pagination-lazy-prefetch-20260807 branch from 2be5d0b to f097cc1 Compare August 6, 2026 21:21
@7015725 7015725 changed the title 实现分页阶段0快速关闭防护与工作线程探针 实现分页阶段0-1生命周期防护与统一Repository分页基础 Aug 6, 2026
@7015725 7015725 changed the title 实现分页阶段0-1生命周期防护与统一Repository分页基础 实现分页阶段0-2生命周期、Repository与设置页基础 Aug 6, 2026
@7015725 7015725 changed the title 实现分页阶段0-2生命周期、Repository与设置页基础 实现分页阶段0-3生命周期、Repository、设置与统一状态机 Aug 6, 2026
@7015725
7015725 force-pushed the agent/add-pagination-lazy-prefetch-20260807 branch from 5593cfe to 54275f6 Compare August 7, 2026 00:16
@7015725 7015725 changed the title 实现分页阶段0-3生命周期、Repository、设置与统一状态机 实现分页阶段0-4生命周期、Repository、设置、状态机与AJAX追加 Aug 7, 2026
@7015725 7015725 changed the title 实现分页阶段0-4生命周期、Repository、设置、状态机与AJAX追加 实现分页阶段0-5生命周期、Repository、设置、AJAX追加与数字分页 Aug 7, 2026
@7015725
7015725 force-pushed the agent/add-pagination-lazy-prefetch-20260807 branch from 98cb208 to 48d4193 Compare August 7, 2026 01:34
@7015725
7015725 force-pushed the agent/add-pagination-lazy-prefetch-20260807 branch from 48d4193 to d6d4f6f Compare August 7, 2026 01:40
@7015725 7015725 changed the title 实现分页阶段0-5生命周期、Repository、设置、AJAX追加与数字分页 实现分页阶段0-6生命周期、Repository、设置、AJAX、数字分页与懒加载预取 Aug 7, 2026
@7015725 7015725 changed the title 实现分页阶段0-6生命周期、Repository、设置、AJAX、数字分页与懒加载预取 实现分页阶段0-7生命周期、分页、懒加载预取与虚拟锚点恢复 Aug 7, 2026
@7015725 7015725 changed the title 实现分页阶段0-7生命周期、分页、懒加载预取与虚拟锚点恢复 实现分页阶段0-8分页、懒加载、虚拟锚点与数据块水合 Aug 7, 2026
@7015725 7015725 changed the title 实现分页阶段0-8分页、懒加载、虚拟锚点与数据块水合 实现分页阶段0-9分页、懒加载、虚拟锚点、数据水合与变化回归 Aug 7, 2026
@7015725 7015725 changed the title 实现分页阶段0-9分页、懒加载、虚拟锚点、数据水合与变化回归 实现分页阶段0-10分页、懒加载、虚拟锚点与完整系统回归 Aug 7, 2026
@github-actions
github-actions Bot deleted the agent/add-pagination-lazy-prefetch-20260807 branch August 9, 2026 10:04
@github-actions
github-actions Bot deleted the branch agent/rebuild-performance-from-main-20260806 August 9, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant