朱珊珊 徐蘭梅 沙夢釩 趙 鵬
(1.安徽工業大學計算機科學與技術學院;2.安徽工業大學工程研究院;3.中鋼集團馬鞍山礦山研究總院股份有限公司)
礦山安全是礦山企業穩定、持續、高速發展的根本保證[1]。非煤礦山企業注重對員工的安全培訓,因為非煤礦山企業生產條件復雜,一旦生產中不重視生產管理的安全性,將誘發嚴重的生產安全事故[2]。礦山企業需要牢固樹立安全生產理念,提高勞動者安全生產技術素質,對上崗的工作人員必須進行強制性安全培訓,確保全員培訓合格,對生產經營單位主要負責人、安全管理員、特種作業人員必須持證上崗且定期復訓,負責人和管理人員安全培訓時長不得少于48學時,每年再培訓時長不低于16學時[3]。非煤礦山企業地理位置分散,不便于統一管理,集中培訓對員工在學習時間和地點有限制。同時這種多次重復性的、經常性的培訓和考試組織難度大,且耗費企業和員工大量人力物力,往往培訓效果不理想,考試通過率低下[4]。
張清華指出,國企如移動、電信、石油等引入網絡化遠程培訓教學方式,尤其是新冠疫情的影響,人員不能聚集,在線教學成為一種主流的教學培訓模式。基于Web的在線培訓考試系統擁有更加快捷方便的優勢。它依托網絡優勢,無需下載軟件,操作簡單,能夠降低培訓考試的工作量,學員隨時隨地參與培訓,得到了更多企業和學員的青睞。這種在線教學、觀看教學視頻、在線考試的培訓模式,極大地減少了講師培訓的工作量。1次錄制視頻,學員可隨時隨地觀看,增加了學員學習的積極性,避免了重復性的培訓工作,在線考試簡化了考試流程、節省了批改試卷的人力物力財力。目前,有很多成熟的在線培訓模擬考試系統,但是這些平臺針對的職業技能不同,對非煤礦山安全知識的講解不全面,管理者不能靈活地添加視頻和學員,不能添加特定學習專題,不能靈活編輯試卷內容。基于目前這種現狀,搭建1個通用靈活的非煤礦山企業在線培訓考試系統意義重大。
非煤礦山企業在線培訓考試系統旨在為非煤礦山企業員工提供課程點播、專題視頻、專業培訓等培訓功能,以及個人培訓、個人考試業務,為了便于管理,系統主要角色分為管理員、培訓人員、非培訓人員。
管理員使用服務端系統,管理員的行為主要包括對培訓人員、培訓活動、培訓課程、專家信息、人員信息、視頻庫的管理,對視頻專題主頁、視頻專題人員、專題課程的管理,對試卷、題庫進行管理。試卷類型包括單選題、判斷題、多選題、填空題、簡答題,以及試卷評閱。評閱主要是對填空題和簡答題進行打分,其他非主觀題系統可自動判分。
培訓人員使用瀏覽器端系統,在瀏覽器中進行在線培訓學習與考試,主要包括微信掃碼、綁定手機號、登錄注冊、修改個人信息、課程點播、專題視頻、專業培訓、課程詳情、專家收費、發送留言、查看附件文件、在線考試等。當學員觀看某一活動培訓視頻的累計時長超過該活動培訓合格率,才可進行在線考試;也可在移動設備上通過微信公眾號打開微端系統頁面進行培訓學習。
非培訓人員也可注冊登錄瀏覽器端系統以及在微信公眾號中登錄注冊進入系統,觀看課程點播的視頻;但只能查看專題視頻和專業培訓的部分信息,如果想加入學習,需聯系主辦方。
系統采用MVVM(Model-View-ViewModel)設計模式[5],前端采用主流框架Vue.js,后端框架使用.NET Core3.1,采用C#開發語言。前端調用axios(基于Promise的HTTP客戶端)跨域請求API網關(Ocelot),通過Restful(基于http的網絡應用程序的設計風格)連接.NET Core接口。每個請求都需要驗證IdentityServer4授權的身份認證token信息,請求并獲取對應微服務中的數據。使用consul管理微服務,能夠實現服務發現與注冊、健康檢查和鍵值存儲,需要動態更新的內容也可通過Consul配置中心進行配置,服務啟動后需要Skywalking監控服務是否正常,每個微服務都擁有NLog記錄日志。數據庫選用MySQL5.6關系型數據庫,部分數據存儲在redis內存數據庫中,加快讀取速度,通過Redis Cluster集群部署方式,主從數據庫讀寫分離,這樣做的優勢是可以把系統的功能邏輯和展示頁面分離開,互不影響。系統架構見圖1。

根據非煤礦山企業在線培訓考試系統的需求分析,為了提高企業培訓效率,減少人力物力財力的浪費,對系統的功能模塊進行劃分,主要分為用戶管理、活動管理、課程管理、視頻管理、題庫管理、試卷管理、在線考試7個功能模塊。
(1)用戶管理包括人員信息管理和注冊登錄2個模塊。人員信息管理包括對專家信息、培訓人員、人員信息、專題人員的增刪改查以及導入;注冊登錄模塊包括新用戶的注冊,驗證短信驗證碼,以及賬戶信息的合法性。老用戶的登錄將個人信息和授權的token信息存儲為cookie緩存,此后再加載請求時需要在請求頭中攜帶token信息,登錄系統之后可修改個人信息,包括用戶頭像、個人介紹、公司、部門、職業等,以及微信掃碼登錄獲取用戶微信頭像、昵稱、openID等信息,判斷是否綁定賬戶,未綁定賬戶需創建新賬戶。
(2)活動管理包括專題活動和培訓活動。專題活動和培訓活動可以設置企業名稱、活動名稱、活動介紹、活動分類,上傳活動照片、收費標準,設置培訓對象,除了增刪改查操作外,還有其他功能,活動復制、關聯專家、公告詳情、查看留言、上傳附件,對活動進行開啟/關閉和顯示/隱藏。用戶登錄系統后,可學習課程點播中的視頻。當服務端導入學員信息或添加學員信息后,學員才能加入專題視頻和專業培訓的學習,獲取專題視頻和專業培訓中的學習視頻以及附件文件,查看培訓介紹,發送留言信息,查看授課老師、主辦方和學員,否則需要聯系培訓主辦方。
(3)課程管理包括專題課程和培訓課程。專題課程和培訓課程分別是對專題活動和培訓活動設置的課程。在增加活動課程時,需要對活動添加相關課程視頻、設置課程的學時以及對課程排序,也可對課程進行增刪改查。
(4)視頻管理包括服務端的管理和視頻播放兩部分,服務端對視頻進行增刪改查,視頻增加時添加視頻名稱、作者信息、視頻分類、視頻價格、會議名稱、會議主辦方、視頻標簽、視頻描述、視頻封面等信息,以及上傳視頻文件。視頻播放包括視頻點播、專題視頻、專業培訓視頻的播放。除點播外,其他視頻播放頁面需要上傳視頻進度,禁止用戶拖放進度條,禁止鼠標右鍵行為,鼠標離開頁面時暫停視頻播放,也可以查看演講嘉賓及其詳細介紹,獲得相關推薦視頻。視頻播放采用流媒體播放技術。

(5)題庫管理包括對試題進行增刪改查,添加試題的企業名稱、題目類別、題目類型、題干信息、解析、難度等級。題目類型分為客觀題和主觀題,客觀題包括單選題、多選題、判斷題,主觀題包括填空題、簡答題。
(6)根據培訓活動添加試卷,包括考試時長、開始日期、結束日期、允許考試次數。每種類型的題目不限制次數,可根據需要編輯試卷的題目類型,組成符合要求的試卷。
(7)當培訓學習的進度達到管理端設定的培訓合格百分比,就可參加在線考試,在線考試包括考試倒計時和自動收卷功能,在倒計時結束前可提前交卷,在規定的允許考試次數內,可多次進行考試。
系統在瀏覽器端的功能設計見圖2。
為防止他人惡意盜取視頻,提高播放流暢度,減小網絡下載視頻的壓力,利用流媒體技術傳輸多媒體視頻文件,使用HLS(HTTP Live Streaming)將媒體數據流分割成連續的TS格式文件,視頻編碼格式為H264。首先通過FFmpeg(開源多媒體視頻處理軟件)運行批處理命令,將MP4格式的視頻轉為m3u8文件和ts視頻片段,m3u8文件是服務端建立的分片TS文件的索引,瀏覽器端請求并解析服務端的m3u8文件,獲取分片信息后,按順序向服務端請求下載TS分片的文件,實現視頻的完整播放。
視頻播放時先獲取當前視頻歷史觀看時長和視頻總時長,并設置每秒加1的定時器,每5 s上傳1次觀看進度,包括觀看時長、播放頁面停留的時長,事件onPlayerTimeupdate中的player.cache_.currentTime獲取到播放時間。當用戶拖動進度條快進時,判斷進度跨越是否超過1 s,若大于1 s視為快進事件,此時將進度player.currentTime設為上一秒觀看的進度,達到禁止拖動的效果;通過@contextmenu.prevent來阻止鼠標右鍵的行為;視頻播放頁面全局檢測鼠標的位置,鼠標移動獲取clientX和clientY,當鼠標離開頁面時(clientX或clientY為0),暫停視頻播放,彈窗告訴用戶不要離開視頻頁面。
系統的服務端使用.NET Core,.NET Core是1個跨平臺的高性能開源框架,提供類型系統、程序集加載、垃圾回收器等,它比.NET Framework優秀的地方在于.NET Framework支持Windows和Windows Server,而.NET Core還支持macOS和Linux。.NET Core內置依賴注入,生成webui和webapi的統一場景,擁有輕量級和模塊化的HTTP請求管道(中間件),能夠在IIS、nginx、Apache、docker上運行或在自宿主(selfhost)的進程中運行,能夠簡化現代web開發。
數據庫是在線培訓考試系統的核心。采用MySQL關系型數據庫,通過Redis Cluster集群部署方式,主從數據庫讀寫分離。系統中的實體主要包括培訓人員、培訓活動、培訓課程、培訓視頻、試卷等,實體間的關系為一對一、一對多、多對一、多對多(圖3)。

系統采用前后端分離技術,基于服務端、瀏覽器端、移動端3種平臺的功能,實現在線培訓、在線考試功能。培訓視頻采用基于HLS的流媒體播放技術,流傳輸適應性強,自適應碼流。服務端采用跨平臺的.NET Core框架,框架部署安全可靠,可大幅度提升用戶體驗。瀏覽器端不需要安裝任何插件,通過網頁地址欄輸入網址進入系統,大大減少了用戶的操作難度,移動端實現和瀏覽器端一致的功能,攜帶方便,操作簡潔,符合當下移動互聯網時代的需求。基于web的非煤礦山企業在線培訓考試系統滿足了通用培訓考試的功能要求,對提高非煤礦山行業的技能水平和安全性起到一定的積極作用。