最近一直在迭代二手手机智能质检工具的相关业务,从开始研发到现在已经经历了一年有余的时间,我们自研的「验机侠」在最近的几次对比测试过程中,通过人工实物复核结果,准确率已经超越竞品「某思」。那到底是怎样可以快速赶超竞品呢,今天就和大家一起聊聊!
介绍
买了手机用1年打算再换新,会不会有这样的疑问:“我的手机现在是什么成色?这个成色还值多少钱?”。
二手手机交易市场,“妖魔鬼怪”横行,如果不踩坑,想卖个好价钱,首先要经过的就是手机质检。但是大家可否了解,一台小小的手机,通过人工检测,大大小小60余项,从开始到结束大概20分钟。这里还要拉齐质检标准,考验质检师的个人行业经验,才能产出质检最终的报告结果。
为了提升验机效率,且保证验机的准确性和质检标准,最好的方法就是用工具解放人力。来看个直观的例子,整个验机过程中基础项和拆修项相关信息就「60余项」,如果全部人工检测需要接近「20分钟」。
可是我们如上图通过一根数据线,一端连接手机,另一端连接电脑,「几秒钟」就可以直接得到每台手机的专属质检报告,并将报告应用在业务售卖的场景中。部分质检结果一目了然,其余的外观项等只需质检师看看仔细观察即可。验机报告如下图:
既然是智能质检,那就少不了我们自研的智能检测工具「验机侠」,目前支持Windows版、Mac版和Android版。我们也已经和富士康深度合作,质检报告也获得了「富士康官方的权威认证」。试用阶段还可以解锁专业验机报告,官修机、妖机、丢失机、扩容机等十几种设备状态以及主板、基带、硬盘底层信息被修改过的设备统统原形毕露!
技术全景
1. 解题思路
基于上面的诉求,我们如何解题呢?我认为核心要解决以下几个问题:
为了解决这些问题,当时也是实际下业务去体验、去感受。我先后去了长沙站、站、西安站等,也和当地站点的质检师去沟通,给了我很多的输入,期间也沉淀了很多文档。基于这些做出的技术设计、抽象出的技术方案,我认为才是真正贴近业务、更好的赋能业务的技术方案。接下来,让我们一起看看到底有哪些技术干货。
2. 解决方案
整个验机过程可以拆解成几个步骤:
1.先要通过客户端攻克读取苹果底层信息的协议;
2.通过攻克的协议,把访问的信息拼装成自定义的数据格式,并通过一定加密策略去混淆;
3.通过数据接口传给服务器,用约定好的解密算法去解析数据;
4.根据服务端配置的验机策略,将解析后的数据进行映射和分析,得到本机的质检报告;
5.服务端将最终的报告数据响应给客户端,客户端进行序列号处理,并展示给用户展示验机报告。
这样做的好处,显而易见。可以这么理解,用三把无形的安全锁,保证了验机过程的安全性,具体如下:
第一关,攻克的底层协议的代码会编译到动态库内,不会放在客户端的应用层,很难通过反编译去了解我们读取苹果底层协议的方式;
第二关,即使原始数据传给服务时被黑客截获了,因为加密策略的缘故,也无法分析出数据的具体含义;
第三关,即使黑客突破前两道关得到了可读数据,由于验机的策略和映射在服务端处理,不了解判断逻辑,一样得不到我们的验机报告。
这样,我们可以保证报告的准确性和数据的安全性。总结一下,客户端和服务器有自己的分工,客户端主要负责「原始数据的采集、数据加密、被检测手机的通信机制等」,服务器主要负责「数据的解密、校验逻辑的处理、爬虫、数据存储等」。
综上所述,我们得到了「云+端」的整体设计理念,也是我们的核心。由于是前端公众号,会涉及部分云端的设计,但本篇着重介绍端的体系化建设方案。
2.1 完备的设计理念
目前支持Android平台、Windows平台和macOS平台,整体使用方式,上面介绍过,让我们来直入正题。服务器和客户端有各自的职责,简略的基础能力如下图:
原力引擎作为验机的底层动态库,负责不同机型的数据读取和操作被检测手机的能力支持(后面章节会详细介绍)。为了做到「一套代码开发,多个平台运行」的理念,原力引擎采用GoLang进行开发,针对不同平台做了交叉编译,提供了支持Windows平台的dll库、支持Mac平台的dylib库和Android平台的so库。通过不同平台的对原力动态库的封装,我们也提供了不同平台接入的SDK。这样不管是转转内的什么业务方、什么使用场景,我们只需提供不同的SDK即可。由于SDK方案Windows版、Mac版和Android版大同小异,只存在平台兼容的差异,所以下面只以Android版SDK进行展示。
如上图,我们主要分为三个层级,应用层、逻辑层和通讯层。
「应用层」。主要负责给接入的端提供能力,主要分两种:API能力和Event上报能力。用户可以根据需求,利用API自主调用验机能力、读取机况信息,也可通过事件的监听机制,在一些节点进行事件捕获,处理各种App交互(例如,手机信任成功等)。
「逻辑层」。是整个SDK的处理层,主要负责各种验机能力的实现。包括对于原始数据的处理逻辑、格式化等等。特意提一点,目前Android版支持无线验机,所以比Windows版和Mac版多了WiFi模块,用户可以通过手机热点的连接即可完成验机动作。
「通讯层」。这个偏向底层一些,主要是建立通道,这层做的很薄,再次不做赘述。
Android版是原生开发方式实现SDK,Windows版和Mac版目前基于Electron实现。两者封装后,连接动态库的方式也稍有不同,Android利用JNI和底层库通信,而Windows和Mac是通过node-ffi来处理连接问题,感兴趣的小伙伴可以评论区留言大家一起讨论。
2.2 工作机制
2.2.1 原力引擎
说到工作机制,那第一个要说的就是原力引擎(后续简称「原力」),它是整个方案的核心。做过相关开发的朋友应该会了解,正常与苹果手机通信是要有MFi认证的。苹果 MFi 认证,是苹果公司(Apple Inc.)对其授权配件厂商生产的外置配件的一种标识使用许可,是 Apple 公司 “Made for iOS” 的英文缩写。不过如果接入这种认证成本太高,但是事上无难事,我们也发现了一些黑科技「USBMuxd」,利用这种连接方式不需要做 MFi 认证,支持 iPhone 上的 App 跟外设通过进行通信,非常方便。原力就是利用USBMuxd服务,该服务能够实现USB-TCP协议的转换,能够把USB的端口映射到本机的TCP端。只需要在工作机端也实现一个USBMuxd服务,并制定端口映射关系,那苹果手机和工作的应用就可以使用Socket进行TCP进行通信了。大致如下图,
之前我们也提到了,我们原力是一份代码,跑多个平台。所以我们利用交叉编译,将原力编译成Android使用的so库、Windows使用的dll库和Mac使用的dylib库。然后不同的平台我们做了平台特有的适配,比如Android端我们内置libusbmuxd、libusb等等,启动这些底层库,作为和苹果手机连接的通道。由此,我们就可以通过特定的key去获取苹果手机机况的原始数据了。
2.2.2 外接设备
既然是搞验机工具,有过质检业务经验的朋友应该知道,屏幕是拆修里售后赔付最高的一项。为了让屏幕检测的更准确,我们也引入了外接的检测设备,去采集屏幕的点阵排列,根据采集到的点阵和服务器的样张对比,来判断屏幕是否被更换过(不同厂商屏幕点阵排列不同,换过屏的手机屏幕点阵会和原厂屏幕点阵存在差别)。基于此,再结合原力的屏幕信息读取,用两者采集的数据做交叉校验,来做到屏幕检测最准确。
如上图,左边是我们外接的设备--电子屏幕检测仪,看图就知道比小熊手办大一点,很小巧并可以随身携带,这样也能解决**回收等移动验机的需求。右图是利用我们自研的方案去进行屏幕点阵的采集,右图右边的手机是工作机,下方展示这正在检测的苹果手机点阵。
这里我们攻克了硬件设备,用到了一个Camera的驱动,通过OTG的方式,连接工作机的App,使他进行正常运转。
2.2.3 持续升级
上面介绍的主要都是验机侠核心的几个技术点和方案设计。除此之外,我们也做了相关的基础建设。有了好的适用性和扩展性作为基础,再附加上核心能力,这样的方案才算完善。
(1)热更新能力 既然提供给各个业务方使用,首先我们想到的就是日常SDK版本更新给业务带来的痛苦。目前各种验机数据的读取都是由原力来完成的,更新最多的也是这块能力,那么我们考虑到不管是哪个平台的动态链接库(so或dll),相对于操作系统来说都是一个文件,且不需要二次编译。所以我们会把动态链接库直接以文件的形式做成热更新,这样在每次原力逻辑修改的时候,SDK是不用通知业务方更新的,这样也减少了发版的风险。
(2)机型库配置 & 验机策略 由于每年苹果公司都会出新机器并更新系统,例如今年的iPhone14系列和iOS16的操作系统。为了避免发版,我们已经将机型库和验机策略的逻辑放到了服务端。这样不管新机器怎么迭代,又或者系统如何更新,都可以做到真正的持续升级,不给业务方带来更新成本。
未来规划
时至今日,验机侠已经迭代一年了,本文开头也提到我们在准确率上超过了某思,我认为算是今年整个团队的一个成果吧。但是这并不是终止,2023年智能验机会更加贯彻「云+端」的思路,作为验机侠的负责人,我认为要建立好智能验机云和端的技术体系。简单可以这么理解:
「端是入口」,类似触手触及各个业务方。主要进行端的读取数据、收集上报数据等。
「云是核心」,类似大脑。主要进行验机策略运转,沉淀数据成为数据资产、数据分析等。
基于这个理念,我们今年要把验机能力SaaS化。通过配置即可进行集团内各业务渠道接入,未来也许会对外开放,真正做到技术为以质检为核心的供应链赋能。要落地的事:
为行业赋能,为产业升级
1. 行业大背景
作为二手手机的的交易平台,主要就是要解决行业和产业的问题。行业的问题主要是整体的电商解决方案,用技术为业务的控货能力赋能。而产业的问题,重在用技术为以质检为核心的供应链去赋能。那智能质检也主要去帮助解决产业的相关问题。可以这么说,智能质检正在帮助平台进行数字化、标准化的转型,从“浅水区”走向“深水区”。
紧迫性。
每个企业都在做降本增效的优化,人力成本无疑是公司发展最痛苦的问题之一。通过工具去解决人效的问题,也是降低人力成本最直接、最有效的方法。试想一下,通过工具将手机检测的时间从20分钟左右一台,降低到2分钟左右一台,相当于一个质检师每天的人效提升到原来的10倍,即在质检站点人员不变的情况下,站点对手机检测的吞吐量提升10倍。这样才算真正加大了行业的产能。
必要性。
在降本增效的前提下,不紧要验的快,更要验的准。质检师对手机在系统上的手动勾选错误和本身的检测失误问题一直存在,通过工具的使用和简单的SOP操作可以自动生成准确的质检报告。与此同时,也解决了质检标准拉齐难、培训难的问题,开新站检测手机的品控问题等。
战略性。
采货侠作为转转集团旗下二手手机B2B的公司,将“成为全国最大的二手手机「智能集散中心」”作为我们自己的愿景。那么想要体现智能二字、想要成为一家新兴的科技公司,总要有自己的一套体系流程和数字化建设。那么智能质检也会是我们为二手手机产业升级迈出的第一步。这是采货侠的一小步,却是产业升级的一大步。举个例子,比如某滴是打车行业的产业升级,某壳是租房售房行业的产业升级等等。
可行性。
当智能质检工具大量被应用到各个业务场景,一份份的质检报告将会沉淀为我们宝贵的数据资产,这无疑为我们二手手机行业的深耕打好坚实的基础。未来,通过大数据的积累和算法的沉淀,解决消费者对于机价、机况不透明的痛点,极大的降低了交易成本。不仅提升了品牌信任度,还能够完善品牌的业务架构,进一步提升品牌力。
2. 应用场景
重点还是为业务赋能,主要分成三类:商户端、市场端、站点端。
「商户端」,主要是各个区域的合伙人,他们为了有更好的品牌效应,会选择来加盟转转。那拉齐标准就尤为的重要,就像全国的KFC味道都能保持高度一致,解决的就是品控的问题。
「市场端」,类似于以前比较火的迪信通,通过一些大屏的检测工具,就可以快速出报告和报价,未来还有可能成为业界的公平秤。那么解决的就是拉齐行业标准、扩大品牌影响力的问题。
「站点端」,这个就比较好理解了,就是公司自己的质检站点。面对每天大量的质检任务和质检师的人力成本,最好的办法就是用工具解决效率和准确率的问题。
结语
很感谢大家能读到这里,本篇文章也接近尾声了,回顾整体方案还有好多的地方需要优化。未来期望,还是希望转转大前端可以打造出更完美的智能验机方案,并提供给第三方使用。