記錄使用者狀態
我們做的產品是某款安檢產品的資料集中管理,主要是為了處理AI所需的樣本,我們通過web進行標註任務、資料傳輸任務、裝置型號、裝置型別、儲存源、傳輸協議等等的管理與分配,以上各種東東的管理(各種簡單的複雜的增刪改查)是我負責。
那是一個風和日不麗的週一,leader
說客戶(其實就是某個人臉識別的兄弟部門)需要一項訓練集的管理web,毫無疑問的,這個任務是我的。AI嘛,說白了就是不斷訓練資料,獲得模型,再訓練,再通過新的資料進行測試,根據結果再通過新資料訓練,再得到演算法模型,再測試,周而復始的調參。所以訓練集必須要好好管理啊。
那麼,當我建立一個新的訓練集的時候,訓練集本身包含5個自有屬性,還要通過一個數據包的查詢介面來獲得的資料包,以上的5個自有屬性+這個資料包(不知道有多少,反正是通過另外三個查詢條件獲得資料包內容)組成一條資料集。
這條訓練集資料可以被編輯、被刪除、被匯出。
編輯的業務場景是:點選編輯時首先通過獲得當前項訓練集的id
的介面來回顯資料庫中儲存的資料,而訓練集只有那五個自有屬性可以被修改,資料包的內容以及建立時的三個查詢條件(也就是建立時的查詢狀態)不可修改。
基於上面的業務場景,我新增一條新的訓練集的時候,該訓練集的五個自有屬性+資料包+查詢狀態 都應該儲存到資料庫中。
而一開始與我對接的java後臺的資料庫中表沒有對應欄位去儲存查詢狀態,我與之進行第一輪交涉,經過思考,他覺得這樣太複雜,因為這個查詢條件沒有單獨的id
去儲存,需要再建新的資料庫表,希望前臺來處理這個狀態,因為通過資料包的查詢介面獲得了表徵查詢獲得的所有資料包的一串標識碼和資料包總數,他認為我可以通過一個物件記住,然後編輯時再把它關聯回去。既然後臺要建表,還要建新的實體類,比較複雜,那我前臺看看處理下。
可是,我一思考,這個查詢條件要與該條訓練集繫結才能保證編輯該條訓練集的時候回顯正常 的資料,也就是說要把查詢狀態與該訓練集的id
關聯起來, 那麼問題來了,新增的時候,並沒有id
,此id
是往資料庫儲存時後臺自動生成的,前臺也沒法拿到這個id
,那麼我也沒法通過一個物件把查詢狀態+建立該訓練集的id
儲存起來,好像前臺也沒法處理。
可是這個任務必須要做啊,我和後臺的小夥伴兩個萌新大眼瞪小眼。
問題的解決
沒辦法了,去跟leader
商量了,結果人家雲淡風輕的說:
searchCondition form
聽完之後我倆回來後,討論了一下就開始幹了,有了明確的方向幹活就是快啊。
改造新增時的方法
let searchCondition = { businessType: this.form.businessType, uploadTime: this.form.uploadTime, plotTask: this.form.plotTask } axios.post(`${base_url}/trainSet/getTrainSetById?id=${...}`, { //其他程式碼 searchCondition: JSON.strinify(searchCondition) }) .then(res => { //程式碼... })
編輯時的方法
let searchConditionJSON = JSON.parse(searchCondition) this.form.businessType = searchConditionJSON.businessType ... //直接用解構複製,通過查詢條件再調一遍查詢的介面即可獲得所有的資料包以及總數目
感悟
具體問題還是沒法深入到程式碼層面去分析,對於資料庫的知識比較匱乏,不知道如何去抽象業務場景。
學到了基本的JSON
的基本玩法。
多思考,多請教,多記錄。