多人协作

本章节为长篇大论,没有耐心看的朋友可以直接看结论。

导论

问题

笔者在编写本软件之前曾实现过一版 web 版本并实际投入 CP29 的使用, 但是首次出摊的经验不足,和对场馆内网络状态的错误评估,使得系统并未发挥本来应有的作用。

但是,这还并非是最棘手的问题。那最棘手的问题究竟是什么呢?没错,就是排队的速度上不去。

当时处理订单的过程是这样的:前台由两人进行点单 + 配货,后台两人协助配货,但是笔者摊位的周边种类非常多,达到了 39 种,而且事先的印调并没能预见到第一天的极端情况。 由于周边没有事先做足分类准备,导致配货速度慢,同时无论计算器计算价格,还是通过系统点单,都需要配完货才可以继续下一单,中间还会有需要再考虑一下要买什么的朋友,就更加混乱了。 最终结果就是整个第一天从早上 10 点到下午 5 点,队伍没断过,团队成员连轴转了 7 个小时,饭都没空吃,尽管如此,排队的速度还是慢的不行。

反思

展会结束后经过复盘,其实物品分类事先印调的问题都是比较容易优化的,唯独点完单配完货,才可以继续接下一单这个问题,在没有电脑程序帮助的情况下,不依靠一套精心设计的流程是很难解决的, 这也是笔者最为关注的问题核心。

那么有没有可能可以有这么一套程序,可以将点单配货流程拆开,并分别独立运行呢?笔者发觉这正是可以通过编程较为低成本、高效解决的痛点,便开始着手将网站重构为移动端 App。

那么核心问题就变成了如何让本来单一线程的购买流程变为点单、配货/取货的双线程并行运行,并且需要能够 完全离线 运行。

探索

首先想到的是需要一个中央服务器,负责接收点单数据,然后下发保存后的订单,这个其实靠远程数据库是完全没有什么问题的,但是考虑到场馆的网络情况, 就只能携带笔记本电脑作为服务器,这无疑很难普及:

  1. 电脑需要电力运行,这就可能需要多备充电宝。
  2. 笔记本电脑本身就不轻,还需要占掉桌面的空间。
  3. 最重要的一点,大部分摊主并没有能力完成服务器的部署。

作为一个程序员,自然是希望自己的程序被越多人用越好,那么这种大部分人都难以接受的方案必然需要优化。

那么如何才能在离线的状态下让两台或以上的手机内的数据互通以同步订单内容和订单状态呢?

  • 局域网方案,这是一开始笔者倾向的方案,但是这个方案看似没什么问题,实则还是有一些门槛,首先根据观察,cp 当天场馆内手机开热点的情况非常普遍,互相干扰导致距离热点稍远个几米, 网络质量就会大幅下降,而是无论 4g 还是 5g 移动网络,在本身信号差的情况下,开热点以后局域网之间设备的互通会非常差。笔者此次展会携带的是 5G 随身 Wifi,这个拿来当热点,设备间的互通 基本没有问题,但是它太贵了,最便宜的设备也要 600 元。

  • 蓝牙通信,大部分蓝牙用的信道是和 Wifi 有重叠的,周围热点很多的情况下,势必还是会受到影响有可能变得卡慢,由于最终情况到底如何只有到展会现场才有环境测试, 所以这个潜藏不稳定的方案最终也被笔者否决了。

正当笔者苦思冥想脑壳疼的时候,笔者的一个程序员朋友提了一嘴,是不是可以用二维码。笔者愣了一下以后当场茅塞顿开。

结论

当场拍脑门子决定用二维码之后,笔者模拟了一套应该好像看似可以流畅运行的方案。

二人情况下:

  • 一人负责点单,订单保存后同时生成快照,顾客需要拍摄单据二维码,此时点单人员可以引导顾客,告知有两种选择,一是可以先去其他摊位买东西,之后回来凭二维码取货, 二是在旁边的另一个队伍等待立即取货

  • 另一人为分拣员,选择过一会再取货的顾客的配货可以延后,优先处理立即取货的顾客。队伍快结束或周边完卖时,再进行延后取货的客人的配货。

三人或以上团队:

  • 一人负责点单,订单保存好后,顾客需要拍摄二维码。

  • 一人负责交付,顾客出示二维码给交付人员(此时顾客同上,可以选择立即取货或者先去溜一圈其他摊位),交付人员扫码后生成快照,并将快照再次同步给分拣员,分拣员配好货后贴上单据 id 的便签,交付人员 负责将对应单据 id 的便签交给持有对应二维码的客户。

  • 分拣员从交付那里同步到二维码后,根据快照内容配货,配货完成后将快照改为已分拣状态,并同步快照状态给交付,交付将对应的货物交给客户后, 把快照状态修改为已完成。

可以看到,点单和取货的流程已经在离线的情况下最大程度地分离开了,除了立即取货队伍需要进行必要的排队等待以外,点单的队伍进展将会非常快速。 这样整个售卖过程有望提前很多时间结束,staff 成员也会有时间去别的摊位逛逛,和别的摊主交换,不必一整天都没法离开自己的摊位甚至连饭都没时间吃了。

最重要的是,游客点完单可以立即去别的摊位,再也不会因为排队慢两三个队伍排一整天了,买到想要的东西的几率就会更大一些。

最终摊主和游客都会受益。

尾巴

当然,这只是比较理想的情况,笔者的方案也并非真的完美,毕竟没有经历过真实场景的测试,到头来也只是纸上谈兵罢了。

所以,就需要仰赖使用豆津账本的诸位多多反馈和出谋划策了,快照的使用方法也并非一定要遵循笔者的这一套方案,各位摊主可以发挥想象,自行开发总结 出适合自己的一套流程。

接下来我们就来看看如何用二维码进行数据的通信吧。