一卡通人员全量同步现已将耗时拆分为“一卡通服务器拉取”“业务服务器同步”和“可选本地保存”三段,并在同步弹框中分别展示状态、开始时间、结束时间和耗时。
自动拉取和手动拉取统一写入独立的 Log/人员拉取_yyyyMMdd.txt 文件;每轮日志包含触发来源、成功或失败状态、失败步骤、成功数量和各段耗时。现有日志查看弹框会自动列出该 .txt 文件。
| 环节 | 当前批量 | 说明 |
|---|---|---|
| 从一卡通服务器拉取 | 2000 人/批 | 平衡源端请求次数与 SOAP/DOM 瞬时内存;本次未再上调 |
| 同步给业务服务器 | 最多 1000 条/批 | 沿用 SyncPersonsRequest.MAX_ITEMS,保持不变 |
| 本地保存 | 一轮完整快照 | 仅在开关启用且业务同步零失败后执行 |
源端 2000 人/批仍需在目标设备用真实全量数据验证峰值内存;代码级通过不等同于已经证明不会 OOM。
local_person_pull_log_file_prefix=人员拉取_ 统一维护。LocalFileRecorder 的外部存储目录、日期格式、.txt 后缀和异步追加方式。trigger=AUTO,手动入口记录 trigger=MANUAL。syncId 关联开始、连接、源端分页、业务批次、本地保存和最终结果。主要事件:PERSON_PULL_START、PERSON_PULL_CONNECT_SUCCESS、PERSON_PULL_FETCH_BATCH_SUCCESS、PERSON_PULL_FETCH_SUCCESS、PERSON_PULL_UPLOAD_START、PERSON_PULL_UPLOAD_BATCH_RESULT、PERSON_PULL_UPLOAD_SUCCESS、PERSON_PULL_UPLOAD_FAILURE、PERSON_PULL_LOCAL_SAVE_START、PERSON_PULL_LOCAL_SAVE_SUCCESS、PERSON_PULL_LOCAL_SAVE_FAILURE、PERSON_PULL_SUCCESS、PERSON_PULL_FAILURE。
失败终态通过 failedStage=CONNECT/FETCH/UPLOAD/LOCAL_SAVE 标记具体步骤,并记录错误类型和经过换行清理、长度限制的错误摘要。成功终态记录处理总数、成功数、失败数、源端耗时、业务端耗时、可选本地保存耗时和整轮耗时。
业务端返回的 unchanged 表示已存在且无需更新,本次将其计入成功数量,成功数统一为 total - failed。
NOT_STARTED 兼容。PersonPullLog,集中格式化独立日志并隔离日志写入异常。ConsumptionPersonSyncCoordinator.Listener,提供三个阶段边界回调。unchanged 并修正成功数口径。AUTO/MANUAL 并装配 人员拉取_ 写入端。1.8.0_482)。:app:testDebugUnitTest:164 个测试通过,0 failure、0 error、0 skipped。:app:assembleDebug:通过。git diff --check:通过。app/build/outputs/apk/debug/app-debug.apk,约 64 MB。913f9ca83b8891bde4c1491b563fcf9a3255d0f65f65e7be9d0f455f682fa0d1。新增或更新的测试覆盖自动/手动触发、连接/拉取/上传失败步骤、三段状态与耗时、本地保存成功/失败隔离、旧 JSON 兼容、unchanged 成功数,以及业务端 1000 条分批边界。
源码分支:shorten_sync_time;本记录不包含生产凭据或人员数据。