房产销售走进地下室、未完工的公寓楼、电梯间——信号消失的瞬间,大多数App直接崩溃。对一线销售而言,这不是技术故障,是到手的佣金飞了。

埃及最大房产平台Aqarmap的AM Live CRM面临更极端的场景:外勤销售每月管理超10万条客户线索,大量工作发生在信号死角——新开发楼盘、地下停车场、偏远地块。简单的"缓存上次响应"远远不够。他们需要零网络环境下完整可用:创建客户、推进销售阶段、记录通话,网络恢复后自动干净同步。

打开网易新闻 查看精彩图片

核心架构转变:本地数据库是唯一数据源。UI从不直接连接网络,只与SQLite交互。网络仅是后台进程,负责最终让本地数据与服务器保持一致。

数据流向:UI/BLoC → 仓库层 → 本地数据库(SqLite) ↔ 同步引擎 ↔ API。所有读取来自本地,所有写入先存本地再排队同步。用户从不等待请求,从不因信号问题看到加载转圈。

第一支柱:本地写入,意图入队。销售编辑客户信息时,单事务完成两件事:更新本地行,记录同步意图。行数据与队列条目同一事务写入,确保UI显示的变更必定会被同步,杜绝"改了白改"状态。

第二支柱:网络恢复时排空队列。单一监听器监听连接状态,在线时触发同步。同步按顺序处理,单实体依次推进,服务器确认后才从队列移除。冲突处理、重试机制、版本控制在此环节解决,确保最终一致性。