朱珊珊 徐蘭梅 沙夢(mèng)釩 趙 鵬
(1.安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;2.安徽工業(yè)大學(xué)工程研究院;3.中鋼集團(tuán)馬鞍山礦山研究總院股份有限公司)
礦山安全是礦山企業(yè)穩(wěn)定、持續(xù)、高速發(fā)展的根本保證[1]。非煤礦山企業(yè)注重對(duì)員工的安全培訓(xùn),因?yàn)榉敲旱V山企業(yè)生產(chǎn)條件復(fù)雜,一旦生產(chǎn)中不重視生產(chǎn)管理的安全性,將誘發(fā)嚴(yán)重的生產(chǎn)安全事故[2]。礦山企業(yè)需要牢固樹立安全生產(chǎn)理念,提高勞動(dòng)者安全生產(chǎn)技術(shù)素質(zhì),對(duì)上崗的工作人員必須進(jìn)行強(qiáng)制性安全培訓(xùn),確保全員培訓(xùn)合格,對(duì)生產(chǎn)經(jīng)營(yíng)單位主要負(fù)責(zé)人、安全管理員、特種作業(yè)人員必須持證上崗且定期復(fù)訓(xùn),負(fù)責(zé)人和管理人員安全培訓(xùn)時(shí)長(zhǎng)不得少于48學(xué)時(shí),每年再培訓(xùn)時(shí)長(zhǎng)不低于16學(xué)時(shí)[3]。非煤礦山企業(yè)地理位置分散,不便于統(tǒng)一管理,集中培訓(xùn)對(duì)員工在學(xué)習(xí)時(shí)間和地點(diǎn)有限制。同時(shí)這種多次重復(fù)性的、經(jīng)常性的培訓(xùn)和考試組織難度大,且耗費(fèi)企業(yè)和員工大量人力物力,往往培訓(xùn)效果不理想,考試通過(guò)率低下[4]。
張清華指出,國(guó)企如移動(dòng)、電信、石油等引入網(wǎng)絡(luò)化遠(yuǎn)程培訓(xùn)教學(xué)方式,尤其是新冠疫情的影響,人員不能聚集,在線教學(xué)成為一種主流的教學(xué)培訓(xùn)模式?;赪eb的在線培訓(xùn)考試系統(tǒng)擁有更加快捷方便的優(yōu)勢(shì)。它依托網(wǎng)絡(luò)優(yōu)勢(shì),無(wú)需下載軟件,操作簡(jiǎn)單,能夠降低培訓(xùn)考試的工作量,學(xué)員隨時(shí)隨地參與培訓(xùn),得到了更多企業(yè)和學(xué)員的青睞。這種在線教學(xué)、觀看教學(xué)視頻、在線考試的培訓(xùn)模式,極大地減少了講師培訓(xùn)的工作量。1次錄制視頻,學(xué)員可隨時(shí)隨地觀看,增加了學(xué)員學(xué)習(xí)的積極性,避免了重復(fù)性的培訓(xùn)工作,在線考試簡(jiǎn)化了考試流程、節(jié)省了批改試卷的人力物力財(cái)力。目前,有很多成熟的在線培訓(xùn)模擬考試系統(tǒng),但是這些平臺(tái)針對(duì)的職業(yè)技能不同,對(duì)非煤礦山安全知識(shí)的講解不全面,管理者不能靈活地添加視頻和學(xué)員,不能添加特定學(xué)習(xí)專題,不能靈活編輯試卷內(nèi)容。基于目前這種現(xiàn)狀,搭建1個(gè)通用靈活的非煤礦山企業(yè)在線培訓(xùn)考試系統(tǒng)意義重大。
非煤礦山企業(yè)在線培訓(xùn)考試系統(tǒng)旨在為非煤礦山企業(yè)員工提供課程點(diǎn)播、專題視頻、專業(yè)培訓(xùn)等培訓(xùn)功能,以及個(gè)人培訓(xùn)、個(gè)人考試業(yè)務(wù),為了便于管理,系統(tǒng)主要角色分為管理員、培訓(xùn)人員、非培訓(xùn)人員。
管理員使用服務(wù)端系統(tǒng),管理員的行為主要包括對(duì)培訓(xùn)人員、培訓(xùn)活動(dòng)、培訓(xùn)課程、專家信息、人員信息、視頻庫(kù)的管理,對(duì)視頻專題主頁(yè)、視頻專題人員、專題課程的管理,對(duì)試卷、題庫(kù)進(jìn)行管理。試卷類型包括單選題、判斷題、多選題、填空題、簡(jiǎn)答題,以及試卷評(píng)閱。評(píng)閱主要是對(duì)填空題和簡(jiǎn)答題進(jìn)行打分,其他非主觀題系統(tǒng)可自動(dòng)判分。
培訓(xùn)人員使用瀏覽器端系統(tǒng),在瀏覽器中進(jìn)行在線培訓(xùn)學(xué)習(xí)與考試,主要包括微信掃碼、綁定手機(jī)號(hào)、登錄注冊(cè)、修改個(gè)人信息、課程點(diǎn)播、專題視頻、專業(yè)培訓(xùn)、課程詳情、專家收費(fèi)、發(fā)送留言、查看附件文件、在線考試等。當(dāng)學(xué)員觀看某一活動(dòng)培訓(xùn)視頻的累計(jì)時(shí)長(zhǎng)超過(guò)該活動(dòng)培訓(xùn)合格率,才可進(jìn)行在線考試;也可在移動(dòng)設(shè)備上通過(guò)微信公眾號(hào)打開(kāi)微端系統(tǒng)頁(yè)面進(jìn)行培訓(xùn)學(xué)習(xí)。
非培訓(xùn)人員也可注冊(cè)登錄瀏覽器端系統(tǒng)以及在微信公眾號(hào)中登錄注冊(cè)進(jìn)入系統(tǒng),觀看課程點(diǎn)播的視頻;但只能查看專題視頻和專業(yè)培訓(xùn)的部分信息,如果想加入學(xué)習(xí),需聯(lián)系主辦方。
系統(tǒng)采用MVVM(Model-View-ViewModel)設(shè)計(jì)模式[5],前端采用主流框架Vue.js,后端框架使用.NET Core3.1,采用C#開(kāi)發(fā)語(yǔ)言。前端調(diào)用axios(基于Promise的HTTP客戶端)跨域請(qǐng)求API網(wǎng)關(guān)(Ocelot),通過(guò)Restful(基于http的網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì)風(fēng)格)連接.NET Core接口。每個(gè)請(qǐng)求都需要驗(yàn)證IdentityServer4授權(quán)的身份認(rèn)證token信息,請(qǐng)求并獲取對(duì)應(yīng)微服務(wù)中的數(shù)據(jù)。使用consul管理微服務(wù),能夠?qū)崿F(xiàn)服務(wù)發(fā)現(xiàn)與注冊(cè)、健康檢查和鍵值存儲(chǔ),需要?jiǎng)討B(tài)更新的內(nèi)容也可通過(guò)Consul配置中心進(jìn)行配置,服務(wù)啟動(dòng)后需要Skywalking監(jiān)控服務(wù)是否正常,每個(gè)微服務(wù)都擁有NLog記錄日志。數(shù)據(jù)庫(kù)選用MySQL5.6關(guān)系型數(shù)據(jù)庫(kù),部分?jǐn)?shù)據(jù)存儲(chǔ)在redis內(nèi)存數(shù)據(jù)庫(kù)中,加快讀取速度,通過(guò)Redis Cluster集群部署方式,主從數(shù)據(jù)庫(kù)讀寫分離,這樣做的優(yōu)勢(shì)是可以把系統(tǒng)的功能邏輯和展示頁(yè)面分離開(kāi),互不影響。系統(tǒng)架構(gòu)見(jiàn)圖1。
根據(jù)非煤礦山企業(yè)在線培訓(xùn)考試系統(tǒng)的需求分析,為了提高企業(yè)培訓(xùn)效率,減少人力物力財(cái)力的浪費(fèi),對(duì)系統(tǒng)的功能模塊進(jìn)行劃分,主要分為用戶管理、活動(dòng)管理、課程管理、視頻管理、題庫(kù)管理、試卷管理、在線考試7個(gè)功能模塊。
(1)用戶管理包括人員信息管理和注冊(cè)登錄2個(gè)模塊。人員信息管理包括對(duì)專家信息、培訓(xùn)人員、人員信息、專題人員的增刪改查以及導(dǎo)入;注冊(cè)登錄模塊包括新用戶的注冊(cè),驗(yàn)證短信驗(yàn)證碼,以及賬戶信息的合法性。老用戶的登錄將個(gè)人信息和授權(quán)的token信息存儲(chǔ)為cookie緩存,此后再加載請(qǐng)求時(shí)需要在請(qǐng)求頭中攜帶token信息,登錄系統(tǒng)之后可修改個(gè)人信息,包括用戶頭像、個(gè)人介紹、公司、部門、職業(yè)等,以及微信掃碼登錄獲取用戶微信頭像、昵稱、openID等信息,判斷是否綁定賬戶,未綁定賬戶需創(chuàng)建新賬戶。
(2)活動(dòng)管理包括專題活動(dòng)和培訓(xùn)活動(dòng)。專題活動(dòng)和培訓(xùn)活動(dòng)可以設(shè)置企業(yè)名稱、活動(dòng)名稱、活動(dòng)介紹、活動(dòng)分類,上傳活動(dòng)照片、收費(fèi)標(biāo)準(zhǔn),設(shè)置培訓(xùn)對(duì)象,除了增刪改查操作外,還有其他功能,活動(dòng)復(fù)制、關(guān)聯(lián)專家、公告詳情、查看留言、上傳附件,對(duì)活動(dòng)進(jìn)行開(kāi)啟/關(guān)閉和顯示/隱藏。用戶登錄系統(tǒng)后,可學(xué)習(xí)課程點(diǎn)播中的視頻。當(dāng)服務(wù)端導(dǎo)入學(xué)員信息或添加學(xué)員信息后,學(xué)員才能加入專題視頻和專業(yè)培訓(xùn)的學(xué)習(xí),獲取專題視頻和專業(yè)培訓(xùn)中的學(xué)習(xí)視頻以及附件文件,查看培訓(xùn)介紹,發(fā)送留言信息,查看授課老師、主辦方和學(xué)員,否則需要聯(lián)系培訓(xùn)主辦方。
(3)課程管理包括專題課程和培訓(xùn)課程。專題課程和培訓(xùn)課程分別是對(duì)專題活動(dòng)和培訓(xùn)活動(dòng)設(shè)置的課程。在增加活動(dòng)課程時(shí),需要對(duì)活動(dòng)添加相關(guān)課程視頻、設(shè)置課程的學(xué)時(shí)以及對(duì)課程排序,也可對(duì)課程進(jìn)行增刪改查。
(4)視頻管理包括服務(wù)端的管理和視頻播放兩部分,服務(wù)端對(duì)視頻進(jìn)行增刪改查,視頻增加時(shí)添加視頻名稱、作者信息、視頻分類、視頻價(jià)格、會(huì)議名稱、會(huì)議主辦方、視頻標(biāo)簽、視頻描述、視頻封面等信息,以及上傳視頻文件。視頻播放包括視頻點(diǎn)播、專題視頻、專業(yè)培訓(xùn)視頻的播放。除點(diǎn)播外,其他視頻播放頁(yè)面需要上傳視頻進(jìn)度,禁止用戶拖放進(jìn)度條,禁止鼠標(biāo)右鍵行為,鼠標(biāo)離開(kāi)頁(yè)面時(shí)暫停視頻播放,也可以查看演講嘉賓及其詳細(xì)介紹,獲得相關(guān)推薦視頻。視頻播放采用流媒體播放技術(shù)。
(5)題庫(kù)管理包括對(duì)試題進(jìn)行增刪改查,添加試題的企業(yè)名稱、題目類別、題目類型、題干信息、解析、難度等級(jí)。題目類型分為客觀題和主觀題,客觀題包括單選題、多選題、判斷題,主觀題包括填空題、簡(jiǎn)答題。
(6)根據(jù)培訓(xùn)活動(dòng)添加試卷,包括考試時(shí)長(zhǎng)、開(kāi)始日期、結(jié)束日期、允許考試次數(shù)。每種類型的題目不限制次數(shù),可根據(jù)需要編輯試卷的題目類型,組成符合要求的試卷。
(7)當(dāng)培訓(xùn)學(xué)習(xí)的進(jìn)度達(dá)到管理端設(shè)定的培訓(xùn)合格百分比,就可參加在線考試,在線考試包括考試倒計(jì)時(shí)和自動(dòng)收卷功能,在倒計(jì)時(shí)結(jié)束前可提前交卷,在規(guī)定的允許考試次數(shù)內(nèi),可多次進(jìn)行考試。
系統(tǒng)在瀏覽器端的功能設(shè)計(jì)見(jiàn)圖2。
為防止他人惡意盜取視頻,提高播放流暢度,減小網(wǎng)絡(luò)下載視頻的壓力,利用流媒體技術(shù)傳輸多媒體視頻文件,使用HLS(HTTP Live Streaming)將媒體數(shù)據(jù)流分割成連續(xù)的TS格式文件,視頻編碼格式為H264。首先通過(guò)FFmpeg(開(kāi)源多媒體視頻處理軟件)運(yùn)行批處理命令,將MP4格式的視頻轉(zhuǎn)為m3u8文件和ts視頻片段,m3u8文件是服務(wù)端建立的分片TS文件的索引,瀏覽器端請(qǐng)求并解析服務(wù)端的m3u8文件,獲取分片信息后,按順序向服務(wù)端請(qǐng)求下載TS分片的文件,實(shí)現(xiàn)視頻的完整播放。
視頻播放時(shí)先獲取當(dāng)前視頻歷史觀看時(shí)長(zhǎng)和視頻總時(shí)長(zhǎng),并設(shè)置每秒加1的定時(shí)器,每5 s上傳1次觀看進(jìn)度,包括觀看時(shí)長(zhǎng)、播放頁(yè)面停留的時(shí)長(zhǎng),事件onPlayerTimeupdate中的player.cache_.currentTime獲取到播放時(shí)間。當(dāng)用戶拖動(dòng)進(jìn)度條快進(jìn)時(shí),判斷進(jìn)度跨越是否超過(guò)1 s,若大于1 s視為快進(jìn)事件,此時(shí)將進(jìn)度player.currentTime設(shè)為上一秒觀看的進(jìn)度,達(dá)到禁止拖動(dòng)的效果;通過(guò)@contextmenu.prevent來(lái)阻止鼠標(biāo)右鍵的行為;視頻播放頁(yè)面全局檢測(cè)鼠標(biāo)的位置,鼠標(biāo)移動(dòng)獲取clientX和clientY,當(dāng)鼠標(biāo)離開(kāi)頁(yè)面時(shí)(clientX或clientY為0),暫停視頻播放,彈窗告訴用戶不要離開(kāi)視頻頁(yè)面。
系統(tǒng)的服務(wù)端使用.NET Core,.NET Core是1個(gè)跨平臺(tái)的高性能開(kāi)源框架,提供類型系統(tǒng)、程序集加載、垃圾回收器等,它比.NET Framework優(yōu)秀的地方在于.NET Framework支持Windows和Windows Server,而.NET Core還支持macOS和Linux。.NET Core內(nèi)置依賴注入,生成webui和webapi的統(tǒng)一場(chǎng)景,擁有輕量級(jí)和模塊化的HTTP請(qǐng)求管道(中間件),能夠在IIS、nginx、Apache、docker上運(yùn)行或在自宿主(selfhost)的進(jìn)程中運(yùn)行,能夠簡(jiǎn)化現(xiàn)代web開(kāi)發(fā)。
數(shù)據(jù)庫(kù)是在線培訓(xùn)考試系統(tǒng)的核心。采用MySQL關(guān)系型數(shù)據(jù)庫(kù),通過(guò)Redis Cluster集群部署方式,主從數(shù)據(jù)庫(kù)讀寫分離。系統(tǒng)中的實(shí)體主要包括培訓(xùn)人員、培訓(xùn)活動(dòng)、培訓(xùn)課程、培訓(xùn)視頻、試卷等,實(shí)體間的關(guān)系為一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多(圖3)。
系統(tǒng)采用前后端分離技術(shù),基于服務(wù)端、瀏覽器端、移動(dòng)端3種平臺(tái)的功能,實(shí)現(xiàn)在線培訓(xùn)、在線考試功能。培訓(xùn)視頻采用基于HLS的流媒體播放技術(shù),流傳輸適應(yīng)性強(qiáng),自適應(yīng)碼流。服務(wù)端采用跨平臺(tái)的.NET Core框架,框架部署安全可靠,可大幅度提升用戶體驗(yàn)。瀏覽器端不需要安裝任何插件,通過(guò)網(wǎng)頁(yè)地址欄輸入網(wǎng)址進(jìn)入系統(tǒng),大大減少了用戶的操作難度,移動(dòng)端實(shí)現(xiàn)和瀏覽器端一致的功能,攜帶方便,操作簡(jiǎn)潔,符合當(dāng)下移動(dòng)互聯(lián)網(wǎng)時(shí)代的需求。基于web的非煤礦山企業(yè)在線培訓(xùn)考試系統(tǒng)滿足了通用培訓(xùn)考試的功能要求,對(duì)提高非煤礦山行業(yè)的技能水平和安全性起到一定的積極作用。