论后台产品经理如何优雅地设计导入功能
编辑导读:导入功能是后台产品必不可少的功能,也是使用频率最高的功能之一。作为一个后台产品经理,应该如何设计导入功能呢?本文作者从自身工作经验出发,对此进行分析,希望对你有帮助。
对于后台产品,导入是系统里必不可少的功能之一。如何设计好一个导入功能,了解以下几点就够啦(如果你觉得不够,请在评论补充)。
一、如何定义导入模板
首先导入模板一般是由产品给出,需要率先确定导入模板的名称、格式、大小。下面以表格为例:
名称:模板名称与模板内容相匹配就行了
格式:常见表格格式为xls、xlsx、csv
其中csv为纯文本格式,上传更快,当上传文件需要支持大数量时可以用csv格式,如下所示:
说明:可在导入之前的页面或在导入模板中加入导入说明,导入说明一般是对导入规则的解释,主要目的是告诉用户如何正确导入,避免导入失败。
需要注意的一点是,最好支持删除说明行不影响导入,匹配表头就能导入,以上图为例就是说把前6行删掉也不会影响导入,只能读取到表头项;再进一步表头项缺失也没事,只要必填表头能匹配到就行。这样做的好处是,用户如果自己整理好了一个excel,他不用把数据贴到模板里,只用将excel表头改成与模板一样就行了,更加方便。
需要注意的另一点是,确定好支持导入的文件格式后,可以限制打开文件夹的格式为支持的格式,方便用户更快的找到需要导入的文件。现在还有很多是全部文件格式,找个表单找半天。
另另外一点注意模板里不要带序号,直接用excel的行号就可以了,提示错误信息时可以直接用行号告知具体位置。
二、导入后执行时间
一般来说都是导入后立即执行,但是也可能存在定时执行,比如导入产品价格时,可能提前导入再在之后某个时间价格才生效。如果是定时生效,需要加上生效时间,并考虑未生效期间内的其他导入是否会造成影响。
三、导入覆盖还是不覆盖
覆盖:指最新一次导入的内容会现将已有内容清空再导入,相当于覆盖了。
不覆盖:指最新一次导入内容已经存在在系统中时,数量类型的数据相加减,非数量类型的数据以最新一条为准;系统中有但是最新导入内容里没有的那部分数据也不会被清空掉。
像导入库存数据,最新导入的一次是覆盖之前的记录还是在之前记录基础上加减?当然这个要结合业务场景来看,比如我们用户经常同时使用多个软件,他们一般先从其他系统中导出库存,再导入进我们系统,那这种情况肯定是要覆盖前次记录了,因为他们每次导入的都是当前的实际库存,而不是变动的库存。但是像下单时快捷导入产品,考虑到我们的下单场景是用户可能有多个产品清单需要一起下单,多次导入的时候就适合不覆盖,相同产品数量累加。
四、分步骤导入或直接导入
导入方式一般分为分步骤导入与直接导入(导出也同理)。
分步骤导入优点是可以导入很大的数据量,并且更加安全不易造成数据丢失。先将文件上传,上传完成后后端并不会对数据库进行修改,等导入时再修改数据库。我向开发问了下具体实现方法,一种是先把数据放在临时表里,这样可以判断数据格式是否正确,另一种是先上传到云端。
直接导入优点是更快捷,适用于数据量较小的情况。
如下所示为分步骤导入:
五、导入文件中的重复数据如何处理?
这条其实很容易和上面覆盖、不覆盖弄混,前面说的是当前导入批次和原先导入批次之间的事,这里说的是同一导入批次里行与行的情况,可以分为以下几种情况:
- 重复数据以最后一条为准
- 重复明细的数量相加
- 重复数据导入失败
具体使用场景大家可以想想,在评论里留言~~~
六、如何确定导入条数
支持导入的最大条数可以结合业务场景与系统能力确定,比如导入客户,如果是SaaS产品,那一般用于用户首次使用系统时,需要将客户数据从之前使用的其他系统迁移过来。那我们可以先拉取当前系统上用户的客户数量并从大到小排序,再拿这个最大值与开发确认系统能否支持。如果不能支持,能否通过后端分批处理、或调整导入文件格式为csv、或前端分步骤操作等方法来曲线报国。
如果实在不行,就只能调整以满足尽可能多的用户。我们目标就是能让大多数用户可以一次性导入成功,而不是弹出导入文件过大,请分多次导入的提示条······
七、针对导入失败的处理
可以分为以下几种情况:
- 有一条导入失败,整个导不进去
- 有一条导入失败,只有这一条导不进去,其他都导入成功
如果导入内容相互独立,那么可以选择2;如果导入内容有某种关联,比如顺序不能变,那就得选1。
无论1或2,在导入失败时都要做好提示,产品经理需要提前列好导入失败的原因给到开发。导入失败原因可以正着说,如请输入必填项客户名称;也可以反着说,如客户名称不能为空。我建议正着说,因为告知用户正确的做法,而不是指出用户的错误会让用户更爽一些。不过更重要的是要统一,不能一下正着说,一下又反着说。
可以将导入失败的数据单独列在弹窗里展示,也可以将导入失败的部分生成一个excel,并将失败原因附在excel里。
如果是弹窗展示失败原因,又可以分为直接在页面上修改或者只展示不能修改,无论是哪种都要注意数据很多时对页面性能的影响。
八、导入统一性
系统内如果有多处导入,注意导入页面、导入模板样式统一。对于一些通用的导入失败原因,文描也最好一致或依循同样的规则,比如必填项为空、单元格式错误、文件过大、表头不匹配等等。
九、导入记录
由于导入是批量修改数据的操作,出于安全考虑,一般会有对应的导入记录页面,方便出问题追踪。
十、导入完成后的操作
如果导入成功后,还有其他操作,可以在导入后进行引导,达到操作的流畅性。
十一、小结
以上为本人工作经验总结,希望有帮助到正在设计导入功能的产品同伴。有想法一定要在评论里说出来哦,有输出才有成长!
本文由 @是喻雪 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash, 基于CC0协议
很实用,赞
很实用,赞一个
很用心
4.导入时最好显示进度条
1.导入时可以选择部分信息重复时是否导入
2.导出时前端可以增加“当前无数据可导出”的提示,减少导出下载后打开模板是空数据,有一些动态列的导出也可以有效避免无数据时的“尴尬”
3.导入模板建议增加样式编辑锁,这样用户只可以输入数据,不可以修改样式或表头顺序,减少因为用户修改模板后引起的导入失败
文章很实用,赞!👍
对每一条导入数据独立编号。
编号的重复算重复数据。
编号递增。
能解决重复数据等很多问题。
就是编号维护麻烦些。
编号听着像唯一标识,就像导入产品时,唯一标识SKU重复了,就可以判断两条重复了