由于二期全部都使用的sqlserver linq to sql.所以為了實現(xiàn)工單流程功能,在工單表中會有超多的字段劲妙,而三期引入mongodb,模型設(shè)計也有所不同,數(shù)據(jù)遷移需要單獨著重考慮
遷移任務(wù)
- 工單基礎(chǔ)數(shù)據(jù) 包括流程節(jié)點process 暫停記錄
- 結(jié)算單
- 系統(tǒng)基礎(chǔ)數(shù)據(jù),包括人員,權(quán)限,區(qū)域,組織結(jié)構(gòu)等
- 圖片文件 FTP 數(shù)據(jù)
- 報表數(shù)據(jù)
- 消息任務(wù)通知
- 系統(tǒng)日志
方案
關(guān)于工單遷移 , 二期項目提供一個接口:
OrdersPagedResult GetOrders(int skip,int limit,datetime lastModifiedWhen,string orderId="");
public class OrdersPagedResult {
public int totalCount{get;set;}
public List<Orders> {get;set;}
}
可以通過對應(yīng) 時間/單號 分批 獲取到所有的工單 orders模型按照三期的標(biāo)準(zhǔn)模型轉(zhuǎn)換
三期項目寫一個功能頁面--"從二期導(dǎo)入工單數(shù)據(jù)" 該頁面可以輸入時間和單號,并可視化的方式動態(tài)展示導(dǎo)入結(jié)果(websocket如果有問題 就先Loading完了展示結(jié)果 成功xxx條 失敗xxx條 原因xxx)
轉(zhuǎn)換的具體細(xì)節(jié)
二期工單還原回來的操作記錄僅有 暫停記錄 再加上一個遷移的記錄 標(biāo)識出這是一個遷移工單,無法還原之前的操作骑科。
關(guān)于process可以如實還原,前提--3期頁面內(nèi)容不調(diào)整
轉(zhuǎn)換代碼統(tǒng)一寫在二期的api項目中
二期數(shù)據(jù)最完整的以建樁意向為準(zhǔn),如果判斷出有購車意向,則補上購車意向的process,如果判斷出成功轉(zhuǎn)換為工單,則添加上工單的process
工時人力:2人3天包括調(diào)試
結(jié)算單雷同
結(jié)算單數(shù)據(jù)需要建立在工單數(shù)據(jù)基礎(chǔ)之上
工時人力:2人2天包括調(diào)試
關(guān)于系統(tǒng)基礎(chǔ)數(shù)據(jù),人員,權(quán)限等數(shù)據(jù) 由于三期沿用了 aibol框架 還用的是sqlserver 庫表結(jié)構(gòu)都一樣,建議完全拷貝,但是牽扯到一些與其他數(shù)據(jù)打通的調(diào)試可能需要花費額外的事件(手工配置區(qū)域權(quán)限等)
工時人力:1人2天
FTP文件建議直接拷貝,保留原有目錄結(jié)構(gòu),僅切換ip地址(如果有必要,沒有必要刻意沿用老的ftp服務(wù)器)
工時人力:1人1天
報表數(shù)據(jù)內(nèi)容看上去比較復(fù)雜,單實際內(nèi)容都是已經(jīng)生成好的結(jié)果,建議直接復(fù)制拷貝,并作為老報表展示,而新數(shù)據(jù)新報表則按照3期計劃繼續(xù)開發(fā),完成開發(fā)后可以再行考慮是否將二期數(shù)據(jù)嘗試轉(zhuǎn)換成為3期報表
工時人力:1人3+x天
消息任務(wù)通知等數(shù)據(jù)結(jié)構(gòu)是相同的建議直接遷移,但是由于類型定義不一致需要額外處理
工時人力:1人2天
日志內(nèi)容由于是老系統(tǒng)日志,優(yōu)先級可以靠后,但是其內(nèi)容和結(jié)構(gòu)本質(zhì)還是和三期一樣的,可以遷移,但不是必須
工時人力:1人1天
Q&A
為什么要在二期項目中做接口?不可以直接寫個控制臺導(dǎo)一下數(shù)據(jù)嗎?
因為原有數(shù)據(jù)模型都在二期中有了現(xiàn)有的實現(xiàn),業(yè)務(wù)邏輯和獲取工單的 Service 都是現(xiàn)成的,并且集成了所有的額外數(shù)據(jù),例如操作人等數(shù)據(jù),都是有關(guān)聯(lián)到整個系統(tǒng)的,另外開一個項目可能導(dǎo)致數(shù)據(jù)不確定的遺漏
為什么要分頁還要輸入時間?
為了保證數(shù)據(jù)遷移的可維護性,不能每次都要把數(shù)據(jù)庫全清理了再導(dǎo)一次全部完整的數(shù)據(jù)吧.每次數(shù)據(jù)以修改時間為依據(jù),增量的方式同步到三期的MongoDb數(shù)據(jù)庫中.如果某個單有問題,也可以單獨輸入工單號來單獨導(dǎo)入
風(fēng)險和未知
- 工單牽扯范圍
- 結(jié)算單牽扯范圍
- 用戶區(qū)域與權(quán)限問題
- 4s店
具體實施順序
建議先從基礎(chǔ)數(shù)據(jù)入手,把用戶資料 權(quán)限 等數(shù)據(jù)導(dǎo)入,保證能夠正常登陸
然后逐步導(dǎo)入工單結(jié)算單數(shù)據(jù)
再導(dǎo)入通知消息類數(shù)據(jù)
最后導(dǎo)入報表等數(shù)據(jù)
數(shù)據(jù)遷移計劃表
數(shù)據(jù)內(nèi)容 | 導(dǎo)入方式 | 難點 | 正確狀態(tài) |
---|---|---|---|
基礎(chǔ)用戶數(shù)據(jù) | 完整遷移 | 無 | 可以正常登陸訪問 |
角色,權(quán)限 | 手動 | 累 | 側(cè)邊欄操作等權(quán)限功能正常 |
組織結(jié)構(gòu),4S店 | 手動 | 工單數(shù)據(jù)需要安裝4S店數(shù)據(jù)隔離 | 組織結(jié)構(gòu)正確 |
區(qū)域 | 手動 | 累 | 數(shù)據(jù)隔離派工隔離等功能正常 |
計價策略 | 完整遷移+手動維護區(qū)域部分 | ||
派工策略 | 全新開發(fā)并導(dǎo)入數(shù)據(jù) | ||
工單 | 接口請求轉(zhuǎn)入 | 轉(zhuǎn)換程序開發(fā) | 工單流轉(zhuǎn)正常 |
結(jié)算單 | 接口請求轉(zhuǎn)入 | 轉(zhuǎn)換程序開發(fā) | 結(jié)算單展示正常 |
消息通知 | 完整遷移+類型批處理 | 需要開發(fā)控制臺遍歷程序修改類型 | 正常查看過往消息 |
系統(tǒng)模板 | 移除 |