论后台产品经理如何优雅地设计导入功能

8 评论 13930 浏览 106 收藏 10 分钟

编辑导读:导入功能是后台产品必不可少的功能,也是使用频率最高的功能之一。作为一个后台产品经理,应该如何设计导入功能呢?本文作者从自身工作经验出发,对此进行分析,希望对你有帮助。

对于后台产品,导入是系统里必不可少的功能之一。如何设计好一个导入功能,了解以下几点就够啦(如果你觉得不够,请在评论补充)。

一、如何定义导入模板

首先导入模板一般是由产品给出,需要率先确定导入模板的名称、格式、大小。下面以表格为例:

名称:模板名称与模板内容相匹配就行了

格式:常见表格格式为xls、xlsx、csv

其中csv为纯文本格式,上传更快,当上传文件需要支持大数量时可以用csv格式,如下所示:

说明:可在导入之前的页面或在导入模板中加入导入说明,导入说明一般是对导入规则的解释,主要目的是告诉用户如何正确导入,避免导入失败。

需要注意的一点是,最好支持删除说明行不影响导入,匹配表头就能导入,以上图为例就是说把前6行删掉也不会影响导入,只能读取到表头项;再进一步表头项缺失也没事,只要必填表头能匹配到就行。这样做的好处是,用户如果自己整理好了一个excel,他不用把数据贴到模板里,只用将excel表头改成与模板一样就行了,更加方便。

需要注意的另一点是,确定好支持导入的文件格式后,可以限制打开文件夹的格式为支持的格式,方便用户更快的找到需要导入的文件。现在还有很多是全部文件格式,找个表单找半天。

另另外一点注意模板里不要带序号,直接用excel的行号就可以了,提示错误信息时可以直接用行号告知具体位置。

二、导入后执行时间

一般来说都是导入后立即执行,但是也可能存在定时执行,比如导入产品价格时,可能提前导入再在之后某个时间价格才生效。如果是定时生效,需要加上生效时间,并考虑未生效期间内的其他导入是否会造成影响。

三、导入覆盖还是不覆盖

覆盖:指最新一次导入的内容会现将已有内容清空再导入,相当于覆盖了。

不覆盖:指最新一次导入内容已经存在在系统中时,数量类型的数据相加减,非数量类型的数据以最新一条为准;系统中有但是最新导入内容里没有的那部分数据也不会被清空掉。

像导入库存数据,最新导入的一次是覆盖之前的记录还是在之前记录基础上加减?当然这个要结合业务场景来看,比如我们用户经常同时使用多个软件,他们一般先从其他系统中导出库存,再导入进我们系统,那这种情况肯定是要覆盖前次记录了,因为他们每次导入的都是当前的实际库存,而不是变动的库存。但是像下单时快捷导入产品,考虑到我们的下单场景是用户可能有多个产品清单需要一起下单,多次导入的时候就适合不覆盖,相同产品数量累加。

四、分步骤导入或直接导入

导入方式一般分为分步骤导入与直接导入(导出也同理)。

分步骤导入优点是可以导入很大的数据量,并且更加安全不易造成数据丢失。先将文件上传,上传完成后后端并不会对数据库进行修改,等导入时再修改数据库。我向开发问了下具体实现方法,一种是先把数据放在临时表里,这样可以判断数据格式是否正确,另一种是先上传到云端。

直接导入优点是更快捷,适用于数据量较小的情况。

如下所示为分步骤导入:

五、导入文件中的重复数据如何处理?

这条其实很容易和上面覆盖、不覆盖弄混,前面说的是当前导入批次和原先导入批次之间的事,这里说的是同一导入批次里行与行的情况,可以分为以下几种情况:

  • 重复数据以最后一条为准
  • 重复明细的数量相加
  • 重复数据导入失败

具体使用场景大家可以想想,在评论里留言~~~

六、如何确定导入条数

支持导入的最大条数可以结合业务场景与系统能力确定,比如导入客户,如果是SaaS产品,那一般用于用户首次使用系统时,需要将客户数据从之前使用的其他系统迁移过来。那我们可以先拉取当前系统上用户的客户数量并从大到小排序,再拿这个最大值与开发确认系统能否支持。如果不能支持,能否通过后端分批处理、或调整导入文件格式为csv、或前端分步骤操作等方法来曲线报国。

如果实在不行,就只能调整以满足尽可能多的用户。我们目标就是能让大多数用户可以一次性导入成功,而不是弹出导入文件过大,请分多次导入的提示条······

七、针对导入失败的处理

可以分为以下几种情况:

  • 有一条导入失败,整个导不进去
  • 有一条导入失败,只有这一条导不进去,其他都导入成功

如果导入内容相互独立,那么可以选择2;如果导入内容有某种关联,比如顺序不能变,那就得选1。

无论1或2,在导入失败时都要做好提示,产品经理需要提前列好导入失败的原因给到开发。导入失败原因可以正着说,如请输入必填项客户名称;也可以反着说,如客户名称不能为空。我建议正着说,因为告知用户正确的做法,而不是指出用户的错误会让用户更爽一些。不过更重要的是要统一,不能一下正着说,一下又反着说。

可以将导入失败的数据单独列在弹窗里展示,也可以将导入失败的部分生成一个excel,并将失败原因附在excel里。

如果是弹窗展示失败原因,又可以分为直接在页面上修改或者只展示不能修改,无论是哪种都要注意数据很多时对页面性能的影响。

八、导入统一性

系统内如果有多处导入,注意导入页面、导入模板样式统一。对于一些通用的导入失败原因,文描也最好一致或依循同样的规则,比如必填项为空、单元格式错误、文件过大、表头不匹配等等。

九、导入记录

由于导入是批量修改数据的操作,出于安全考虑,一般会有对应的导入记录页面,方便出问题追踪。

十、导入完成后的操作

如果导入成功后,还有其他操作,可以在导入后进行引导,达到操作的流畅性。

十一、小结

以上为本人工作经验总结,希望有帮助到正在设计导入功能的产品同伴。有想法一定要在评论里说出来哦,有输出才有成长!

 

本文由 @是喻雪 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash, 基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 很实用,赞

    来自山东 回复
  2. 很实用,赞一个

    来自四川 回复
  3. 很用心

    来自中国 回复
  4. 4.导入时最好显示进度条

    来自广东 回复
  5. 1.导入时可以选择部分信息重复时是否导入
    2.导出时前端可以增加“当前无数据可导出”的提示,减少导出下载后打开模板是空数据,有一些动态列的导出也可以有效避免无数据时的“尴尬”
    3.导入模板建议增加样式编辑锁,这样用户只可以输入数据,不可以修改样式或表头顺序,减少因为用户修改模板后引起的导入失败

    来自广东 回复
  6. 文章很实用,赞!👍

    来自江苏 回复
  7. 对每一条导入数据独立编号。
    编号的重复算重复数据。
    编号递增。
    能解决重复数据等很多问题。
    就是编号维护麻烦些。

    来自广东 回复
    1. 编号听着像唯一标识,就像导入产品时,唯一标识SKU重复了,就可以判断两条重复了

      来自上海 回复