三年前第一次站在朋友的修理厂前台,我看着他一边对着电脑屏幕敲车牌号,一边冲电话里的供应商吼配件报价,手边的开单纸已经涂改到看不清。那一刻我就知道,维修厂最缺的不是修车工具,而是一套能把“录入”变成“扫一扫”、把“翻找”变成“搜一搜”的作业系统。后来我把这件事做成了车维通——一个基于 Flutter × HarmonyOS 6.0 的车辆维修管理系统。这几个月集中打磨的,就是它的快速操作能力。这篇记录不打算逐行贴代码,重点想把“快速操作”这套设计拆开讲清楚:它解决什么问题,用 Flutter 在鸿蒙上落地时踩了哪些坑,以及上线后真实跑出来的效果。
1. 修车行的接待台痛点:快速操作模块的诞生背景
1.1 我看到的维修厂作业现场
朋友那家店不算小,六七个工位,技师加前台一共十来人,平时最忙的时间集中在上午十点到下午三点。外观看上去一切正常,但站在里面待一天就会发现一个很拧巴的事实:修车本身很快,换机油、换刹车片这类标准保养项目,技师四十分钟就能完工。真正慢的,是车进来之后到车进工位之前的那段“信息录入时间”。
前台要先把车牌号和车架号抄下来,再去电脑里翻车型库,查这辆车对应什么排量、什么年款、上次在店里换过什么零件。遇到老客户还好,遇到新客户光一个 VIN 码就有十七位,抄错一位,后面所有工单、配件、报价全跟着错。等工单终于开出来,车主已经在前台来回踱步好几趟了。
这个场景我后来在好几家维修厂都见过。问题不是他们“不用系统”,而是市面上绝大多数车辆维修管理软件都在照搬企业 ERP 的思路:功能复杂度高,导航层级深,录入字段多,适合办公室里的文员慢慢敲,但完全不适合车间门口的嘈杂环境。车维通立项的时候,第一条产品原则就定下来了:所有一线操作人员每天用到的东西,必须能在一分钟内完成点选或扫描,凡是超过两次跳转才能做完的操作,都要被质疑设计是否合理。
1.2 快速操作不是“按钮做大了”,而是把等待消灭掉
很多人一听“快速操作”,第一反应是把界面上的按钮放大、把入口做得更显眼。这其实只做对了十分之一。真正的快速操作,核心是压缩流程中的等待时间,尤其是三种等待:人等人的打字录入、人找人的口头确认、人找数据的翻库检索。
以最典型的接车环节为例。传统流程是:抄车牌 → 录入系统 → 查客户档案 → 查上次维修记录 → 查车型信息 → 手工勾选维修项目 → 人工算价格 → 打单。这一套流程快则八分钟,慢则一刻钟。车维通的快速操作目标是把这一串动作压缩到两分钟以内。压缩手段不是让前台手速更快,而是让系统在第一个动作之后,把后面所有能自动带出的信息全部带出来:
| 环节 | 传统方式耗时 | 快速操作目标 | 主要手段 |
|---|---|---|---|
| 车辆识别 | 2-4分钟,手动录VIN/车牌 | 5秒 | 扫码扫车牌、VIN拍照识别 |
| 客户与档案 | 2分钟,翻历史记录 | 秒级 | 车牌关联客户与历史工单 |
| 开单选项目 | 3-5分钟,逐条添加 | 30秒 | 保养模板+批量勾选 |
| 报价结算 | 2-3分钟,手工算价 | 10秒 | 项目联动价格、一键报价 |
| 配件流转 | 3-5分钟,翻库存表 | 20秒 | 扫码枪直接扫件出库 |
这一版需求聊完,我和合伙人达成了一个共识:快速操作不是给系统做“加速皮肤”,而是重新设计一条最短路径,让一线员工从“用软件”回到“干工作”本身。这个理念贯穿了后面所有模块的开发和迭代。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Flutter 与鸿蒙 6.0 的选型逻辑:不是凑热度,是算出来的账
2.1 三个候选方案的成本对比
车维通刚启动的时候,平台选型在团队里吵过好几轮。业务方的要求很明确:安卓和 iOS 都要覆盖,因为维修厂里既有安卓平板也有苹果手机;管理层还特意加了一条,鸿蒙设备的渗透率越来越高,客户那边已经有人问“你们这个系统能不能装在我的华为平板上”,所以鸿蒙也得在计划内。
当时摆在桌面上的候选方案有三个。第一个是纯原生开发,安卓一套、iOS 一套、鸿蒙一套,三套代码各写各的,体验最扎实,但投入的人力太大,我们一个小团队根本转不起来。第二个是 H5 套壳方案,开发成本确实低,但维修厂车间里网络状况很不稳定,白屏和卡片的问题会直接惹毛用户。第三个就是 Flutter,一套代码覆盖三端,同时性能比 H5 强太多。
最后选 Flutter 还有一个关键的财务原因:维修厂老板采购一套系统,通常只愿付买一个 SaaS 年费的钱,软件方如果堆三套原生团队,人均成本分分钟把毛利吃光。用 Flutter 把交付成本压下去,才有利润空间做后续的持续迭代。
2.2 Flutter 在鸿蒙 6.0 上的可用性判断
很多人一听到 Flutter 适配鸿蒙,第一反应是怀疑:跨平台框架能跑明白国产系统吗?我一开始也有这个顾虑,真正动手调研之后才踏实下来。Flutter 引擎本身是开源的,社区里已经有团队维护 OpenHarmony 分支,HarmonyOS 6.0 这一代的兼容层已经比较完整,Dart 层的 UI 代码基本不需要改,主要工作量集中在系统能力调用上,比如相机、相册、推送、支付这类原生能力,需要走 MethodChannel 和鸿蒙侧原生代码对接。
我们团队当时的验证方法很简单:拉一个 Flutter 工程,在鸿蒙 6.0 设备上跑一遍官方 Demo。实测下来,基础渲染、列表滚动、动画这些核心路径都没什么问题,内存和帧率也符合预期。从那一刻起,技术路线就不再是争论点,问题变成了怎么把工程结构搭好、把原生适配的坑一个个排掉。
2.3 为什么不赌一把统一开发框架的封闭方案
市面上其实也有不少“一次开发多端运行”的商业框架,有些还宣称对鸿蒙的支持特别完善。但我们谈了两轮之后还是放弃了。核心原因有两个:一是这些框架的生态和资料相对封闭,车维通涉及扫码、蓝牙扫码枪、离线缓存、多端同步这类特殊场景,一旦在框架层遇到瓶颈,连排查的方向都找不到;二是维修管理系统要长期演进,团队不可能把自己的技术命脉押在一个成长不确定的框架上。Flutter 背靠的是全球最大的跨平台社区,就算真遇到问题,GitHub 上翻 issue 也能找到路子。事后证明,这个判断是对的,鸿蒙适配过程中我们遇到的绝大多数问题,都能在 Flutter 社区的公开讨论里找到线索。
3. 快速操作功能全景图:六条高频路径各缩短一半
3.1 先画一张高频路径地图
快速操作模块不是凭空设计的,而是先画了一张“维修厂每日作业路径地图”。我们从早上开门到晚上打烊,把店里所有角色走查了一遍,最后归纳出六条最高频的路径:接车、查历史、开单、配件流转、结算、交车。每一张路径都标注了操作者、使用频率、当前痛点和可压缩空间,然后才进入功能设计。
| 高频路径 | 使用者 | 原耗时 | 现在的耗时 | 关键功能 |
|---|---|---|---|---|
| 接车 | 前台 | 8-15分钟 | 1-2分钟 | VIN/车牌扫码、OCR识别 |
| 查历史 | 服务顾问 | 2-3分钟 | 10秒 | 车牌一键带出全量档案 |
| 开单 | 前台/技师 | 5分钟 | 30秒 | 模板套用+批量勾选 |
| 配件流转 | 库管 | 3-5分钟 | 20秒 | 扫码枪扫描出入库 |
| 结算 | 财务 | 3分钟 | 30秒 | 一键汇总、折扣抹零 |
| 交车 | 前台 | 2分钟 | 10秒 | 状态流转、一键通知 |
这张表做出来之后,整个开发计划就变得非常清晰了。快速操作不是一个独立模块,而是渗透在每一个高频操作里的设计原则。后续的研发排期也按照这张表分配资源,优先级一目了然。
3.2 首页快捷面板与全局搜索
车维通的首页没有采用传统 ERP 那种“九宫格菜单 + 大量图标”的布局,而是放了一个自定义快捷面板。面板上默认放五个大按钮:接车开单、我的工单、配件查询、结算收款、客户回访。这五个按钮对应维修厂每天发生频次最高的五类动作,而且支持用户自己长按拖拽排序。老师傅习惯先看病历,就把客户回访拖到第一位;前台天天开单,就把接车开单固定在最顺手的位置。
配合快捷面板的还有一个全局限速搜索框。搜索框支持输入车牌号、手机号、客户姓名、VIN 码、工单号、配件名称的任意片段,系统自动识别输入内容属于哪一类,然后直接跳转到对应结果页。比如修理工输入“6000”,系统能判断出他大概率是在找保养里程接近 6000 公里的在修车辆。这个小功能看起来不起眼,但实际用起来非常上瘾,因为它省掉了“先选模块再找入口”的每一次重复选择。
3.3 对象级“一步到位”:扫码直达业务目标
快速操作的核心是让用户面对一个物理对象时,直接触发完整的业务动作,而不是先打开某个模块再逐个输入。车维通里做了三个“对象级”的直达入口:扫车牌直接进入该车的开单页;扫 VIN 码直接调取完整车辆档案并识别车型;扫配件条码直接进入出入库选择页。拿手机对着对象扫一下,和目标业务之间的所有中间页面全部被跳过。
这三个入口看着简单,背后需要做大量的数据关联工作。比如扫车牌不只是识别一个字符串,而是要立刻关联到客户档案、历史工单、上次保养里程和当前这台车是否有未结费用。只有把这些数据在本地索引好,扫码之后才能做到秒开。这也是车维通和前知识期项目最大的不同:不在数据治理上下功夫,快速操作就只是一堆华丽的按钮。
4. 核心实现拆解:VIN 扫码、批量开单与配件流转
4.1 VIN 扫码与车型自动识别
VIN 码的全称是车辆识别代号,一共 17 位字符,包含了生产厂商、品牌、车型年款、发动机类型等一系列信息。维修厂以前处理 VIN 码的方式是肉眼抄写、逐位核对,又慢又容易错。车维通的做法是在 Flutter 层调用相机做持续扫码识别,每次截取到一帧画面就尝试解析候选结果,解析成功就停下来进入后续查询流程。
实际开发时我建议你重点处理两个细节。第一个是防抖,相机在连续扫同一个码的时候,会在几百毫秒内输出大量相同结果,如果不加节流和结果去重,页面会被刷新到失控。我当时的做法是设一个 2.5 秒的扫描锁,同一个 VIN 码只处理一次,扫描成功后锁开启,用户按返回再进入时重新解锁。第二个是 VIN 码的校验位算法。VIN 的第九位是校验位,可以用加权计算验证码是否合法,能过滤掉相当一部分误识别。这个算法网上有现成的计算表格,直接实现就好,不用自己发明。
识别出 VIN 码之后,系统会先在本地车型库里做一次匹配,如果本地没有,再通过网络请求云端 API。这里要注意顺序:维修厂的网络环境真的说断就断,如果把车型识别完全做成在线请求,扫码这个功能在弱网场景下就废了。我这边的经验是至少要在设备本地缓存最近几个月访问过的车型,共性的热门车型数据最好随应用包一起预置,保证离线时也能完成接车和开单。
4.2 批量开单:模板与多选列表的体验细节
快速开单模块的主要界面是一个维修项目多选列表,维修厂可以把常用的保养项目、常见故障维修方案提前录入成模板。开单员在全新工单页选择车型之后,系统会自动推荐“该车型常做项目”,并支持一键套用模板。以前逐条选择、手动输入价格的步骤被压缩成了“勾选、确认、生成”三步。
这里有一个很容易被低估的 UI 细节:多选列表的 CheckboxListTile 组件。用 Flutter 的 CheckboxListTile 时,很多人会发现复选框和文字之间的距离比较大,尤其是列表里同时有几十个项目时,每一行的复选框离文字远会导致误触。这个问题没有玄学,就是通过修改 title 和 controlAffinity 的配置、手动调整样式间距来优化,具体方案要看 Flutter 版本,有些版本可以直接设置 contentPadding 和 controlAffinity 来让复选框靠左贴近文字。
批量操作另一处关键点是“批量联动”。开单时用户勾选了“更换机油”,系统要自动把机油滤芯、放油螺丝垫片这类耗材加进项目清单;勾选了“更换刹车片”,系统要默认把四轮保养、刹车油液位检查连带提醒出来。这些联动规则不用做成死代码,把规则配置到后台,前台根据规则引擎动态渲染,后期要调整也不用发版。
4.3 配件快速出入库:扫码枪模拟键盘输入
维修厂的库房环境比较特殊,师傅们普遍不愿意拿着手机对准条码慢慢对焦,更习惯用一把无线蓝牙扫码枪。这种扫码枪的本质是一个蓝牙键盘,扫到条码后直接把内容“打”到当前聚焦的输入框里。所以配件模块的输入框要天然支持扫码枪输入,同时还要避免一个问题:扫码枪输入速度极快,普通 TextField 的 onChanged 会被连续触发多次。
我的处理方式是给配件输入框做一层“输入聚合”:先让 TextField 收集字符,累计 100 毫秒没有新字符进来,就认为这一次扫码输入结束,再拿完整的条码去查库存。这样既兼容了扫码枪的快速输入,也兼容了手工键盘逐字输入,不需要区分输入源。另外,扫码枪在连续扫码时,库管可能一秒扫好几次,一定要在查询结果页保持焦点,不要让软键盘弹出来挡住结果列表,我的经验是配件查询页面直接禁用系统软键盘弹出,只接受实体扫码枪和手动搜索栏输入。
4.4 离线优先的本地数据管道
维修厂车间里信号不好是个普遍现象,尤其是地下车库改造出来的门店,手机信号和 WiFi 都弱得离谱。如果车维通走纯在线模式,快速操作在真实场景里就是一句空话。所以整个移动端的数据层采用的是“离线优先”策略:所有写操作先落在本地 SQLite,再异步同步到服务端。
本地库与云端的同步设计是这里最需要严谨对待的部分。我选择的方案是为每一条本地记录生成一个 UUID,并维护更新时间戳,同步时服务端以时间戳和 UUID 进行冲突检测。冲突发生时,不搞复杂的自动合并,而是采用“服务端最新版本 + 本地修改提示”的方式,把现场决策权交还给操作员,避免系统在关键时刻给出一个让用户无法理解的合并结果。这个策略虽然简单,但在实际使用中非常稳妥。
离线优先带来的额外好处是启动速度快。首页和常用业务数据在本地都有副本,冷启动时先读本地,网络数据在后台慢慢刷新,用户的体感永远是“秒开”。
5. HarmonyOS 6.0 适配避坑实录:从环境搭建到支付通道
5.1 环境搭建:PATH 与依赖版本的三次折腾
Flutter 跑鸿蒙的第一道坎不是代码,而是环境。很多第一次在新设备上配 Flutter 的人都会遇到同一个困惑:明明刚安装完 Flutter 并执行了 flutter doctor,重启终端之后却提示找不到命令。这个问题九成是 PATH 没有写进用户的 shell 配置文件,或者配置完之后没有新开一个终端窗口使生效。我建议你把 Flutter 的 PATH 配置写到对应的 shell 配置文件里,配置完务必备份一下,然后新开终端验证。
第二道坎是版本对齐。Flutter 的 SDK 版本、Dart 版本、各插件版本必须严格匹配,否则就会遇到依赖包下载不下来、编译报一堆莫名其妙错误的情况。我踩过的典型坑是:某个依赖库的新版本要求 Dart 3.x,而项目工程还锁在旧版本,pub get 阶段直接卡死。后来我把所有依赖版本全部锁定,只做小版本升级,并把 pubspec.lock 文件加入代码库,彻底杜绝了成员各自升级依赖导致的构建差异。
第三道坎是依赖下载慢的问题。国内拉取 pub.dev 的包经常非常吃力,不要硬等,直接把 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 配置为国内镜像即可。这个属于公开的常见做法,配置好之后下载速度立竿见影。
5.2 构建期报错:CMake 生成器与 Gradle 插件
鸿蒙适配过程中遇到的两个构建期报错,值得单独记一笔。第一个是 Flutter 初始化原生工程时偶发的 CMake 报错,错误信息类似 cmakelists.txt:3 (project): generator visual studio ...。这个问题本质上是 CMake 在生成构建系统时没找到合适的生成器,或者 Visual Studio 组件安装不全导致的。解决思路是先确认系统里装了哪个版本的 Visual Studio,再在构建命令中显式指定生成器参数,或者改用 Ninja 生成器,问题就消失了。
第二个报错是 Flutter 的 Gradle 插件配置方式在新版 Gradle 中发生变化,日志会提示 You are applying Flutter's main Gradle plugin imperatively using the apply script method。这种错误意味着你还在用旧的 apply from 方式加载 Flutter 的 Gradle 脚本,而新版本要求把 Flutter 插件改到 plugins 块声明式引入。处理方法是根据当前 Flutter 版本的迁移文档更新工程里的 settings.gradle 和 build.gradle,把插件依赖从脚本路径改为 maven 坐标。
5.3 系统能力对接:图库选图、微信登录与华为支付
维修厂拍接车照片、拍车辆损伤部位是很常见的操作。Flutter 在鸿蒙上调用系统相册不能直接沿用安卓的图片选择流程,需要走鸿蒙侧的图库能力。我们当时的做法是编写一个 MethodChannel 插件,Dart 层调用原生方法拉起鸿蒙图库,用户选完照片后返回临时文件路径,再由 Dart 层做后续压缩和上传。这个环节最需要留意的是权限声明,鸿蒙的权限模型和安卓不一样,别在 AndroidManifest 里配完权限就觉得万事大吉,鸿蒙侧的 module.json 也要同步申请。
微信登录是车维通的一个重要入口。鸿蒙上接入微信登录,本质上还是通过 openSDK 走应用间跳转,实现思路和安卓类似,但需要在鸿蒙工程里配置对应的包名和签名信息,并且要处理好回调页面的拉起逻辑。我的建议是不要自己裸调底层 SDK,而是把整个微信登录逻辑封装成一个独立的通道插件,Dart 层只负责发起登录和接收结果,其余交给原生层处理,这样后续升级 SDK 时影响面最小。
支付方面,车维通在鸿蒙 6.0 上需要支持拉起华为应用内支付,也就是 IAP。研发过程里我先测试了 Flutter 社区现成的支付插件,发现对鸿蒙的适配还不太完善,果断决定走原生通道:在鸿蒙侧集成 IAP SDK,通过 MethodChannel 暴露支付和回执校验接口给 Flutter 层。这里有一个细节,支付结果回执建议在服务端做二次校验,不要在客户端直接信任支付结果,不然会有被刷单的风险。
5.4 启动页与 License 页的主题适配
有一个经常被忽略的 UI 细节:Flutter 内置的许可证页面 showLicensePage 的主题颜色。默认情况下,这个页面会使用应用主题,但如果你没有显式指定 ThemeData 的相关字段,它显示出来的背景色、文字颜色容易和整体品牌风格不一致。车维通上线前的内部评审就发现了这个问题:从“设置-关于”里点进服务协议与开源许可页面,突然冒出一个与主应用完全不搭的配色,体验非常割裂。解决方式也不复杂,给该页面单独指定一套主题,并显式设置 AppBar 和背景色,保持和全局设计规范一致。
5.5 关于反编译风险的提醒
Flutter 打包出来的 release 包里,Dart 代码是以 AOT 机器码存在,但 assets 目录下的内容以及部分资源文件是可以被提取的。车维通里有配件价格、客户档案这类商业数据,如果不做防护,竞争对手拿到包反编译之后,有可能会分析出业务逻辑甚至提取后端接口。我的建议是:服务端接口要做好鉴权与风控,客户端代码做必要的混淆,不要把所有核心业务规则都压在客户端。这不是怂恿大家搞逆向工程,而是做一个商业项目必须有的安全意识。
6. “快”的表现层细节:列表、冷启动、操作热区与弱网兜底
6.1 冷启动与首帧优化
快速操作这个产品,如果每次打开要等三秒以上,再快的流程都会被打回原形。车维通在冷启动优化上做了三件事:启动时只加载启动页和首页骨架,不进主页不加载业务数据;本地数据库在后台异步打开,首页渲染不阻塞;首页快捷面板数据直接读本地缓存,网络刷新延迟进行。
做完这几步,冷启动在鸿蒙 6.0 真机上稳定在 1.2 秒左右,用户几乎感知不到等待。相比之下,同一个包在其他两端的耗时也接近这个水平,可以接受。
6.2 列表流畅度与图片缓存
维修工单列表和配件列表都可能是长列表,尤其是配件库存,一个中大型维修厂可能有两三千条记录。Flutter 的 ListView 本身具备懒加载能力,但要注意每一项里尽量不要放过于复杂的布局嵌套,图片组件一定走缓存。车维通的照片流全部使用 CachedNetworkImage 方案,同时在服务端返回缩略图地址,列表页只加载缩略图,点击大图再加载原图。这样滚动时不会因为大量位图解码而掉帧。
6.3 为手套和强光设计的操作热区
很多产品设计规范是给办公室白领准备的,但维修厂前台戴手套操作平板是标配。车维通的所有主按钮高度都控制在 48 以上,实际热区做到了 56;按钮之间的间距也刻意加大,避免戴手套时连续误触。这个设计后来在回访中收到了大量好评,老师傅的原话是“以前用别的系统老是点错,车维通这个碰得挺准”。
屏幕亮度适配同样重要。车间里室外强光直射时,快色背景加浅色字体的界面完全没法看。车维通在浅色模式之外专门做了一套高对比度深色模式,用户在快捷面板上就能一键切换。深色模式下白字黑底,在强光和暗光车间里都能看清。
6.4 弱网与断网下的即时反馈
任何一个快速操作,如果点击之后系统没有反应,用户就会以为系统卡死了。车维通在弱网环境下的设计原则是:所有操作先给出本地响应,再进入异步同步。举个例子,结算时点击“确认收款”,系统先把一笔收款记录下来更新本地状态,再异步与云端同步。用户看到的是点击之后立即进入成功页,完全无感知等待。
如果同步失败,系统会保留一条待同步任务,同时用一个不太显眼的角标提示操作员。这个设计很好地平衡了“快”和“数据可靠”,既没有让用户卡在加载框里烦躁,也没有静默丢数据。
6.5 自定义快捷入口与手势操作
除了首页快捷面板可以拖拽排序之外,车维通还加了几个提升操作速度的小道具。工单列表页支持长按工单卡片直接弹出“拨打车主电话”“查看工单详情”“复制车牌号”三个快捷菜单,减少页面跳转次数。配件查询页支持左右滑动切换库存视图和出入库历史视图,单手操作时非常顺手。
这些微交互单个看起来都不大,但叠加在一起就是“快”的手感。快速操作的核心逻辑本来就是:减少每一步的思考成本、跳转成本和等待成本,做得越细,用户越觉得系统“懂他”。
7. 实际落地后的数据反馈与持续演进
7.1 内测店的真实数据
系统在朋友那家店跑了两个月,同时拉了另外两家维修厂做内测。第三个月我们统计了一组数据:接车环节从前台输入到工单生成,平均耗时从 11 分钟降到了不到 2 分钟;开单错误率因为 VIN 自动识别和模板套用,下降了大概三分之一;配件出入库因为扫码枪直接录入,库存盘点偏差率明显改善。最直观的感受是,前台到了高峰期不再手忙脚乱,车主也不用在前台干等着着急。
这些数字其实不意外,因为快速操作并没有让维修厂增加人手,只是把原来浪费在“找”“填”“改”上的时间还给了员工。
7.2 用户习惯倒逼的交互修正
上线之后最打脸的是一次关于“语音备注”的迭代。我原本认为维修厂老师傅文化程度不一,打字费劲,语音备注会更友好,结果内测时发现车间噪音太大,语音识别率低得离谱,老师傅们试了几次就再也不用了。后来我们换成了“一键拍两张照片 + 照片上画红圈”的方式记录车辆问题,师傅们反而非常接受,因为拍照不用组织语言,画圈直接表达了问题位置。这个教训告诉我,做垂直行业功能,千万不要坐在办公室里代入用户需求,一定要去现场看他们怎么干活。
7.3 下一步演进方向
车维通的快速操作模块目前还在持续打磨。优先级最高的是两个方向:一是把华为鸿蒙 6.0 的新特性进一步用好,比如服务卡片和原子化服务,让用户不用打开 App,在桌面小组件上就能看到今日预约和待交车辆;二是把维修数据做更深度的挖掘,例如根据一辆车的历次维修记录,预判它下一次可能需要做的保养项目,把“客户主动到店”变成“系统提前提醒”。
后续还会持续打磨离线同步的细节,以及多端登录时工位状态实时同步的问题。快速操作这条路还有很多可以走的地方,核心原则永远不会变:让一线干活的人少等一秒,就是这套系统最大的价值。
