导入导出设计(导入篇)
前言
导入、导出作为一个B端常见功能点,看似简单,考虑不全面很容易踩坑,之前做ER有做过批量导入新增产品功能,后续又优化SaaS的下载功能;现整理设计要点,作为一个可复用的文件,以便后续设计需要。
业务分析
- 开始设计之前需结合实际业务场景,分析适合公司业务的导入模式,一般有3种导入模式:
- 仅新增:导入系统没有的数据,即新增
- 仅更新:导入更新已有数据,即将导入数据和已有历史数据比较,相同的数据,则更新
- 新增和更新:导入更新已有数据,同时支持新增数据
- 分析导入过程中可能存在的问题:
导入前:
- 同步导入还是异步导入?
- 是否考虑浏览器兼容性?
- 支持导入文件的格式?
- 支持导入文件的大小限制,文件体积大小,单次导入数据量大小 ?
- 导入采用哪种导入模式,仅新增、仅更新、还是新增和更新?
- 导入是部分成功还是全部成功?
导入中:
- 导入字段校验:字段名称、字符长度、格式、必填字段
- 导入文件表头是否支持编辑、新增?
- 导入文件中存在重复数据,怎么处理?
- 导入数据部分成功,部分失败,怎么处理?
导入后:
- 导入成功的数据如何展示?
- 导入失败结果怎么返回给用户?
- 超时、程序错误或异常等报错处理
流程设计
功能设计
1. 基础信息定义
导入文件命名
导入文件命名中建议包含导入文件基础信息,方便使用者快速区分,例如:单个SKU、组合SKU等;
对于可能存在多人操作导入的情况,也可以在文件中增加操作人账号昵称、下载模板的时间等信息进行区分
- 模板/导入文件命名:组合SKU模板_时分秒.xlsx,例如:组合SKU模板_20230327132422 .xlsx
- 下载失败文件命名:组合SKU模板_失败原因_时分秒.xlsx,例如:组合SKU模板_失败原因_20230327132422 .xlsx
导入文件格式
导入文件一般有两种格式居多:1).xlsx / .xls格式;2).csv格式
在网上找了对应的区别,参考文件:https://blog.csdn.net/weixin_39198406/article/details/78705016,以下摘取几个影响决策的参考点
.xlsx / .xls | .csv | 决策点 |
---|---|---|
支持包含多种内容格式,例如:公式、样式 | 纯文本 | 导入内容是否包含多种格式 |
支持编辑 | 不可编辑 | 是否需要编辑 |
文件内存大,Excel导入数据时消耗更多的内存 | 文件内存小 | 单次导入数量、时长 |
程序处理更慢 ,更复杂 | 程序处理简单,导入CSV文件可以更快 | 单次导出数量、时长 |
- 导入产品信息包含字段格式较复杂,需要支持编辑;对导入数量要求相对较低,建议采用.xlsx / .xls格式文件。
导入文件大小
1)为节省服务器空间,确保传输速度,建议限制导入文件大小,导入文件体积不超过5M;
2)如需导入图片,图片上传体积建议5M以内,上传后需进行压缩,便于后续读取展示;
3)为确保导入速度,建议单次导入数据行数不超过5000条;超过5000行的部分不做处理
2. 导入机制定义
同步 or 异步导入
导入方式 | 定义 | 优势 | 劣势 |
---|---|---|---|
同步导入 | 前端发起请求后,后端实时返回导入结果 | 响应时间短,用户可及时查看导入结果 | 1)数据量较大时,用户等待时间较长,影响体验;2)导入结果返回前,页面不能关闭,否则会中断导入;3)可能存在响应超时导致失败 |
异步导入 | 前端发起请求后,后端先接收请求,在后台异步处理任务,导入任务完成后异步返回结果 | 1)可同时处理多个任务,适合数据量较大检验复杂的任务 ;2)导入过程中,用户可关闭当前页面,做其他操作,避免长时间等待,可通过系统内消息通知; 3)后端返回结果无时间限制,降低失败率 | 导入后无法实时查看结果,导入失败也无法及时修改 |
- 文件数据量大,校验复杂的情况,建议采用异步导入;反之,采用同步导入即可。
导入数据重复处理
数据重复有两种情况:
1)导入文件中存在多条重复数据:定义清楚取第一条数据,或是取最后一条数据即可。
2)导入文件中存在数据与系统已有数据重复:根据实际业务场景而定,覆盖更新或上传失败;也可以做成配置项交给用户选择。
覆盖更新:即导入数据如果已存在,导入的数据直接覆盖已有数据;不存在时则新增
上传失败:即针对系统已有数据,不支持重复导入,对应重复数据导入失败
部分成功 or 全部成功
建议支持部分成功,针对失败的数据可二次编辑重新上传,否则数据量较大失败正确数据混淆,不易修改
其他规则
- 是否考虑浏览器兼容性?–需兼容大部分主流的浏览器,例如谷歌、紫鸟
- 导入文件内容唯一性判断标识定义,例如:导入产品信息SKU为唯一标识,相同SKU视为重复
3. 导入模板设计
提供统一的导入模板,规范好用户填写内容,能极大降低导入失败率。
模板元素
模板一般包含3个元素:指南、示例、表头(实际录入页),如下:
元素 | 作用 | 显示位置 | 具体内容说明 |
---|---|---|---|
指南 | 用于说明填写模板内容的注意事项 | 有2种展示方式:1)模板中新增单独的sheet 展示;2)实际录入页第一个单元格 | 例如:1) 模板中表头不可编辑、删除,否则无法正确匹配数据;2)红色字体为必填字段,黑色字体为选填字段;3)导入文件中同一个SKU存在多条记录时,以第一条数据为准;5)单次导入数据不要超过2000条. |
示例 | 示例应尽可能真实,通过示例引导用户正确填写录入数据,提高正确率。 | 模板中新增单独的sheet 展示 | 增加1-2条正确的导入示例,最好按照实际业务每种情况都能列举 |
表头(实际录入页) | 用户导入时实际填写内容的页面 | 导入模板中单独的sheet | 显示固定表头,详细说明见下文 |
模板表头字段
1)表头固定,不可编辑: 模板字段需与系统页面字段一一映射,字段命名、显示顺序均尽量与页面一致
2)区分必填、非必填字段: 例如:必填字段标记*,颜色区分必填字段字体标记红色等
3)增加批注:,比如:字段的格式、字符长度限制等说明
4)设置单元格格式:,针对部分特殊字段可设置固定单元格格式,非正确格式无法输入保存,例如:[重量]为数值格式,图片链接格式、日期格式
5)设置[下拉列表]: 针对部分选项固定的字段列,设置下拉列表,方便快速选择填充,例如:重量单位注意:部分字段的下拉列表是固定的,还存在一部分字段的下拉列表是通过系统录入内容变动的,例如:标签
6)字段分类: 字段过多时可将字段进行分类,通过字体颜色或背景区分,例如:导入产品时可针对供应商、仓库、物流等信息进行区分
7)插入新增字段规则,批量导入产品时,可能存在产品关联的供应商还未录入系统的情况,正常流程用户需先在系统补录供应商信息,然后在操作导入产品信息;此时我们可以在导入时支持录入新供应商,即新增产品,同时新增供应商注意:
a. 若供应商是必填字段,则新增供应商的情况下,新增供应商所需的必填字段也需全部完善;
b. 模板表头固定,建议保留3个以内供应商信息字段,即导入产品时最多可选择/新增3个供应商;依次列举为:供应商1、供应商2、供应商3,方便用户填写,为空则忽略
c. 对应整条数据添加成功时,供应商才可能添加成功
4. 导入文件校验
导入文件,需校验导入信息,校验分为两部分:
1)文件校验:检验文件格式、大小等是否符合导入条件,若不符合条件,则整体导入失败,提示对应失败原因
2)文件内容校验(数据校验):校验文件填写内容是否符合条件,若不符合导入条件,则文件内对应数据导入失败,支持下载导入失败数据及原因
文件格式检验
校验项 | 校验说明 | 检验提示 |
---|---|---|
文件格式校验 | 是否.xlsx 或.xls格式 | 导入文件格式错误,请上传.xlxs、xls文件 |
文件名称检验 | – | 导入文件名称错误,请按模板名称上传 |
文件大小检验 | 文件体积是否小于5M | 文件大小不可超过5M |
数据校验 | 文件数据条数是否小于5000条;文件中至少包含1条数据,不得上传空文件 | 单次最多可导入5000条数据;导入文件不得为空 |
表头校验 | 表头顺序、字段名称校验,是否同模板表头,否则导入失败 | 表头不可修改,请按照模板字段填写 |
文件内容校验
校验优先级:自上而下
校验项 | 校验说明 | 校验处理 |
---|---|---|
必填项校验 | 必填项是否缺失 | 对应数据行导入失败 |
字段格式校验 | 导入文件中必填、非必填字段格式是否正确 | 1)若必填字段格式不符合要求,对应数据行导入失败,例如:图片链接、日期;2)若非必填字段格式不符合要求,则对应数据行导入成功,针对存在格式错误字段默认值为空(根据实际场景定义) |
重复校验 | 导入文件中重复数据校验 | 1)若导入数据与系统已有数据重复,可覆盖新增;2)若导入文件内存在多条重复数据,则可默认导入第一条数据,其他重复数据导入失败(根据实际场景定义) |
6. 导入失败原因文件
导入失败数据
- 导入失败原因文件中,建议仅展示导入失败数据,降低判断成本;如果是导入数据存在其他关联数据,也可进行关联展示,可是具体情况而定
- 同一条数据存在多个失败原因时,建议一次性把校验结果都展示出来,避免挤牙膏式的报错。
失败原因显示
- 标记导入失败数据行对应的错误字段单元格,方便用户快速定位
- 首列增加[失败原因]字段列,展示对应数据行导入失败原因,多个原因用“;”隔开,错误原因与表头字段顺序一致,针对同一个字段多个错误原因时无需排序
7. 导入交互设计
导入逻辑、流程确认后,可开始设计交互,不同的业务场景,适合的导入逻辑不同,页面交互设计也存在差异,此部分不做详细说明。
导入页面/弹窗内,需包含以下内容:
- 下载导入模板:提供提前定义好的模板文件,点击后直接下载本地编辑
- 导入文件:现有大部分交互均支持通过拖拽或手动上传导入文件;
- 注意导入文件过程中校验设计,前端可先对文件名称/格式/大小等格式(见4.1)进行校验,文件格式不正确时可设计对应toast提示;
- 格式无误后可开始文件内容校验,可将导入失败数据及原因,返回给用户,方便用户修改后在提交
- 导入记录:显示对应的操作的记录,可根据实际业务场景确定是否增加
导入部分失败时,建议显示:导入总数量,导入成功条数,导入失败条数;支持下载失败文件