CSV 決策樹範本(退款資格)
由 CSV 匯出檔建成的退款資格決策樹:25 列、12 個帶標籤的判斷(其中四個是三向),以及五個各自獨立的結局。示範「連線至」與「連線文字」怎樣一個位置對一個位置地配對。
生成呢個圖嘅 CSV 檔
每行一個步驟。「連線至」欄入面嘅數字係行號——就係佢畫出啲連線,亦係大多數檔案缺咗嗰欄。
| # | 形狀 | 方框文字 | 連線至 | 連線文字 | 橫向泳道 | 縱向泳道 |
|---|---|---|---|---|---|---|
| 1 | Start | 客戶提出退款申請 | 2 | 申請 | 客戶 | |
| 2 | Input | 記錄訂單編號、日期與原因 | 3 | 申請 | 客服專員 | |
| 3 | Decision | 系統裡是否找到這張訂單? | 5, 4 | 是, 否 | 申請 | 客服專員 |
| 4 | Decision | 是否提供了購買憑證? | 5, 22 | 已提供, 兩次提醒後仍無回覆 | 申請 | 客戶 |
| 5 | Decision | 這張訂單有多久? | 7, 6, 21 | 30 日以內, 31 至 90 日, 超過 90 日 | 資格 | 客服專員 |
| 6 | Decision | 主管是否批准這宗逾期申請? | 7, 21 | 批准, 不批准 | 資格 | 主管 |
| 7 | Decision | 這件商品是實體還是數碼? | 8, 11 | 實體, 數碼 | 資格 | 客服專員 |
| 8 | Process | 安排退貨並檢查商品 | 9 | 狀況 | 客服專員 | |
| 9 | Decision | 商品的狀況如何? | 12, 13, 10 | 未拆封, 已拆封但可再售, 有瑕疵 | 狀況 | 客服專員 |
| 10 | Decision | 這個瑕疵是否在保養範圍內? | 14, 21 | 在保養範圍內, 客戶造成的損壞 | 狀況 | 主管 |
| 11 | Decision | 這件數碼商品有沒有被下載過? | 12, 13, 15 | 從未存取, 部分使用, 已完全用盡 | 狀況 | 客服專員 |
| 12 | Process | 計算全額退款金額 | 16 | 裁定 | 客服專員 | |
| 13 | Process | 計算部分退款金額 | 16 | 裁定 | 客服專員 | |
| 14 | Decision | 換貨還是退款? | 19, 12 | 換貨, 退款 | 裁定 | 客戶 |
| 15 | Decision | 商譽補償是否在客服專員權限之內? | 18, 17 | 在權限之內, 超出權限 | 裁定 | 客服專員 |
| 16 | Decision | 金額是否超出客服專員的審批權限? | 20, 17 | 等於或低於權限, 超出權限 | 審批 | 客服專員 |
| 17 | Decision | 主管是否批准這筆付款? | 20, 18, 21 | 全額批准, 改以商店信用批准, 不批准 | 審批 | 主管 |
| 18 | Process | 把商店信用發放至該帳戶 | 24 | 結付 | 財務 | |
| 19 | Process | 寄出換貨並結束這宗退貨 | 25 | 結付 | 客服專員 | |
| 20 | Process | 把退款付回原本的付款方式 | 23 | 結付 | 財務 | |
| 21 | Reject | 退款不獲批准,理由已記錄 | 結付 | 客服專員 | ||
| 22 | End | 申請因無回覆而結案 | 結付 | 客服專員 | ||
| 23 | Success | 退款已付回原付款方式 | 結付 | 財務 | ||
| 24 | Success | 已發放商店信用 | 結付 | 財務 | ||
| 25 | Success | 換貨已寄出 | 結付 | 客服專員 |
#,形狀,方框文字,連線至,連線文字,橫向泳道,縱向泳道
1,Start,客戶提出退款申請,2,,申請,客戶
2,Input,記錄訂單編號、日期與原因,3,,申請,客服專員
3,Decision,系統裡是否找到這張訂單?,"5, 4","是, 否",申請,客服專員
4,Decision,是否提供了購買憑證?,"5, 22","已提供, 兩次提醒後仍無回覆",申請,客戶
5,Decision,這張訂單有多久?,"7, 6, 21","30 日以內, 31 至 90 日, 超過 90 日",資格,客服專員
6,Decision,主管是否批准這宗逾期申請?,"7, 21","批准, 不批准",資格,主管
7,Decision,這件商品是實體還是數碼?,"8, 11","實體, 數碼",資格,客服專員
8,Process,安排退貨並檢查商品,9,,狀況,客服專員
9,Decision,商品的狀況如何?,"12, 13, 10","未拆封, 已拆封但可再售, 有瑕疵",狀況,客服專員
10,Decision,這個瑕疵是否在保養範圍內?,"14, 21","在保養範圍內, 客戶造成的損壞",狀況,主管
11,Decision,這件數碼商品有沒有被下載過?,"12, 13, 15","從未存取, 部分使用, 已完全用盡",狀況,客服專員
12,Process,計算全額退款金額,16,,裁定,客服專員
13,Process,計算部分退款金額,16,,裁定,客服專員
14,Decision,換貨還是退款?,"19, 12","換貨, 退款",裁定,客戶
15,Decision,商譽補償是否在客服專員權限之內?,"18, 17","在權限之內, 超出權限",裁定,客服專員
16,Decision,金額是否超出客服專員的審批權限?,"20, 17","等於或低於權限, 超出權限",審批,客服專員
17,Decision,主管是否批准這筆付款?,"20, 18, 21","全額批准, 改以商店信用批准, 不批准",審批,主管
18,Process,把商店信用發放至該帳戶,24,,結付,財務
19,Process,寄出換貨並結束這宗退貨,25,,結付,客服專員
20,Process,把退款付回原本的付款方式,23,,結付,財務
21,Reject,退款不獲批准,理由已記錄,,,結付,客服專員
22,End,申請因無回覆而結案,,,結付,客服專員
23,Success,退款已付回原付款方式,,,結付,財務
24,Success,已發放商店信用,,,結付,財務
25,Success,換貨已寄出,,,結付,客服專員運作方式
匯出申請,然後只留四個欄
拿你已經有的那份匯出檔,把它的標題改成「形狀」、「方框文字」、「連線至」與「連線文字」。如果你想把深度與角色畫成泳道,就加上「橫向泳道」與「縱向泳道」;只有在想為某條分支上色時才加「連線樣式」。匯出檔裡其餘一切可以留在原處:匯入是按標題名稱比對的,所以欄的次序無關緊要,而不認得的欄會原封帶過並被忽略,不會被拒絕。
令標題列成為檔案的第一列
報表工具經常在標題上方寫一列標題文字、一個日期戳或一列空白。CSV 沒有標題這個概念,所以無論第一列寫著甚麼都會被讀成標題列,而一個第一列是「報表產生於 12/03」的檔案,匯入後會有一個叫「報表產生於 12/03」的欄。用文字編輯器打開檔案,把標題上方的一切刪掉,還有底部任何拖尾的空白列,因為它們會變成空白的資料列。
在寫「連線至」之前先為列編號
「連線至」放的是位置,不是名稱也不是編號:7 的意思是第七列資料,由標題下方算起為 1。先按你想要的次序把整棵樹寫完,然後才填號碼。如果你之後排序或重排這個檔案,那個欄裡每一個數字仍然指著一個位置,而現在指的是錯的那一列,同時檔案外觀上完全看不出有問題。把一份步驟 CSV 排序,是無聲無息地重接一棵樹最快的辦法。
把「連線至」與「連線文字」一對一地配好
這兩個儲存格被讀成兩份清單,並按位置配對,所以它們的項目數必須相同:7,6,21 對 30 日以內,31 至 90 日,超過 90 日。這裡有兩層逗號,而只有外面那一層可以轉義。含有逗號的欄位在檔案裡是加引號的,所以方框文字「記錄訂單編號、日期與原因」沒有問題;含有逗號的分支標籤卻救不回來,因為標籤清單是在引號拆掉之後才按逗號切開的。要寫「已拆封但可再售」,絕不要寫成中間夾一個逗號的兩截。
把你們自己的數字放進三個門檻
有三列帶著這份範本只能靠猜的數字。申請上的年期分界是 30 日與 90 日;把它們換成你們公布的視窗,以及主管仍可批准的那一段範圍。客服專員的審批權限是一個金額而不是一項判斷,它應該訂在大額退款的尾端會升級、但又不會令主管那條泳道變成隊列的位置。而部分使用對數碼商品需要一個定義——下載一次、看過一課、或者顯示過一個授權碼。
匯入之前先檢查分隔符與編碼
用純文字編輯器看第一列。標題之間是分號,代表這個檔案是由一個使用歐洲清單分隔符的應用程式儲存的,而被當成以逗號分隔去讀時,它會塌成單單一個欄。同時把它存成 UTF-8:以舊式代碼頁寫出來的匯出檔,會把 £、é 與破折號變成替代字元,然後這些字元就坐在你的方框標籤裡;而一個 UTF-8 位元組順序記號可以黏在第一個標題上,令「形狀」不再比對得上那個形狀欄。
常見問題
在 CSV 裡怎樣寫一個三向分支?
跟寫兩向的方式一樣,只是那兩個儲存格各多一項。在這張圖的第 5 列,「連線至」儲存格讀作 7,6,21,而「連線文字」儲存格讀作 30 日以內,31 至 90 日,超過 90 日。第一個數字配第一個標籤、第二個配第二個、第三個配第三個。這個格式本身沒有暗示任何上限,也沒有假設只有是與否,而後者對一份真實政策很要緊:年期分段、商品狀況與主管的選項,很少是二元的,而硬把它們塞進層層相疊的是/否菱形,只會令列數翻倍,卻沒有多加一條規則。這張圖十二個判斷之中有四個帶三個出口。
如果「連線至」與「連線文字」的項目數不同會怎樣?
配對是按位置的,所以少了一個標籤並不會在原來的位置留一個空缺——它會把其後每一個標籤往前拉一格,落到錯誤的箭嘴上。在一個三分支的列裡漏掉是,第二條分支就會被貼上本來屬於第一條的標籤。這件事值得動手檢查的理由是:兩個儲存格單獨看都沒有格式錯誤,兩者都是普通的逗號分隔文字,兩者都能通過任何 CSV 解析器,而檔案完全不會給你任何訊號。匯入之前把每一個判斷列那兩個儲存格的逗號數一遍,並把箭嘴沒有全部貼上標籤的判斷當成一個缺陷,而不是一種風格選擇。
為甚麼我的 CSV 匯入成單單一個欄?
幾乎一定是分隔符。把一張表另存為 CSV 時,用的是那台機器地區設定所配置的清單分隔符,所以一台設定為歐洲地區的機器產生的檔案,明明叫 .csv 卻是以分號分隔。以逗號分隔去讀,每一列就是一個欄位,於是你得到一個很闊的欄。用純文字編輯器打開檔案,看標題那一列:如果分隔的是分號或定位字元,就以逗號重新匯出,或者把它們替換掉。同一時間順便檢查編碼,因為一個在文字編輯器裡渲染成兩個怪符號的重音字元,會原原本本以那個樣子存進你的方框標籤。
我要不要把服務台匯出檔多加的那些欄刪掉?
不用。匯入比對的是標題名稱而不是欄的位置,所以工單編號、承辦人、建立時間、渠道,以及匯出檔裡其餘任何東西,都會原封帶過並被忽略。這有兩個實際好處:匯入之前你不必重排任何東西,而且你可以把參考資料留在流程旁邊,令一列仍然追得回它出自哪一張工單。唯一要檢查的是你沒有不小心留下兩個標題相同的欄,而當一份匯出檔把某個欄叫做「備註」、而那張表本來就有一個時,這件事很容易發生。
CSV 決策樹跟在 Excel 裡做同一件事有甚麼分別?
CSV 沒有公式、沒有工作表、沒有儲存格類型、也沒有格式,所以檔案裡沒有任何東西可以計算一條分支,或者把一條規則藏在條件格式裡。這棵樹所做的一切都必須逐字寫在「連線至」與「連線文字」裡,這在你編輯的時候是一種限制,而在別人要讀它、或者要在版本控制裡比對它的時候是一項好處。同時也值得記住 CSV 是用來做甚麼的:它是系統在出口處交給你的東西。沒有人會用它來維護一份政策。匯出它、匯入一次,此後就一起編輯圖與試算表,而不是來來回回地折騰那個文字檔。