古茗前端到底搞什么飞机

在前几期文章的评论中,我发现不少人有类似"古茗前端到底搞什么飞机"的疑问:

其实在入职古茗前我也有这种观点,不就是做做下单小程序,做做简单的内部管理系统吗,甚至在面试过程中我也问了面试官这个问题,在听完面试官的解答之后,我也同样地忍不住发出了"居然要做这么牛逼的事情,这还是一个奶茶公司吗"的感慨!

于是我毫不犹豫地选择加入了古茗(有免费奶茶喝!畅饮的那种!)。

到现在已经入职快一年了,是时候跟大家讲讲"古茗前端到底搞什么飞机"了。

做一杯奶茶,总共分几步?

其实古茗的业务真的很多,很多,很多!具体有哪些我不方便透露,只能说光是我们前端团队就服务了4个业务域,18条业务线。那我们是怎么服务这些业务域和业务线的呢?我就拿我所在的"机料"举例吧。

那什么是机料呢?在这里我先卖个关子,相信看完下面的介绍,你就会知道是什么意思了,以后去古茗点奶茶就可以跟别人吹牛了(狗头)

首先问大家一个问题:做一杯奶茶,总共分几步?

就和把大象塞进冰箱一样,第一步:倒上茶,第二步:加上料,第三步:吨吨吨!

是不是很简单?步骤看着是简单,但是衍生出来的问题还是很多的

第一步涉及到的问题:

  1. 泡茶汤时,不同的茶,分别用多少度的水泡?泡多长时间?泡多少量?
  2. 怎么保证全国门店的店员按要求执行了泡茶方法?
  3. 怎么灵活控制不同地区的茶保持相同/不同口感?
  4. ...

再来看看第二步涉及到的问题:

  1. 有些物料是冷冻运输的,什么时候拆封解冻?解冻多久?保质期多久?
  2. 有些物料是原材料,什么时候要制备成半成本?保质期多久?
  3. 怎么保证加料时物料是在最佳赏味期内的?
  4. 怎么保证全国门店的店员遵守食品安全规范?
  5. 怎么提前告知门店高峰期的预估物料种类以及用量?
  6. ...

最后第三步里的问题:

  1. 怎么保证门店能尽可能还原研发室里研发出来的口味?
  2. 怎么保证更快地出杯?
  3. ...

虽然看着很麻烦很多,但是我们稍微捋一下还是能捋明白的:

  • 对于"怎么保证"这类问题,其实是一种功能性问题,我们需要让我们的功能代码在门店运行
  • 对于"多少"、"多久"、"什么时候"这些问题,可以归类为配置性问题,可以通过后台配置并进行下发

那基于这两大类问题,"机料"业务就浮出水面了。

机-机器设备

机,就是机器设备(下文统一叫设备),奶茶店里有各种各样的设备,这些机器都是用来辅助店员去标准化地制作奶茶的,设备更多地在解决一些"功能性"的问题,有了这些功能,我们就可以更好地保证一系列流程的规范性。

解决了什么问题

比如上面提到的问题:泡茶汤时,不同的茶,分别用多少度的水泡?泡多长时间?泡多少量?这些问题都是直接影响茶汤的口感的,茶汤是一杯奶茶的基底,要是口感不佳,那么整杯奶茶就毁了。

虽然古茗有很严格的培训体系,每一个店员都需要来总部进行培训学习和考试,但是哪怕是老虎也有打盹的时候,我们不能完全寄希望于店员时时刻刻严格遵守不同类别的茶的制作流程,人不是机器,对不同茶汤的温度、水量、时长等等因素进行人为控制,这些都是难度极大的。

既然人不是机器,那就直接造!于是乎我们的设备部做了泡茶机、制冷设备等等设备。

有泡茶机前,我们的店员需要记下每一款茶的调制过程,然后人工去泡,这就导致同一个人,同一家店,不同时间,泡出来的茶口感会不一样。

有了泡茶机以后,店员只需要把茶包包装上的茶包码往泡茶机上扫一下,泡茶机就可以检索对应的茶汤配方自动按照标准流程、按照标准参数进行泡茶,这样就解决了人为带来的茶汤口感不稳定的问题。

并且无形中还解决了另一个问题,就是"灵活控制不同地区的茶保持相同/不同口感",因为刚才有提到,泡茶机会根据对应的茶汤配方进行泡茶流程,那么我们就可以根据不同地区下发不同的配方,来保证泡出预期口感的茶汤。

怎么实现

那这一套我们是怎么做的呢?前端在其中扮演了什么角色呢?考虑到保密的原因,我这里就简单画几个图,详细的技术细节就不透露了。

设备侧的产品经理需求评审之后:

  1. 嵌入式开发:与"网关"开发(一般是前端开发)共同制定数据通信协议,并按这份协议进行嵌入式开发,通过这份协议可以实现硬件设备与"网关"上USB或者蓝牙的数据传输方式
  2. 后端开发:与前端制定接口格式,通过接口可以将设备的数据上传至后端,用做设备信息展示、设备异常告警等用处
  3. 前端开发:根据数据通信协议进行"网关"功能的开发,通过协议解析设备的数据,并按照接口格式上传至后端,在后台大盘上显示数据,或者在"网关"上显示相关设备的异常告警

可以看到前端不光要开发后台的功能,还需要开发"网关"的功能,这对传统前端开发来说是一种新的挑战,因为不光要写前端代码,还要掌握硬件的通信协议,了解客户端的相关开发技能,目前的"网关"其实是运行在搭载了Android系统平板的APP中,协议的实现都需要在这个APP中完成。

用这种"伪网关"的方式存在一个很明显的弊端,就是我们的门店存在多个种类的设备,光是制冷设备就分为平冷、冷冻、冷藏三种类型,每种类型分别会有1-2台设备下店,加上一些研发中的设备,这样一来网关平板的蓝牙连接数量很容易达到上限,就会造成有部分设备无法连接蓝牙的问题,为了解决这个问题,我们出了一个临时方案,一个长久方案。

临时方案就是保证核心设备是保持连接的,但是给一些相对来说不是那么重要的设备做定时断开、轮流连接的处理,这样能一定程度上解决这个问题。

长久方案就是开发一个真正意义上的"边缘网关",边缘网关能接入更多的设备,且能更聚焦于设备的通信、信息的处理分析等功能。

边缘网关是一种用于连接边缘设备和云平台之间的网络设备。 其主要作用是在边缘设备和云平台之间构建一个灵活、高效和安全的网络,将数据从边缘设备收集并处理后,再传输到云平台上进行存储和分析。 在这个过程中,边缘网关需要具备多种功能,包括数据的采集、处理、分析、存储和传输等。

小结

我经常感叹,我们组不是单纯的前端开发工程师了,因为组里的成员一直在和设备、各种协议打交道,桌上也放着各种各样的电路板,年前甚至把一台要下店的净水器直接放在工位边联调,也写过"220V,勿碰"的牌子放在工位上。

之前和TL聊物料网的应用场景,我们都认为这就是物联网一个很好的落地场景,并且我们的目标远不止于此,业务上还有很多的问题要依赖于设备去解决,很多降本增效的事情也要依赖于设备去实现,我相信在不久的将来,古茗的设备一定会给门店带来更多的收益,古茗的IoT方案会成为茶饮界IoT方案中值得参考的那个。

料-物料

说完"机",再来看看"料",就是制作一杯奶茶所需要用到的物料。

餐饮行业最重视的一个问题就是食品安全问题,这首先关系到每个消费者的身体健康,其次涉及门店的经营情况,最后会影响品牌在公众心里的印象,所以食安是每一个餐饮企业的底线。

古茗为了保证食安,搞了自己的种植基地,搭建了自己的供应链系统、智能报货系统,研发室的研发员们针对每一款物料制定了"有效期"...

除了种植基地,其他业务都和我们组有关系,这里我就介绍一下物料"有效期"这件事。

解决了什么问题

在开头的经典三步的第二步,都是物料相关的内容,首先我先科普一下物料有效期相关的几个概念:解冻时间、备料时间、最佳赏味期。

解冻时间:冷冻品需要解冻的时长,比如家里的冻肉,做菜时得先拿出来解冻一下;

备料时间:解冻完成后就需要对原料进行备料加工了,还是拿冻肉举例,冻肉解冻完了就得切成肉片开始炒了;

最佳赏味期:顾名思义,就是在这个期间内食用是最好的,好比你妈妈把肉炒完了,喊你吃饭,结果你一直在玩游戏就错过了最佳赏味期了。

为什么是定这三个时间,而不是其他的四个时间,五个时间呢?

其实也是根据奶茶的制作方式来定的,因为门店要做一杯奶茶是需要用到半成品物料的,半成品物料又需要由原料制备得到,而那些冷冻原料又需要解冻(解冻其实也是制备的一个环节,只不过解冻需要的时间会很长,且不是每个物料都需要解冻,比如茶就不需要解冻),所以结合实际情况,就定了这三个时间。

按我个人理解的话,其实就是为了保证任何一家门店、任何一个店员做出来的奶茶,都是符合食安的、最新鲜的、口感最好的。

怎么实现

那这三个时间需要怎么在门店里直观地展现给店员呢?

聪明的你可能想到了,对,就是利用设备!这台设备的名字就叫"效期机",我再画个图给大家看看效期机是怎么在门店发挥作用的。

假设店员发现XX冷冻原浆快不够用了,那他就会从冷冻柜中取出XX冷冻原浆,然后去效期机的物料列表上去找XX冷冻原浆这个物料,找到后在使用效期机的打印功能进行打印,这时打印机就会打印XX冷冻原浆的效期贴(记载了物料相关信息的一个小贴纸),店员撕下小贴纸后贴到XX冷冻原浆的容器上,最后放到解冻区进行解冻。

店员做完上面这些步骤之后就可以做自己的事了,等到了解冻时间、备料时间、超过最佳赏味期前2分钟这些节点,效期机就会进行语音播报,提醒店员XX冷冻原浆需要进行XX操作了。

那效期机是怎么知道物料的这三个时间并在对应时间给出语音提醒的呢?

其实这个链路的流程蛮简单的,效期机种记录了每个物料的三种时间,在店员打印效期贴的那一刻,这个物料的生命周期就开始了,物料的生命周期每个阶段的时长是按照物料配置平台配置的时间决定的,同时效期机内部维护了三个有序队列,分别是解冻提醒队列,备料提醒队列,最佳赏味期超期提醒队列,物料的生命周期就在这三个队列之间流转,驱动生命周期的是一个10s一次的轮询,每次轮询都会去判断三个队列的头数据是否达到触发条件,即是否到了提醒时间。

比如XX冷冻原浆的配置是解冻时间30分钟,备料时间10分钟,最佳赏味期60分钟,店员打印效期贴的时间是12:00,那么这个物料的生命周期就是这么流转的:

这里有个小细节:我们会在最佳赏味期前2分钟就进行提醒,这个的目的就是为了更进一步保证食安以及最后奶茶的口感。

小结

其实对于物料的管理,上文提到的内容只是冰山一角,我们已经做的、正在做的、未来计划要做的事还多的很。

在食安问题上,针对私自篡改效期时间的门店,会进行高额的罚款,每天也会定期进行后厨的打扫,在培训时也会针对食安部分进行严格的培训和考试;

在物料提醒的优化上,我们发现目前的提醒交互还是会存在店员理解不到位的情况,这里也在不断地进行优化和迭代;

在保证更快的出杯速度上,我们现在正在做的一件事是基于门店的实际出杯情况去生成预测物料用量,并通过效期机下发给到门店,辅助门店更好准确地进行物料的提前制备,以及提升出杯速度。

感悟

最后聊聊入职古茗后的感悟吧,在这不到一年的时间感觉成长了很多。

首先是技术吧,前面也提到了,我所在的组要和设备打交道,加上我本来是个安卓开发,现在加入古茗前端部门后,也在针对性学习前端的内容、跨端的技术,其实学习一门语言并不是难题,难的是要培养前端的编程思维,这和客户端思维还是有差别的。

其次是业务,古茗应该是我离业务最近的公司了,我给门店打过上百通电话,线下跑过十来家门店,跟产品经理去实地调研......这些经历让我更了解了店员需要什么,我们需要提供什么样的功能给他们。

然后是工程师能力,这是在古茗前端部门经常被提起的一个概念,我们给工程师的定位是能解决一类复杂问题的人,在此基础上我们就应该具备更完善的能力,不仅仅局限于写某一种或几种代码,为了搭建运维平台,我特地去学习了产品知识,按照一个完整的流程进行了原型图的评审,需求文档的评审,并参与到平台的开发中。不仅是我,古茗的前端都在朝着"工程师"而在努力着。

最后的最后,就是人长胖了,古茗真的是无限畅饮,我可真喝不动了......

相关推荐
木子七6 分钟前
vue3-setup中使用响应式
前端·vue
廖子默16 分钟前
提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路
前端·pdf·html
Moment18 分钟前
毕业半年,终于拥有了两个近 500 star 的开源项目了 🤭🤭🤭
前端·后端·开源
光影少年1 小时前
react和vue图片懒加载及实现原理
前端·vue.js·react.js
AndyGoWei1 小时前
react react-router-dom history 实现原理,看这篇就够了
前端·javascript·react.js
小仓桑1 小时前
深入理解 JavaScript 中的 AbortController
前端·javascript
摸鱼也很难1 小时前
解决 node.js 执行 npm下载 报无法执行脚本的错
前端·npm·node.js
换个名字不能让人发现我在摸鱼1 小时前
裁剪保存的图片黑边问题
前端·javascript
PeterJXL1 小时前
pnpm:包管理的新星,平替 npm 和 yarn
前端·npm·node.js·pnpm