設計導出功能,這三點需牢記
編輯導讀:導出功能是產品中的常見功能,雖然能滿足用戶數據導出的需求,但是也存在著數據安全的風險。那么,在設計一個導出功能時應該考慮些什么呢?本文將從三個方面對此展開分析,希望對你有幫助。
先來看一個假設的場景,小明是某B端數據產品的產品同學,前段時間收到了很多用戶關于“導出”功能的需求反饋,分析后得出增加導出功能可以解決用戶的問題,為用戶帶來價值。為此花了一個迭代周期,上線了導出功能。
但是功能上線后,就收到了用戶不好的反饋,用戶認為“導出功能”雖然解決了數據導出的需求,但是增加了他們關于“數據安全”的風險,產品內的任何賬號都可以進行導出動作,無法對賬號進行“是否可以導出”的管控,會存在數據泄漏的風險。例如員工A在真實業務場景中不被允許直接拿到買家數據,但員工A通過“導出功能”拿到了訂單明細中的買家信息,泄露給競爭對手后導致買家流失,從而造成了業務團隊數十萬甚至上百萬的損失。
為了避免造成損失,用戶只好暫時停止使用該產品,希望盡快解決這個問題,甚至有可能造成該用戶轉用其他產品從而造成了流失。這個場景下,就是小明同學在設計導出功能時,缺少了對“導出權限”的思考,導致原本希望幫用戶解決問題的功能,反而給用戶帶來了損失,也給整個產品帶來了損失。
“導出權限”是我們在設計導出功能時具體需要關注的點,事實上,除了“導出權限”外,在整個導出流程中,我們需要注意的點還有很多,本文想從“導出前”、“導出中”、“導出后”3個環節和大家討論分析需要注意的點。
一、導出前注意的點
導出前的定義,即用戶在發起導出(點擊導出按鈕)前這個環節,那么設計導出功能在這一環節需要考慮什么呢?我認為需要考慮2點內容,一是“導出權限”的思考;二是“導出顆粒度”的思考。
1. 導出權限
在設計導出權限的時候,首先可以思考的是“用戶是否可以導出”,即用戶能否通過“導出”功能將產品內的數據導出到本地,具體分為兩種結果,可以導出與無法導出,而在具體的實現方案上通常會有兩種做法。
第一種是對“導出”功能做按鈕級別的控制,通過控制了用戶是否可見“導出”,從而實現控制“用戶是否可以進行導出”,但是并沒有對導出數據進行控制,意味著用戶只要有導出入口,就能導出所有數據。這種做法優點是配置簡單同時傳遞給用戶的也便于理解,只需要對不同賬號設置是否有“導出”即可,有“導出”就能導出數據。但是無法對導出的情況做更精細化的區分。
第二種是利用“數據”來實現對用戶導出結果的控制,當用戶擁有某一數據權限時,就可以通過“導出”拿到這部分數據,但是并沒有對“導出”進行控制,用戶都可以見到“導出”并使用“導出”,最終導出可見的數據,就是用戶數據權限可以見到的數據。這種做法的優點,可以對“導出”結果做更精細化的區分,比如有個人數據權限的用戶能導出個人數據,而有個人、團隊數據權限的用戶能導出個人和團隊的數據。但是需要依賴產品內有成熟的數據權限,用戶對于該方式的感知也沒有那么直接,需要用戶去理解“有某一個數據權限就能導出這部分的數據”這層意思。
這兩種做法的差異在于,“導出”是否透出給用戶可見,以及控制全部數據還是部分數據。在實際業務場景中,這兩種做法通常是組合使用的。
案例:
一起來看一組案例,某公司自建了一款地推工作臺的應用,方便“地推團隊”日常工作收集信息。地推成員通過“工作臺-新建客戶”錄入客戶線索,字段包括:客戶姓名、客戶規模、客戶電話、客戶地址、客戶等級等字段。
地推主管通過“客戶信息”菜單審核收集上來的客戶線索,審核結束后,財務來計算地推成員的績效,財務提出希望可以增加“導出”功能,方便直接導出數據后在Excel內進行統計計算。
在這個案例中“地推主管”和“財務”都可以看到客戶數據,而兩個角色的區別在于“財務”需要將數據導出到本地進行績效核算,“地推主管”不需要將數據導出。所以產品團隊在“客戶信息”菜單增加了一個導出按鈕,并對“導出”按鈕做了控制,財務角色的賬號擁有“導出”權限,地推主管角色沒有“導出權限”,這就是對“導出”功能做按鈕級別的控制在實際場景中的應用。
后來公司業務發展,地推團隊不但需要收集客戶線索,還需要對“審核通過”后的客戶線索進行日常跟進和回訪。對于地推成員,需要在“客戶信息”菜單查詢地推主管審核后分發給自己的客戶線索,并將數據導出到本地后打印,方便外出拜訪客戶時可以用紙質攜帶客戶資料。因此也需要導出權限,但是當前產品通過“按鈕”來控制導出權限的做法,只能實現所有客戶線索的“可以導出”和“不可導出”,為了避免地推成員拿到全部客戶線索后,出現互相搶單的情況,在現有功能下只能賦予“地推主管”導出權限,地推主管導出數據后再去進行逐一的分發。
為此,產品團隊,在“地推工作臺”內增加了個人數據權限、團隊數據權限,并通過“數據權限”來進行導出控制。最終通過賦予“地推成員”擁有“個人數據權限+導出權限”,來實現地推成員只導出個人的數據,這是利用“數據”來實現對用戶導出結果的控制在實際場景中的應用。
另外,對于“導出權限”除了“用戶是否可以導出”的思考外,還需要思考“導出用戶的真實性”,即二次驗證環節,驗證當前用戶的安全性。
導出的數據中很可能包括項目的核心內容,關系到公司安危,其重要性也衍生了一些通過違法手段獲利的行為,比如模擬賬號登入盜取數據、套用他人賬號進行導出等。
因此我們在實際觸發導出任務前,可以增加一個二次驗證,驗證該導出行為是否是賬號本人操作,常見的包括“設置的安全碼驗證”、“綁定的社交賬號驗證”等,最大可能的保障數據的安全性。
2. 導出顆粒度
通常的,通過“導出功能”可以把頁面上的數據,導出到本地環境,但是如果用戶想要導出的數據是下鉆的呢?在頁面上查詢得到的數據是1-3月每個月的匯總數據,但用戶想要導出每個月份下每一天的數據,即1.1-3.31號每一天的數據。這里出現了不同的顆粒度,如果導出1-3月每個月的匯總數據,就是按月顆粒度導出數據;如果導出1.1-3.31號每一天的數據,就是按日顆粒度導出數據。
由此可見,導出顆粒度是存在相對關系的,比如大小關系,從上文的導出時間維度看,按月導出是大顆粒度,而按日導出是小顆粒度。當存在多個導出顆粒度時,就跟需要詳細標明不同導出的數據顆粒度,讓用戶明確感知到通過“導出”可以拿到的數據顆粒度是什么,這也是我們需要在“導出前”環節思考的。
通過一個案例來看一下吧,某電商后臺“商品分析模塊”,提供了兩種導出形式的數據,形式1,提供商品一段時間的銷售額之和;形式2,提供商品一段時間每一天的銷售額。
這里也出現了不同導出顆粒度之間的相對關系,在相同時間段內,同一個字段,形式2導出的數據加起來,就等于形式1導出的數據。由此可見形式1導出的是商品一段時間內的匯總數據,而形式2導出的是商品一段時間內的明細數據,這就是兩種不同的“導出顆粒度”,需要我們通過文案來透出兩者的區別,幫助用戶明確理解通過哪一種形式可以拿到怎么樣的數據,常被用于同時存在“多個導出”的場景下使用。
二、導出中注意的點
文章開頭,小明提的簡單的導出方案,已經包括了“導出環節”中發起導出入口,導出結果反饋等部分,導出中的主體流程通常都是被大家注意并且重視的,這里想要討論在導出中需要注意的是一些細節,這些細節給用戶帶來體驗的提升。
1. 支持自定義設置
用戶通過導出拿到的數據字段,常見的是和頁面展示的字段保持一致的。但在實際業務場景中,用戶想要的導出字段存在比頁面上少或者多的情況。
先來看下,用戶想要導出的字段比頁面上少的場景。出現這種場景的原因是,頁面提供的內容是為了滿足不同用戶的需求而存在的,所覆蓋的業務比單一用戶多的多。
以常見的“銷售記錄”為例,銷售記錄中有訂單相關、用戶相關、商品相關等字段,不同字段的組合可以滿足用戶的需要,但是對于單一用戶來說,部分字段與它所關心的業務無關,這部分字段對于該用戶來講就是多余的,用戶A只關心銷售記錄中的訂單數據,導出后得到的商品相關字段可能就會變成一種負擔,需要用戶去進行刪除,從而增加了用戶的操作成本。
系統提供可導出字段為m個字段,比如字段1、字段2、字段3
頁面展示的字段為n個字段,比如字段1、字段2、字段3
這里m=n,頁面展示的字段即為系統支持用戶導出的字段
當用戶實際使用的字段x≤n=m時,就是用戶想要導出字段小于頁面的場景
再來看下,用戶想要導出的字段比頁面上多的場景。出現這種場景的原因是,頁面提供的內容是有限的,展示太多字段會出現滾動條并且導致增加用戶查找某一字段的成本,因此頁面上展示的字段通常是覆蓋目標用戶群體的大部分需求而存在的,這就會造成一個問題,導出字段如果和系統支持導出一致,會使得部分字段對于大部分用戶來說是無效字段;導出字段如果和頁面支持一致,使得小部分用戶得不到“系統提供但是頁面之外”的字段,使得該部分用戶的需求無法被滿足。
系統提供可導出字段為m個字段,比如字段1、字段2、字段3、字段4、字段5
頁面展示的字段為n個字段,比如字段1、字段2、字段3
這里m>n,頁面展示的字段小于了系統支持用戶導出的字段
當用戶實際使用的字段n<x≤m時 ,就是用戶想要導出字段大于頁面的情況
針對這兩種場景,可以支持用戶自定義導出字段來解決,但是這里有一個前提條件,從上文場景描述中可以發現,“自定義”是存在邊界的,用戶可以導出字段的上限就是“系統支持導出”的字段個數,所以如果用戶想要自定義導出的字段不在“系統支持導出字段”內,那么就不是“自定義設置”可以解決的問題,而是去評估“是否支持該新字段的查詢和導出”。
通過一個案例來理解吧,某電商后臺有“銷售記錄”菜單,提供了“訂單編號、創建時間、下單時間、付款時間、交易狀態、訂單金額、買家昵稱、商品名稱、商品編號、商品單價、商品數量”字段的查詢和導出,而不同業務的運營同學對于導出的字段不同,商品運營的同學不關心“創建時間”和“下單時間”,業務運營的同學不關心“商品單價”和“商品數量”,在導出數據進行報表制作時,都需要對“導出”的字段進行刪減。
這就是“用戶想要導出的字段比頁面少”的場景,而通過支持“自定義設置導出字段”,就可以解決這個問題,默認支持導出“訂單編號”等11個字段,業務方可以根據實際的業務場景需要,進行設置,得到想要導出的字段。
自定義字段設置,除了對“字段”數量多少進行自定義以外,還可以在系統支持的導出格式內對“字段”進行設置,例如系統內支持“值班時長”字段秒、分/秒、時/分/秒等3種格式,那么在導出時也可以支持讓戶去設置自己想要的格式。
2. 導出過程的反饋
對于“導出結果”會提供明確的反饋結果,讓用戶感知到“導出任務”是成功了還是失敗了,但是導出的過程的進度常常會被我們忽略,導出過程中“進度反饋”的缺失,引發了“我這個任務怎么還沒有完成?”,“這個任務還需要多久才能完成”,“我是需要一直等待還是可以去做別的事情”等疑惑的產生,進而導致用戶陷入一種未知恐懼的狀態。
而提供“導出進度”的反饋,可以很好的提升用戶在導出流程中的體驗,通過變化的進度條讓用戶感知到了導出任務的變化過程,讓用戶對等待有感知的,也可以根據進度情況安排自己下一步的行為。
3. 導出文件的格式設置
對“導出文件格式”這一細節的優化也可以給用戶帶來體驗的提升,當導出用戶對象不是專業數據分析同學時,用戶可能就忽略了數據分析前需要進行的清洗工作,直接在導出文件上進行了加工,存在一些數據格式使得公式無法使用,原有公示失效等問題。
以Excel為例導出文件中的單元格格式就會影響在文件內使用公式無法生效,例如下圖中左邊的單元格格式是常規,而右邊的單元格格式是文本,求和公式就無法生效了。
三、導出后注意的點
當用戶下載拿到導出文件后,并不是意味著我們“導出功能”設計的結束,在導出后的環節中,我們需要注意用戶“二次導出”以及“導出記錄”的場景。
1. 二次導出
用戶通過瀏覽器下載拿到導出文件后,只是代表了用戶本次導出行為的結束,但是用戶會存在短期二次重復導出的需求,例如本地文件保存不當丟失,產品原因導致導出數據缺失等,這個時候用戶需要重新進行導出,那么用戶就需要重新在“頁面”進行操作,并伴隨著導出條件的篩選,包括時間、狀態等具體的業務條件,如果導出條件比較復雜的話無疑增加了用戶的成本。
我們可以提供“導出中心”的功能,整合用戶短時間(一般7天,30天)的導出任務,方便用戶在需要重復導出時,可以直接通過該模塊再次生成導出任務,而不需要在頁面上重新操作了。
2. 導出記錄
雖然在導出前已經對“導出權限”問題做了詳細的限制,包括賬號級別的權限和二次驗證,但是仍然可能會存在數據泄漏的問題,這個時候就需要有對應的模塊可以去查詢當時的導出情況,是什么時候導出的,是哪個賬號導出,導出的數據條件是哪些。
就可以幫助用戶定位到具體出問題的賬號是哪個,進行追責,以及評估數據泄露的程度。例如下圖中的導出記錄,就幫助用戶定位到了賬號1在8月4日,在菜單1導出了2020年8月2號到4號,訂單狀態為“已付款”的訂單信息。
四、總結
當確定要做導出后,在設計具體導出功能時,不僅需要關注核心的導出中的流程環節,也需要思考“導出前”、“導出后”。導出前需要注意“導出的權限”問題,以及讓用戶明確感知導出的顆粒度;導出后需要幫助解決用戶“二次導出”和“定位導出記錄”的需求。
最后祝大家新年快樂~
#專欄作家#
晌午,微信公眾號:晌午自習室,人人都是產品經理專欄作家。4年產品經驗,專注于數據方向,目前是電商客服領域的產品 。
本文原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自 Unsplash,基于CC0協議
漏了一個很重要的部分,就是導出文件的命名格式
贊
導出記錄查看的權限可以開給指定人,這很完美
請問二次導出這個窗口是可以配置權益,還是每個員工都只能看到自己申請導出的好呢?
這個要判斷業務場景中是否存在員工有需要去導出他人文件的情況,如果沒有的話建議只看到自己的
財報
棒!
一個導出功能都有這么多門道,學習了!
概述全面,老導出了??
非常受用!謝謝!