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 曾联网激活成功并保存激活码。

六、需要验证的场景