劉 韜,都洪韜,丁潤東,吳芮豪,許鑫,崔煦晨,王 亞
(阜陽師范大學(xué) 計算機與信息工程學(xué)院,安徽 阜陽 236037)
關(guān)鍵字:食品溯源;云平臺;QR Code;微信小程序
食品安全不僅關(guān)系人民群眾的身體健康,而且對經(jīng)濟發(fā)展有著重大影響[1]。食品行業(yè)在生產(chǎn)、銷售、物流等各個環(huán)節(jié)的執(zhí)行標準不統(tǒng)一、信息不暢通,給食品溯源造成了困難[2]。但是在互聯(lián)網(wǎng)的環(huán)境下,將食品行業(yè)和信息技術(shù)相結(jié)合,不僅可實現(xiàn)資源價值利用的最大化[3],也可以輔助食品溯源過程,提升對食品安全的信心和監(jiān)管。隨著智能手機的普及,二維碼在日常生活中的應(yīng)用非常廣泛,在移動支付、身份識別、電子票務(wù)等領(lǐng)域帶來了極大的便利,深受人們歡迎。將二維碼技術(shù)應(yīng)用在食品溯源系統(tǒng)中,不僅能夠快速查詢到食品信息和質(zhì)量狀況,而且實現(xiàn)了溯源、防偽二合一的功能,改變了傳統(tǒng)的食品質(zhì)量查詢模式,避免銷售人員虛構(gòu)食品質(zhì)量情況而誤導(dǎo)消費者事件的發(fā)生,提高食品質(zhì)量的可信度。因此設(shè)計一套食品溯源系統(tǒng)就有非常迫切的需求[4,5]。
由于移動互聯(lián)網(wǎng)的發(fā)展,人們可以很便利地獲取各種信息資源。食品企業(yè)可以利用信息手段,為消費者提供食品的各種信息,達到使消費者放心購買的目的,同時也可以向消費者展示企業(yè)的風(fēng)采,提高企業(yè)知名度[6,7]。本文的研究背景是基于與阜陽市尚源公司開展的產(chǎn)學(xué)研合作項目,通過與該食品企業(yè)深入溝通交流,對企業(yè)在食品溯源方面展開需求分析。
為了確保食品生產(chǎn)、銷售、物流環(huán)節(jié)信息的暢通,滿足企業(yè)數(shù)據(jù)管理的需求,需要搭建基于騰訊云服務(wù)器的企業(yè)云平臺,將企業(yè)和食品的基本信息存放在云平臺上,實現(xiàn)信息的互通共享。為了方便消費者使用,選擇以微信平臺開發(fā)設(shè)計基于二維碼技術(shù)的溯源系統(tǒng)。消費者無需下載額外應(yīng)用程序,只需要在手機上打開溯源小程序掃描二維碼食品標簽,即可快速便利地獲取云平臺中食品的銷售、物流、生產(chǎn)等基本信息,實現(xiàn)對食品安全信息的及時查詢及跟蹤[8]。食品溯源系統(tǒng)為消費者提供了追溯食品信息的平臺,也為企業(yè)提供展示食品及企業(yè)文化的平臺,為消費者和企業(yè)之間提供了良好的溝通交流平臺。
食品溯源系統(tǒng)分為前端界面和后端服務(wù)。前端界面使用微信小程序編程語言和開發(fā)工具進行開發(fā)。微信開發(fā)平臺為用戶提供了一套實用的API,方便開發(fā)者的使用,開發(fā)流程簡單,文檔充分。同時微信也推出了小程序開發(fā)工具,使得開發(fā)工作更加便利。利用微信開發(fā)平臺搭建系統(tǒng)后,用戶無需下載額外應(yīng)用程序,方便用戶使用[9-11]。
企業(yè)云平臺需要提供具有穩(wěn)定性及高性能的服務(wù)。Ubuntu 操作系統(tǒng)有較為完善的服務(wù)平臺,可以隨時為開發(fā)者提供幫助。Nginx 是一個高性能的HTTP 和反向代理負載均衡Web 服務(wù)器[12]。在性能上,Nginx 支持更多的并發(fā)連接,能夠達到高效的訪問速度;在安裝和配置上,簡單靈活,并且支持熱部署,無需重啟服務(wù)即可升級軟件版本或者修改配置[13-15]。MySQL 是關(guān)系型數(shù)據(jù)庫管理系統(tǒng),體積小,速度快,并且其代碼開源,可以大大降低總體開發(fā)成本[16]?;谏鲜黾夹g(shù)特點考慮,在騰訊云服務(wù)器上選用Ubuntu18.04 操作系統(tǒng),搭建Nginx 反向代理服務(wù)器和MySQL 數(shù)據(jù)庫服務(wù),構(gòu)建云平臺基礎(chǔ)環(huán)境,將后端服務(wù)部署在云平臺上。
為了使溯源系統(tǒng)更加輕便靈活,采用Python+Flask 框架搭建后端系統(tǒng),為溯源小程序提供數(shù)據(jù)支持。Flask 是Python 語言編寫的Web 框架,優(yōu)點是框架輕量、靈活多變,但相較于Spring Boot等Java Web 框架,其功能不夠完善,還需要開發(fā)者做更多的工作[17-19]。
在眾多二維碼類型中,QR Code 作為矩陣型編碼的一種,較為常見。由于其具備以下特點,該編碼也得到了廣泛應(yīng)用[20]。第一,其存儲信息靈活多樣。信息格式和長度可以根據(jù)用戶需求進行自定義;存儲信息可以是文本、圖片、音視頻等多種類型。第二,其生成的二維碼讀取速度較快。第三,編碼具有健壯性。
在圖1 中,方塊1、2、3 為定位區(qū)域,主要用于探測圖形,實現(xiàn)對二維碼的快速定位,提升了其讀取速度;方塊4 為矯正區(qū)域,主要用于圖形形狀矯正。即當(dāng)二維碼圖形發(fā)生畸變的情況下,通過矯正區(qū)域,可以使得正確讀取信息,以提升識別成功率?;赒R Code 的以上優(yōu)勢[21],本文的食品溯源系統(tǒng)采用了該編碼技術(shù)生成食品的二維碼,用來追蹤其生產(chǎn)、物流、銷售等過程。
圖1 QR Code 二維碼
食品溯源系統(tǒng)總體架構(gòu)由客戶端和服務(wù)端兩部分組成,如圖2 所示。
圖2 系統(tǒng)總體架構(gòu)
食品企業(yè)將數(shù)據(jù)后端系統(tǒng)部署在自建云平臺上構(gòu)建整個服務(wù)端系統(tǒng)為客戶端提供數(shù)據(jù)支持。消費者在使用溯源系統(tǒng)過程中,客戶端與服務(wù)端進行接口通信獲取相應(yīng)數(shù)據(jù),并將數(shù)據(jù)展示給消費者。
食品溯源系統(tǒng)的客戶端和服務(wù)端的詳細架構(gòu)如圖3 所示。其中,為方便消費者使用,客戶端使用微信小程序開發(fā),其開發(fā)框架分為兩層,分別為邏輯層和視圖層,如圖3(a)所示。服務(wù)端由三個部分組成:分別為Nginx 服務(wù)器、MySQL 數(shù)據(jù)庫服務(wù)和后端系統(tǒng),其中Nginx 服務(wù)器和MySQL數(shù)據(jù)庫服務(wù)組成了云平臺,如圖3(b)所示。
圖3 系統(tǒng)詳細架構(gòu)
圖3(a)邏輯層采用JavaScript 語言開發(fā),主要負責(zé)實現(xiàn)數(shù)據(jù)請求、修改等邏輯行為。圖3(a)視圖層由WXML 和WXSS 語言進行開發(fā),其中WXML 負責(zé)頁面編寫,而WXSS 負責(zé)頁面布局控制。溯源系統(tǒng)客戶端通過MINA 架構(gòu)來確保邏輯層和視圖層數(shù)據(jù)同步。
圖3(b)云平臺由Nginx 服務(wù)器和MySQL 數(shù)據(jù)庫服務(wù)組成。其中,Nginx 服務(wù)器提供反向代理服務(wù),負責(zé)均衡負載和資源存放。而云平臺中的MySQL 數(shù)據(jù)庫服務(wù)負責(zé)將數(shù)據(jù)持久化。圖3(b)中后端系統(tǒng)采用Python+Flask 框架進行構(gòu)建,部署在云平臺上,公開RESTful 接口地址和客戶端通信。后端系統(tǒng)和MySQL 數(shù)據(jù)庫服務(wù)通信,用來查詢數(shù)據(jù)并將數(shù)據(jù)持久化。
食品溯源系統(tǒng)主要承擔(dān)兩個業(yè)務(wù)責(zé)任,其一,滿足消費者對食品信息查詢的需求;其二,滿足企業(yè)宣傳和推廣的需求。結(jié)合面向企業(yè)和面向用戶兩個需求點,將溯源系統(tǒng)客戶端劃分為企業(yè)詳情信息模塊、食品生產(chǎn)信息模塊、食品運輸信息模塊以及食品銷售信息模塊。而服務(wù)端為客戶端提供了數(shù)據(jù)支持。系統(tǒng)功能模塊圖如圖4 所示。
圖4 溯源系統(tǒng)功能模塊圖
食品溯源系統(tǒng)流程可分為溯源數(shù)據(jù)采集及溯源系統(tǒng)查詢信息兩個部分。溯源數(shù)據(jù)的采集流程為:首先,食品生產(chǎn)完成后進行生產(chǎn)信息的采集;其次,將食品打包運輸采集運輸信息;最后,采集食品的銷售信息。而消費者使用溯源系統(tǒng)的流程為:首先,消費者通過微信搜索到溯源系統(tǒng)小程序客戶端,掃描帶有二維碼的食品標簽;其次,客戶端發(fā)送請求到服務(wù)端,當(dāng)服務(wù)端接收到帶有標識數(shù)據(jù)的請求后,根據(jù)食品標簽去數(shù)據(jù)庫中查詢相關(guān)信息,然后將數(shù)據(jù)庫返回的數(shù)據(jù)經(jīng)過封裝后返回給客戶端;最后,客戶端獲得服務(wù)端返回的數(shù)據(jù)信息后會自動跳轉(zhuǎn)進入主界面,消費者可以在客戶端主界面按照需要點擊相關(guān)查詢按鈕查看企業(yè)信息、生產(chǎn)信息、運輸信息、銷售信息。
消費者主要通過食品企業(yè)提供的食品二維碼標簽,如圖5 所示,獲取企業(yè)詳情信息、食品生產(chǎn)信息、食品運輸信息、食品銷售信息等信息。
圖5 食品二維碼標簽
經(jīng)過調(diào)研企業(yè)實際需求,確定食品標簽碼需要包含以下字段信息,分別為生產(chǎn)企業(yè)名稱、品類名稱、食品名稱、生產(chǎn)日期、保質(zhì)期、批次,如圖5(a)所示。食品企業(yè)相關(guān)操作人員通過標簽打印機打印出帶有QR Code 的食品標簽,如圖5(b)所示。隨后,將其貼在食品的外包裝上,并將貨物打包經(jīng)過物流運輸?shù)礁鱾€銷售網(wǎng)點進行銷售。通過貼上帶有QR Code 的食品標簽給同一批次的食品提供了可以追溯的標識。
消費者使用客戶端掃描食品包裝袋上食品二維碼標簽,即可進入食品溯源系統(tǒng)界面。其系統(tǒng)界面主要分為兩大塊,分別為溯源查詢類界面和公司詳情類界面,詳情如圖6 所示。
圖6(a)是系統(tǒng)界面首頁,提供兩個入口分別為“進入溯源”和“公司詳情”。公司詳情頁提供公司的公司簡介和產(chǎn)品展示。溯源信息首頁圖6(b)展示了食品的品類、產(chǎn)地、產(chǎn)品信息、物流信息和銷售信息。圖6(c)是產(chǎn)品信息頁,展示了食品的生產(chǎn)企業(yè)、品類名稱、產(chǎn)品名稱、生產(chǎn)日期、保質(zhì)期和批次信息。物流信息頁圖6(d)展示了食品運輸過程中的發(fā)貨單位、發(fā)貨區(qū)域、發(fā)貨時間、收貨單位、收貨區(qū)域和收貨時間信息。圖6(e)是銷售信息頁,展示了食品的銷售商和銷售價格信息。
圖6 溯源系統(tǒng)客戶端界面圖
針對食品安全和監(jiān)管問題,利用“互聯(lián)網(wǎng)+食品”的模式去尋找解決方案。設(shè)計了基于QRCode食品二維碼標簽,開發(fā)實現(xiàn)了食品溯源系統(tǒng),該系統(tǒng)由客戶端和服務(wù)端組成。為方便消費者使用,采用微信小程序技術(shù)設(shè)計客戶端應(yīng)用。為了給客戶端提供數(shù)據(jù)支持,由云平臺和后端系統(tǒng)組成服務(wù)端。該系統(tǒng)兼顧了消費者和企業(yè)經(jīng)營者利益,消費者使用本系統(tǒng)可以實現(xiàn)對食品信息的追溯,增強了對食品安全的信心;企業(yè)經(jīng)營者使用本系統(tǒng)可以及時記錄食品各環(huán)節(jié)的信息,提升了對食品質(zhì)量的監(jiān)管和企業(yè)知名度。