CusumptionMachine 启动同步合并方案

记录日期:2026-06-29;目标分支:fix_offline;适用范围:启动期人员同步、人脸库同步、离线缓存启动。

一、改造目标

启动期不再先同步人员、再额外请求一次人脸数据接口。以 syncUserInfoList(code, type) 作为唯一网络同步入口,把原人脸同步中缺失的删除、全量校准、FaceApi 更新能力补充到人员同步批处理里。

改造后启动链路收敛为:

syncUserList()
  -> syncUserInfoList(code, type)
  -> BatchCustomerSyncManager 保存业务人员表并维护 FaceApi
  -> 人脸 SDK/人脸 DB 初始化
  -> FaceSDKManager.initPush()
  -> FIRST_INIT_FINISH_TAG = true
  -> goMain()

二、全量和增量判定

继续沿用现有标记 FIRST_INIT_FINISH_TAG

三、人员同步补齐规则

1. 业务人员表

2. FaceApi 人脸库

四、人脸 SDK 初始化与内存刷新

人脸 SDK 激活、模型初始化、Face DB 初始化仍由启动页负责。人员同步批处理只维护本地业务表和 FaceApi 数据,不在模型未准备好时强行刷新内存库。

启动页在 Face DB 初始化成功后执行 FaceSDKManager.getInstance().initPush(),把本地 FaceApi 数据加载到 SDK 内存库,然后进入主页。

五、离线模式兼容

人员接口失败后继续使用 OfflineStartupPolicy.canOfflineStart() 作为放行条件。允许离线启动时,用户确认后不再请求任何网络同步接口。

人员接口失败
  -> canOfflineStart = true
  -> 用户确认使用本地缓存
  -> 如启用人脸:跳过在线激活,初始化本地模型和 Face DB
  -> initPush()
  -> goMain()
离线启动要求设备此前已完成首次初始化、已配对、本地有人员数据,且如果启用人脸,则人脸 SDK 曾联网激活成功并保存激活码。

六、需要验证的场景