更新於 2022年2月18日 軟體工程筆記 portfolio
[專案成就]送報件資料修正輔助系統
壽險送報件千萬~上億筆資料的規範化、批量化修正輔助系統;擔任規劃者與小組長,主導 .NET Core 前後端與資料庫。
- .NET Core
- MS SQL
- Git
- DataTables
概述
每年壽險公司都須將保戶的相關資料送件至中央管理的機構作保存備存,以便國家主計處的統計還有,相關理賠資料的國家備份,以保障國家人民的保險讓中央可以記錄與統計。
因壽險公司保戶的資料須比照相關規格與要求,且規格與要求是會有所變動的,如未符合相關規範規程做調整,壽險公司會被註記,註記過多會受到中央的一些指導調整或懲罰,而送報件資料隨便都是幾千萬或幾億筆,有鑑於此,所以需要開發相關的修正作業修正系統以規範化和批量化的調整相關資料已符合需求填報文件。
整體專案說明
受保護的內容: [專案成就]送報件資料修正輔助系統(專案🔒)
簡介
| 項目 | 說明 |
|---|---|
| 成效 |
|
| 角色 |
擔任規劃者、小組長,主導使用新技術,進行設計、規劃、前後端、資料庫,完成專案。 |
| 專案主要內容 |
|
註:專案內容多屬公司機密,僅截取重要資訊。
使用技術
Front End
HTML5、CSS3、jQuery、Bootstrap 4、RWD
Back End(C# .NET)
.NET Core 3.1 MVC
- Razor Page、PartialView、ComponentView
- DI(依賴注入)、LINQ、ViewModel
- Entity Framework Core、Dapper
- Identity、Authorization、Filter
Database(MS SQL)
- 主鍵、外鍵、Join、View 檢視表
- Try-catch、Transaction
- Stored Procedure、Function
- 定序、Agent、效能調校、DeadLock 處理
版控、雲部署、資安
- Git Diff、差異報告書(HTML)
- 差異檔匯出更新
其他、工具
- 軟體開發工具:Visual Studio、Visual Studio Code
- 開發工具外掛:ReSharper
- 開發流程圖製作:Draw.io
- 辦公室應用類:Word、Excel
過程經歷
技術挑戰:新技術 .NET Core
WindowsIdentity 與跨網域
.Net Core 的物件 WindowsIdentity,一個模擬微軟系統使用者操作的物件,在 Framework 時代此物件在做跨網域(網路上的芳鄰)時,都可以很順利的去使用,而使用 .Net Core 在做此動作的時候,除了寫法改變以外還問題連連,一直無法好好模擬,最後放棄轉彎,同事找到一個可以替換的套件,直接套上,成功!
語系與檔案亂碼
.Net Core 的語系是萬國碼 Unicode,而微軟系統的電腦預設繁中語系是 Big-5,所以在進行文件和檔案操作的時候,輸出的檔案都變成亂碼,後來使用套件多做一層修正完成。
RBAC 權限管理
.Net Core 在做權限管理的時候,我使用 RBAC(基於角色的權限)的權限管理方式並需要連結資料庫去判斷是否可以執行該 Action,我一直找不到相對應的教學,自己也卡了好幾天,好幾夜,最後發文在 FB 相關社團詢問,下方廣大的大神丟了一些連結與教學!東拼西湊下解決了我的問題!👍超讚👍現在回首看看其實不難,哈
…等,以上只大致列出讓我困擾比較久的。
技術挑戰:Git 版本更新報告書、差異更新
可視化異動報告書
產生可視化報告書,使用 Git 撰寫相關程式,代替過去公司都是一人為核對的痛苦更新狀況 → Git diff 產生程式異動對照可視化報告書,真的幫公司超大。
差異檔更新
查了很多種方式,也搜尋到相關的內容知識,終於找到了產生差異檔案的方式,代替過去公司都是人為一一核對的狀況 → 使用 TortoiseGit 只匯出在特定版本中新增或修改過的檔案。
技術挑戰:前端、JQuery 的相關套件 DataTables 等
DataTables 取代 GridView
用 Jquery 套件 DataTables 大量使用去代替 .NET Framework 的 GridView → HTML DataTables 元件基礎使用;除了此基礎以外,還有官方網站的各種功能,解決了很多非常特殊的需求,尤其是那個欄內搜尋功能。
AJAX Fetch 封裝
封裝 AJAX Fetch,盡量統一標準化相關的使用與標頭。
技術挑戰:資安 AppScan 弱掃、Fortify 原碼掃
原碼掃描與弱掃
- 超昂貴的 Fortify 原碼掃之前,我們使用免費的 SonarQube 和 ReSharper 進行相關掃描,大幅減少掃描出來的狀況。
- 昂貴的 AppScan 弱掃,一一處理,大致上網路上找得到相關處理方式。
- 偽造跨網站攻擊(中)和 HttpOnly(低)兩項資安問題會有發生互衝,但其實也不算什麼問題,透過解釋進行處理。
- .NET Core 自帶的
ai_session、ai_user兩個 cookie 會造成弱掃誤判為登出之後未使階段作業失效(高),透過解釋進行處理。
專案挑戰:新技術 .NET Core
本專案算是以公司的角度發展上第一次開始用 .NET Core 3.1 MVC,原本公司的底層都是使用 .NET Framework 4.7 WebForm,而公司的教育訓練則是以公司所設計的底層作為學習開發,對我來說也算是第一次使用 C# 完整做一個收費專案,所以在此專案上開始使用 .NET Core MVC,對於我或是我的組員、公司都是一定程度上的挑戰,也很開心公司也有意願讓我帶領下去使用 .NET Core。
用新技術意味著需要學習,在帶組員學習的過程中,自己必須要先行學會並應用,而在此專案的時空背景情況下,市面上與網路上其實是非常少關於 .NET Core 的相關中文教學,所以相關資訊都是從對岸或是外國帶進來,後來在決定使用此技術框架以前,我就已經準備好了(下班時間)很多線上課程、範本專案、自己整理的一些專案庫、故意去認識一些講座上的朋友,以便後續使用,而課程也都是自己也整體閱讀學習過,在需要的時候再立刻打開查看並使用。
專案挑戰:使用 Git
公司使用 SVN 多年,公司本身並沒有轉換至使用 Git,主要是因為我覺得 Git 的生態圈已經相對的成熟,且相對應教學已經相當完善,所以直接投入專案並使用,讓同事直接實做使用此技術,中途同事也因為操作不當造成專案部分蓋錯損毀,但是都在可承受範圍內,讓同事組員可以真正將此習慣融入實做中並理解 Git Flow 和 GitLab Flow。
專案挑戰:承辦人多、各部門各司其職
甲方公司是台灣知名大的金控公司,每個承辦人各司其職,然後一開會就是 20~40 人對我們 2~4 個工程師瘋狂詢問和提出需求、懷疑、挑戰、抱怨、砲火猛烈、凹你等,開會時間長且滿喜歡開會,白天上班開會幾乎一整天,就直接壓隔天更新好並上版,身為乙方說實話,很多的苦水都只能吞下去,搞得我們六日和下班時間都在趕專案。
後來解決此狀況的方法是配置 1 至 2 個產值較低的組員去兼一點 PM 角色(因為很多時候價金是會被凹到未包含 PM 的錢),專門與這一群人開會並紀錄下相關問題,不熟的地方就說要與資深專職的再討論,遇到一些問題就說會再跟該開發的工程師討論,現在這邊先記錄下問題點,而其他的工程師,趁這段期間盡快的完成專案內容,並且在旁聽(有滿多時候是線上會議)到相關問題的時候,也盡快的進行修正,明確分工作業內容、更妥善的運用時間,避免造成產值高的工程師開發時間被占用。