Skip to content

修复朋友圈全量刷新并保留原有日志信息 - #132

Merged
2977094657 merged 3 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/fix-issue-124-full-sync-original-logs
Sep 2, 2026
Merged

修复朋友圈全量刷新并保留原有日志信息#132
2977094657 merged 3 commits into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/fix-issue-124-full-sync-original-logs

Conversation

@xiaoshengbao

Copy link
Copy Markdown
Contributor

关联问题

关联 #124。本拉取请求不会自动关闭该问题,待维护者验证后再决定是否关闭。

问题原因

朋友圈左侧的手动“刷新”原先复用了增量同步逻辑,会受到最大动态编号、高水位以及单次读取数量限制的影响。因此在好友动态较多、总记录超过读取上限,或者需要补齐低于现有高水位的历史记录时,只能刷新出部分内容。

此外,原来的同步过程缺少可恢复的后台任务状态、批次进度和完整的生命周期诊断日志。

修复内容

  • 新增账号级朋友圈全量同步任务管理器,同一账号重复启动时复用当前任务。
  • 全局同一时间只运行一个全量同步任务,其他账号任务自动排队。
  • 任务支持排队、运行、完成、失败和取消状态。
  • 离开朋友圈页面后同步继续执行,重新进入页面时自动恢复任务进度。
  • 直接分页扫描微信本地缓存中的朋友圈源表,不再依赖高水位和原有的 200 条或 2000 条限制。
  • 优先使用数据库行号进行键集分页;旧表不支持时,回退到有符号动态编号分页。
  • 支持正负动态编号、多好友、单好友超过 200 条、总量超过 2000 条以及缺少部分字段的旧表结构。
  • 每 200 条提交一个批次,使用原有幂等更新逻辑累计扫描、准备、变更、未变化和跳过数量。
  • 同步只追加或更新数据,不会因为当前源快照缺少记录而删除已有历史数据。
  • 只有任务完整结束后才推进最大动态编号状态;取消或失败不会错误标记为已经完整同步。
  • 手动“刷新”始终启动当前账号的全量同步,不受当前选中好友影响。
  • 每批数据写入后无感合并当前可视窗口,并尽量保持原有滚动位置。
  • 页面重新进入、账号切换和事件流重连时都会恢复任务状态。

日志行为说明

本次根据反馈保留原有朋友圈日志的字段和输出方式,不再删除或替换既有日志信息:

  • 账号、联系人、昵称和正文继续按原有逻辑记录。
  • 动态标识、媒体标识、媒体地址和主机信息继续按原有逻辑记录。
  • 密钥摘要、令牌摘要、响应摘要、时间、尺寸和文件信息继续按原有逻辑记录。
  • 本地路径、文件名、数据库异常文本和原有异常堆栈继续按原有逻辑记录。
  • 请求日志、媒体日志、导出日志、自身信息日志、时间线日志和自动同步日志均恢复原有行为。

在原有日志之外,仅为本次新增的全量同步和增量同步增加独立的结构化生命周期日志。这些新增日志记录任务或请求标识、阶段、批次数、聚合计数、状态码、错误类型和耗时,便于定位同步进度与失败阶段,同时不会改变原有日志。

新增接口

  • POST /api/sns/realtime/full_sync:创建或复用当前账号的全量同步任务。
  • GET /api/sns/realtime/full_sync/status:查询当前账号最近一次全量同步任务。
  • DELETE /api/sns/realtime/full_sync:按照同步任务标识取消当前任务。
  • 朋友圈事件流新增全量同步进度、完成、失败和取消事件,进度使用累计值。

测试结果

  • 全部朋友圈后端测试:103 项通过,另有 17 个子测试通过。
  • 请求日志测试:5 项通过。
  • 前端测试:113 项通过。
  • 已覆盖多好友、单好友超过 200 条、总量超过 2000 条、负数动态编号、旧表结构、空行、损坏行、重复启动、跨账号排队、取消和重新运行。
  • 已验证原有媒体诊断字段、动态和媒体标识、地址、摘要及本地路径等日志继续正常输出。
  • 已验证新增全量同步失败日志不会直接写入异常中的本地路径等内容。

给问题 #124 的回复

问题已经定位并修复。此前朋友圈左侧“刷新”实际使用的是增量同步路径,会受到高水位判断和单次读取数量上限影响,因此好友动态较多或需要补齐较早历史记录时,只能刷新出部分内容。

本次修复后,手动“刷新”会启动当前账号的完整本地朋友圈缓存同步,按批次遍历微信本地已经缓存的全部有效记录,不再受 200 条或 2000 条限制,也能补齐低于现有高水位的历史记录。同步在后台运行,支持查看进度和取消;离开页面后不会中断,重新进入时可以恢复任务状态。每批数据写入后会无感更新当前列表并尽量保持滚动位置。

日志方面保留原有输出行为,账号、联系人、正文、动态和媒体标识、地址、摘要、本地路径等原有诊断信息都会继续记录。本次只额外增加全量同步和增量同步的结构化生命周期日志,用于观察任务阶段、批次数、聚合数量、错误类型和耗时。

需要注意:全量同步只能处理微信客户端本地已经缓存的数据,不会主动联网拉取微信尚未缓存的历史朋友圈。

@2977094657
2977094657 merged commit ddac74a into LifeArchiveProject:main Sep 2, 2026
2 checks passed
@xiaoshengbao
xiaoshengbao deleted the codex/fix-issue-124-full-sync-original-logs branch September 5, 2026 04:56
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.

2 participants