業務分析:HR端職位編輯薪資計算邏輯和錯誤分析
1. 問題總結
未釋出型別的職位詳情中,會將職位資訊快取到瀏覽器。
資料快取和獲取都需要特殊金額轉化,經測試發現,處理的不對等導致職位詳情中薪資的錯誤展示,屬歷史遺留問題。
而HR端前端程式碼對於薪資的轉化處理有兩種
- 轉化得到正確精度的數值(新增職位)
- 使用前臺的模板讓精度錯誤的資料顯示正常(職位詳情、職位快取和獲取)
在本期實現新功能“職位編輯”時,應該參考新增職位的薪資處理,而開發並沒有意識。
而遺留問題有提醒到開發要對查詢進行單向薪資處理,但是對於提交的職位沒有做對等處理。
由於在編輯態的薪資展示正常,只有提交職位資訊再重新整理以後才能暴露問題,所以最終也沒被測試人員注意。
2. 更具體的分析
2.1 前端的資料模型的定義和使用
後臺的金額資料都是以元儲存,比如月薪3萬儲存在後臺 的數值是30000
。
前臺定義了通用的資料模型,有兩個方法parse
和dispose
。如下為前端的薪資模型簡陋結構
{
salaryMax: {value: 0, unit: 'K'},
}
如果後臺返回的數值為 {salaryMax:30000}
,前臺拿到數值以後,呼叫parse
得到結果 {salaryMax:30}
,然後用於介面30K
的正常顯示。
在編輯態,如果在輸入框中修改了最大薪資為50,那麼提交給後臺的時候需要將 {salaryMax: 50}
進行dispose
,得到{salaryMax: 50000}
。
2.2 前臺做的特殊處理
在上面的模型中,salaryDetail.salaryMax的單位配置成了K。而在實際專案中,我們通常會選擇薪資型別為年薪(salaryType=1)或者月薪(salaryType=2)。使用習慣上,年薪通常以W
計,月薪通常以K
計。那麼在程式碼層面上急需要做對等的特殊處理:
{
salaryDetail: {
salaryType: 1, // 1 年薪;2 月薪
month: 0,
salaryMax: {value: 0, unit: 'K'},
salaryMin: {value: 0, unit: 'K'},
}
}
- 獲取的職位資訊中
如果薪資為年薪,除了使用parse
處理數值以後,還需要將數值除以10。比如200萬的年薪,後臺返回了200000,我們的模型定義的單位是K,那麼經過parse
以後,數值變成了200。為了符合萬的展示需要,還需要將200/10,得到20。
- 提交給後臺的資訊中
我們可以將20修改為任意數值比如30,提交給後臺的時候,會呼叫dispose
,得到30000,但因為使用的是K的轉化標準,還需要3000*10,最終傳遞300000給後臺。
2.3 業務邏輯的處理的四種情況
2.3.1 新增職位
特點:單向/只做提交
提交職位的時候,判定如果薪資型別為年薪,進行dispose+乘以10
的組合操作。
2.3.2 檢視職位詳情
特點:單向/只做獲取
獲取到職位資訊的時候,判定如果薪資型別為年薪
- 理論上,應該進行parse+除以10的操作
- 實際上,但是採用了使用錯誤的精度,但是在介面中通過特殊處理來展示
實際上的技術實現為:computed中有個形如salaryDetailDisplay的屬性,會返回要顯示的薪資範圍的字元,它會用到salaryType是否等於1決定如何拼裝展示在介面的數值和單位
2.3.3 職位快取
特點:雙向/快取和獲取快取
因為只是快取資料,只需要快取和獲取快取的時候採用一致的標準即可。即要麼快取的時候和獲取的時候都不處理,要麼都做處理。
2.3.4 職位編輯
特點:雙向/查詢和儲存
為了介面能正常展示,對於薪資型別為粘性的型別,必須:
(1)查詢職位資訊後進行parse+除以10
的處理
(2)在儲存職位的時候進行dispose+乘以10
的處理
2.4 問題的技術性分析
對整個HR端的薪資處理的整理情況不夠了解,沒有意識到要按照2.3.4的方式進行處理。
對歷史遺留問題的解決中也僅僅注意到了2.3.4中的(1)的處理,而忽略了2.3.4中(2)的處理。
相關文章
- 做好招聘分析,HR必知的資料邏輯
- 邏輯分析
- USB 邏輯分析儀分析丟包怎麼分析(lecroy USB 邏輯分析儀)
- 錯誤程式碼的個人見解以及邏輯分析題
- 資料分析應學習邏輯思維和分析方法
- 業務邏輯漏洞和cs
- [BUG反饋]模型編輯模板存在條件邏輯判斷錯誤模型
- 資料分析應有的邏輯思維及分析方法
- 業務邏輯學習!
- nanoDLA邏輯分析儀上手教程NaN
- 反編譯之JD-GUI程式碼邏輯分析編譯GUI
- 應用程式邏輯錯誤總結
- webwork開發指南 是邏輯錯誤?Web
- 傳奇原始碼分析-客戶端(遊戲邏輯處理源分析二)原始碼客戶端遊戲
- 大量邏輯讀的瓶頸分析和優化優化
- 【C】 15_邏輯運算子分析
- 武器系統邏輯程式碼分析
- 常見邏輯語句逆向分析
- R資料分析:樣本量計算的底層邏輯與實操,pwr包
- SPA PLM 核心業務邏輯
- MOBA遊戲分析:LOL和DO他的核心設計邏輯差異遊戲
- 業務邏輯層快取應該設計快取
- Vue2原始碼分析-邏輯梳理Vue原始碼
- DSLogic邏輯分析儀使用筆記筆記
- 計算機程式的思維邏輯 (1):資料和變數計算機變數
- 實現拼團業務邏輯
- 強業務邏輯抽象API介面抽象API
- 用java實現業務邏輯Java
- bp靶場業務邏輯漏洞
- 機器學習之邏輯迴歸:計算概率機器學習邏輯迴歸
- 有關工序成本的計算邏輯
- 計算字串編輯距離字串
- external-attacher原始碼分析(2)-核心處理邏輯分析原始碼
- kube-scheduler原始碼分析(2)-核心處理邏輯分析原始碼
- !和~的區別(邏輯取反和按位取反)
- Python邏輯運算Python
- Python寫業務邏輯的幾個編碼原則Python
- 大小公排系統開發邏輯分析