業務分析: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反饋]模型編輯模板存在條件邏輯判斷錯誤模型
- 資料分析應有的邏輯思維及分析方法
- day14.邏輯運算,位運算
- nanoDLA邏輯分析儀上手教程NaN
- 反編譯之JD-GUI程式碼邏輯分析編譯GUI
- 應用程式邏輯錯誤總結
- 業務邏輯學習!
- R資料分析:樣本量計算的底層邏輯與實操,pwr包
- 常見邏輯語句逆向分析
- DSLogic邏輯分析儀使用筆記筆記
- 【C】 15_邏輯運算子分析
- SPA PLM 核心業務邏輯
- 幽默:ifelse代表業務邏輯
- Python邏輯運算Python
- MOBA遊戲分析:LOL和DO他的核心設計邏輯差異遊戲
- Python寫業務邏輯的幾個編碼原則Python
- 列舉位邏輯運算從懵懂到似懂非懂
- bp靶場業務邏輯漏洞
- 實現拼團業務邏輯
- 強業務邏輯抽象API介面抽象API
- 什麼是硬碟邏輯損壞和檔案系統錯誤硬碟
- kube-scheduler原始碼分析(2)-核心處理邏輯分析原始碼
- external-attacher原始碼分析(2)-核心處理邏輯分析原始碼
- SQL Server資料庫出現邏輯錯誤的資料恢復SQLServer資料庫資料恢復
- vim 編輯報錯導致無法正常退出和編輯
- 小小邏輯判斷符的錯誤使用,資損幾萬塊
- onethink後臺選單管理,選單邏輯錯誤
- 大小公排系統開發邏輯分析
- Springboot中mybatis執行邏輯原始碼分析Spring BootMyBatis原始碼
- Linux程式排程邏輯與原始碼分析Linux原始碼
- 資料庫表CRMD_ORDERADM_I裡欄位OBJECT_TYPE的計算邏輯資料庫Object
- 秒殺外掛的業務邏輯分析 秒殺外掛可以幫助您什麼?
- 聊聊從邏輯閘到作業系統的計算機作業系統計算機