您第二家门店的网络每个星期六下午都会断线,偏偏是排队人最多的时候。仓库里,Wi-Fi 总是覆盖不到最里面的货架。到工地或现场,可能干脆没有信号。如果您打算定制一套业务系统,一个很实在的问题是:网络断了,工作怎么办?
本指南写给在门店、仓库或现场遇到网络不稳的中小企业老板和经理。它帮助您在开发人员动手之前想清楚:哪些任务必须在没有网络时继续运作,哪些可以等;“可离线使用”到底能指什么、不能指什么;以及怎样把这些需求写进需求说明,让报价把它包括在内。这是关于决策的一般性指引,不涉及代码,也不代表任何供应商的做法。
先看任务,而不是技术
“离线”不是一个单一功能,而是针对每项任务的决定。系统停十分钟,对月度报表可能无所谓,对收银却可能是灾难。所以先列出员工在柜台、仓库和现场实际做的事,再把每项任务归入三类:
- 必须继续运作。一停就当场损失生意或客人:接订单或收银、查价格、在收货口收货、打卡上班。
- 只读就够。员工需要查看,但不需要修改,例如客户上一次的订单,或者可能晚了几分钟的库存数量。
- 可以等。晚点再做也没有损失:批准请假、生成报表、修改产品资料、调整价目表。
对第一类要严格,因为成本主要花在这里(见下文)。一个有用的检验是:如果这项任务在最忙那天下午 4 点停一个小时,我们会怎么办?如果答案是“改用手工,问题不大”,它多半属于第二或第三类。
同时记下断线的频率和时长,并去问在现场工作的人:办公室的网络可能一切正常,而店面和仓库却从来感受不到。
“可离线使用”能指什么,不能指什么
供应商说系统“可以离线使用”,意思可能差别很大。请问清楚是哪一种:
| 层级 | 没有网络时用户能做什么 | 需要什么 | 典型适用 |
|---|---|---|---|
| 仅限在线 | 什么也做不了,只看到错误或等待画面 | 无额外要求 | 可以等的后台工作 |
| 只读缓存视图 | 查看上次加载的商品、客户、价格或今天的工作清单 | 上次联网时把数据保存在设备上 | 查价格、联系人、工作详情 |
| 录入队列 | 记录新订单、备注或打卡时间;先保存在设备上,网络恢复后再发送 | 规定哪些内容可以录入,并有清晰的“等待发送”状态 | 订单、打卡、送货确认 |
| 完整离线运作 | 大部分功能(包括修改已有记录)都用设备上的副本运行,之后再核对同步 | 冲突规则、设备存储、细致的测试 | 长时间没有信号的团队 |
有两个限制,用大白话说明。第一,“先记录,后同步”意味着别人在同步之前看不到您的记录:总部看不到那笔离线销售,另一家门店也不知道库存已经卖掉。第二,凡是依赖外部机构的事情,例如银行的刷卡授权、发给客户的信息,或提交给政府或会计服务的资料,没有网络就无法完成,无论您自己的系统多好。请向您的支付服务商了解,网络故障时它的刷卡机会怎样。
是否需要手机应用是另一个问题。网络应用可以保留部分内容供查看,但“能显示页面”不等于“能安全地记录订单”。选择方面请参阅网络应用还是手机应用和什么时候需要手机应用。

两个人改同一条记录:冲突与重复
离线使用会带来在线系统很少遇到的问题:两个人可能在彼此看不到对方修改的情况下,改动同一样东西。设备重新联网后,系统必须决定保留哪一个。
举一个虚构的例子:系统显示某商品库存 10 件。门店 A 离线,卖出 3 件;门店 B 也离线,卖出 4 件。如果每台设备各自回传自己的总数,一个报告 7,一个报告 6,谁最后到达谁说了算,于是系统显示 6,而实际是 3。如果各自回传的是变动量(减 3、减 4),系统最终就是 3。结果取决于事先选定的规则。
处理冲突有四种常见方式:
- 后写者为准。最后到达的修改覆盖先前的。简单,适合备注、电话号码这类低风险字段,但用于数量、价格和状态有风险,因为某个人的工作会在没有任何提示的情况下消失。
- 交给人决定。系统标出冲突,由指定的人选择保留哪个版本。对重要记录最安全,但必须有人可以处理,画面也要清楚显示差异在哪里。
- 按规则合并。系统按事先约定的规则合并两处修改,例如累加库存变动而不是覆盖总数,或两条备注都保留。每条规则都要设计和测试。
- 离线时禁止修改。有些修改在没有网络时不允许,例如改价格或客户的信用额度,从根本上避免冲突。
重复是另一个常见麻烦。如果添加客户时设备离线,另一台设备可能添加同一个客户。如果订单编号由主系统产生,没有网络的设备不知道下一个号码,需要先用临时编号,同步后再替换。请针对每种记录,决定怎样发现重复,以及由谁来合并。
这些是业务决定,不是技术问题。开发人员可以实现这四种方式中的任何一种,但只有您知道丢失第二条记录只是麻烦,还是真正的损失。请把每种记录的选择写进需求说明。
按任务逐项决定的表格
可以把这张表当作自己清单的起点。对许多任务来说,最简单的解决办法根本不是软件。
| 任务 | 停了会怎样 | 离线需求 | 可以考虑的最简单办法 |
|---|---|---|---|
| 在柜台接订单或收银 | 客人排队或离开 | 必须继续运作 | 录入队列,或备用网络 |
| 查价格或商品 | 员工靠猜或打电话问人 | 只读就够 | 只读缓存视图 |
| 查库存 | 可能超卖,或要派人去看 | 只读,并显示“截至”时间 | 显示最后更新时间的缓存视图 |
| 上下班打卡 | 记录要凭记忆补 | 必须继续运作 | 录入队列,或带补录规则的纸质登记表 |
| 仓库收货 | 送货等待,或事后才记录 | 必须继续运作,或用纸质 | 带编号的纸质收货单,当天录入 |
| 现场送货凭证 | 司机无法确认 | 必须继续运作 | 把签名或照片保存在设备上的队列 |
| 批准请假或报销 | 审批延迟 | 可以等 | 无需处理,等网络恢复 |
| 修改价格、产品或用户 | 可能出现互相冲突的修改 | 可以等;离线时禁止 | 联网之前禁止修改 |
如果打卡必须可用,请参阅员工考勤、请假与报销;如果您经营多家门店,可参阅多门店管理,了解分店之间如何共享库存和销售。
成本与复杂度的取舍
离线使用不是一个可以随手打开的开关。“必须继续运作”那一类里的每项任务,都意味着额外的设计(没有网络时画面显示什么)、额外的规则(冲突、重复、哪些被禁止)、额外的测试(每种状态、每次重新联网)和之后额外的支持(同步失败时员工怎么办)。需要离线运作的部分越多,能修改同一条记录的人越多,这四项您付出的就越多。
可以把它想成一把梯子:备用网络或纸质后备对软件要求很少;只读缓存视图是适度的增加;录入队列更大;跨多种记录的完整离线运作最大。如果只有两项任务需要,就不要对所有事情都要求最高一档。
这里不给出离线功能的价格,因为它取决于任务、设备和规则。Gotka 公布的起价只是参考:网络应用和仪表板从 RM8,000 起,业务系统和集成从 RM12,000 起,手机应用从 RM15,000 起,均为参考起价,以书面报价为准。离线需求和其他功能一样,在这份报价内评估,所以请要求把它单独列出。关于影响应用价格的其他因素,请参阅手机应用的费用。
应对网络不稳的更便宜办法
在为离线功能付费之前,先看看有没有更便宜的办法能解决真正的问题。它们也可以组合使用。
| 方案 | 做法 | 适用情况 | 要留意 |
|---|---|---|---|
| 备用网络 | 来自不同服务商的第二条线路,或由手机热点、移动数据路由器接手 | 门店或办公室偶尔短暂断线 | 热点通常要手动开启,除非设置了自动切换;有流量限制;停电时路由器同样会断 |
| 纸质后备表格加补录规则 | 预先印好的编号表格;网络恢复后再录入系统 | 短时间故障,以及收货、打卡这类量不大的任务 | 要打两遍字,字迹可能难辨;需要期限(例如当天)和指定的负责人 |
| 只读缓存视图 | 上次加载的数据仍显示在设备上 | 查询价格、库存数量、联系人 | 可能已过时,所以要显示最后更新时间 |
| 简单的录入队列 | 新记录先存在设备上,稍后发送 | 少数简单的记录:订单、签到、送货确认 | 不适合修改已有记录;需要看得见的“等待”和“失败”状态 |
也要检查电力:路由器没电同样等于断网,所以给路由器和收银机配一个小型备用电池,可能比任何软件功能都管用。
把需求写进需求说明:离线需求模板
“必须能离线使用”这样含糊的一句话,您和供应商会有不同的理解。请用类似下面的简短部分取代它。示例均为虚构。
| 项目 | 要写什么 | 示例(虚构) |
|---|---|---|
| 必须离线运作的任务 | 按优先级排列的清单 | 接订单;打卡 |
| 可以只读的任务 | 可以查看但不能修改的内容 | 价目表;带最后更新时间的库存数量 |
| 可以等或被禁止的任务 | 网络恢复之前停止的内容 | 改价格;批准请假;报表 |
| 离线多久 | 要按多长的断线时间来规划,多久发生一次 | 最长四小时,每月几次 |
| 设备数量 | 每个地点多少台;共用还是个人使用 | 每家门店两台收银机和三部手机 |
| 冲突规则 | 每种记录一条规则 | 库存:累加变动量。客户资料:询问经理 |
| 由谁解决冲突 | 指定的岗位,而不是“系统” | 门店经理;库存由总部处理 |
| 离线时用户看到什么 | 画面上的文字和指示 | “离线”横幅、等待发送的记录数、失败记录清单 |
| 重新联网时会怎样 | 自动还是手动;某条记录失败怎么办 | 自动发送;失败的交给经理 |
| 如何测试 | 上面每一项对应的验收测试 | 下文的拔网线测试 |
存在设备上的数据可能随设备离开办公场所,所以要决定谁可以使用离线功能,以及手机丢了怎么办。访问权限如何设置,请参阅用户角色与权限。更完整的需求说明,请参阅第一次与开发人员沟通前要准备什么。
确认报价已包含这部分
如果离线需求没有写下来,就不能假定它已包含在内。收到报价后,逐份对照您的离线部分:
- 哪些任务?报价是否列出了这些任务,还是只写了“离线模式”?
- 哪条冲突规则?每种记录是否有一条规则,冲突由谁解决?
- 首次加载。设备通常要在联网时加载数据。换新设备、重新安装或长时间断线之后会怎样?
- 测试。拔网线测试是否包含在验收里?
- 日后的改动。您没有列出、而离线时失灵的任务,可能被当作变更请求而不是缺陷,所以要把界线写成书面。请参阅上线后的缺陷与变更。
也要问清楚离线工作如何影响工期和首先加载的数据,参阅定制业务系统要多长时间和把数据迁入新系统。要公平地比较报价,请把同一份离线部分交给每家供应商;如何比较定制软件报价介绍了方法。
在验收时测试:拔网线测试
要知道离线使用是否有效,唯一的办法就是把网络拿掉。把这一项加进用户验收测试,并在真实设备、真实地点进行,而不是在开发人员的桌子上。
- 联网时加载系统,确认数据已在设备上。
- 拔掉网线、关闭 Wi-Fi 或开启飞行模式,并记下时间。
- 像员工平时那样做每一项“必须运作”的任务,记录画面显示了什么、是否成功。
- 检查只读任务是否显示数据及其时间,被禁止的任务是否给出清楚的提示而不是崩溃。
- 两台设备在离线时修改同一条记录以制造冲突,再检查结果是否符合规则。
- 仍在离线时关闭应用并重启设备,记录必须还在。
- 重新联网,观察发送了什么。把离线时输入的记录数与到达的数量对照:没有丢失、没有重复,任何失败都要让人看到。
- 用信号弱或时断时续的网络再测一次,这种情况可能比完全没网更糟。
每次测试都做记录(任务、设备、看到什么、通过与否),修复后重新测一遍。团队如何切换到新系统(全部同时,还是先一家门店)是与此分开的另一项决定。
网络中断时员工的习惯
就算系统把离线处理得很好,员工慌乱或自己临时发挥,照样出问题。请事先约定好流程,并印成一页纸放在柜台,做法与让团队用起新的业务系统中的速查表相同。
- 认得出迹象,知道界限。离线时画面显示什么,“等待发送”是什么意思,什么继续做(订单),什么要等(改价格)。
- 不要重复输入。如果画面没有确认,先查看等待清单再决定要不要重输,否则就制造了您想避免的重复。
- 正确使用纸质表格。有编号、填写完整、由指定的人当天录入,并标记已录入,以免打两遍。
- 知道通知谁。一个人,通常是系统带头人,以及一个不依赖系统的电话号码。
- 打烊时检查。关店前有人查看等待和失败的清单。
趁没有任何事依赖它的时候,把后备流程演练一次。
开发人员动手之前的清单
- 每项任务都已归类:必须继续运作、只读或可以等。
- 最长离线时间、发生频率和设备数量已写下来。
- 每种记录都有一条冲突规则和一位指定的负责人。
- 离线时用户看到什么,已用文字描述。
- 离线事项在报价中单独列出,首次加载和设备丢失的问题已有答案。
- 验收计划里有拔网线测试。
- 给员工的一页纸,以及带补录规则的纸质后备流程。
常见错误
- 要求“全部都能离线”。这是最贵、最慢的选择,而且很少需要。
- 把冲突丢给开发人员。哪个版本为准,是您的决定。
- 只在办公室的网络上测试。问题出在店面和仓库深处。
- 没有员工流程。没有的话,人们会重复输入订单,造成重复记录。
- 忽略电力。停电看起来可能像网络故障。
Gotka Technologies 的角色
Gotka 的应用与系统开发服务开发手机应用、网络应用和业务系统,网络应用和仪表板的参考起价为 RM8,000,业务系统和集成为 RM12,000,手机应用为 RM15,000,均在评估您的需求后以书面报价为准。本指南是一般性建议,并不说明任何离线或同步方式,所以如果离线使用对您很重要,请要求任何供应商(包括 Gotka)在书面报价中写明哪些任务在没有网络时可用、冲突的规则,以及将如何测试。您可以通过联系页面联络团队。
本指南中的关键术语
- 离线:在没有互联网或主系统连接的情况下工作。
- 同步:把设备上记录的内容发送到主系统,并接收主系统那边的变化。
- 录入队列:先保存在设备上,网络恢复后按顺序发送的新记录。
- 缓存视图:设备上次联网时保存的数据,只读副本。
- 冲突:两个人在看不到对方修改之前,改了同一条记录。
- 补录规则:网络恢复后录入纸质记录的约定方式和期限。
网络断了,我的业务系统还能用吗?
只有在设计时考虑了离线才行,很多系统一断网就停了。请逐项任务决定:哪些工作必须在没有网络时继续,例如接订单或打卡,哪些只读就够,哪些可以等。然后要求供应商以书面写明哪些功能可离线使用、可持续多久,以及将如何测试。
“可离线使用”到底是什么意思?
意思可能差别很大:可以是上次加载数据的只读副本,可以是把新记录先存在设备上、稍后再发送的队列,也可以是大部分功能用本地副本运行、之后再核对同步。越往后越贵,所以要问清楚指的是哪一种,适用于哪些任务。
两个人离线时修改同一条记录会怎样?
设备重新联网时,系统必须决定保留哪一个修改。常见做法有:后写者为准、由指定的人选择、按规则合并(例如累加库存变动量),或离线时禁止修改。这是业务决定,请为每种记录选定一条规则,并写进需求说明。
离线使用一定要做手机应用吗?
不一定。网络应用可以保留部分内容供查看,但离线时安全地记录订单更难,可能会指向手机应用。先弄清楚哪些任务必须离线运作、需要多久,再比较网络应用和手机应用。有时备用网络或纸质表格就能消除这个需求。
除了开发离线模式,还有哪些更便宜的办法?
常见有四种:备用网络(例如第二条线路或手机热点)、带补录规则的纸质后备表格、只读缓存视图,以及为少数任务设置的简单录入队列。也要检查电力,因为路由器没电同样等于断网。小门店可以把这些办法组合使用。
需求说明里应该怎样写离线使用?
列出必须离线运作的任务、可以只读的任务,以及可以等或被禁止的任务。再写明离线多久、设备数量、每种记录的冲突规则、由谁解决冲突、离线时画面显示什么、重新联网时会怎样,以及将如何测试。
验收系统之前,怎样测试离线使用?
在真实设备、真实地点做拔网线测试:加载系统、断开网络、执行每项必须运作的任务、在两台设备上制造冲突、重启一台设备,然后重新联网并核对记录数,确认没有丢失或重复。再用信号弱的网络重复一次,并写进您的验收计划。


