這是一個Python學習系統,主要提供給成年人,互動方式為對話式,不過里面的對話全部是通過腳本內置好的,用戶通過Enter展示下一句對話,支持語音自動朗讀,

先看架構!

基礎支持層
提供了課程學習回使用到的通用功能模塊
-
圖片展示系統,標準化圖片展示(限制展示圖片在640px*480px范圍內)、點擊放大、多圖切換,以及可定制化功能(比如知識卡片中定制了一個點擊按鈕,點擊后定位到圖片所在的學習背景關系環境)
-
習題系統,提供標準的習題模塊,供互動學習、鞏固練習使用,
-
在線Python編程系統,該系統的核心,分為兩個模塊,編輯器和在線終端,流程是:
1.初始化編程模塊\鏈接websoket,websoket直接鏈接python的docker鏡像,
2.用戶撰寫代碼,點擊運行,將代碼傳遞給后臺,后臺保存為一個py檔案,回傳檔案路徑以及執行命令字串,
3.前端將執行命令字串通過websoket傳遞給python的鏡像運行,運行程序中產生的列印通過websoket源源不斷傳遞給前端,前端接收后展示到在線終端,websocket的接收前端可以控制,當遇到base64格式的資料,前端會快取下來,接收的圖片資料不會展示到終端,而是額外展示,還支持url格式(這種格式主要是html鏈接,可以支持動態互動的效果),
4.識別服務端通過websocket傳遞來的終止符號,判斷列印中是否有報錯,沒有報錯則視為成功,自動斷開websokect,此時用戶不能再對代碼經行編輯,
5.如果列印有報錯,則認為程式執行例外,保持為例外狀態,此時用戶可以二次編輯程式和運行,或者跳過,跳過視為失敗,斷開websocket,
再2-3步中間有一個檢測websocket鏈接的程序,如果websocket是斷開的狀態,則重新鏈接成功后再繼續往下走,
編程系統的完整的狀態機如下

這個狀態機有一個特點Websocket對用戶來說是透明的,最多就一個提示,但不影響操作,市面上很多產品都是Websocket斷開后,整個編程模塊就用不了,需要用戶手動點擊后重新鏈接,
還有一個特點是,如果程式執行報錯,如果用戶沒有點擊跳過而是直接關閉瀏覽器(視為放棄),用戶下次進來是最近的一個最終狀態,資料也是這個狀態的資料,這個特點仁者見仁吧,
課堂學習層
這一層是用戶學習的主要板塊,包括三個功能部分
-
互動學習,作為課堂學習的主要內容,支持的資料型別豐富:文本、圖片、視頻、代碼段、內嵌編程練習器、選題題等,
額外還支持的功能有彈幕系統、知識卡片(用戶學習過后的課程圖片整理,便于用戶復習)、語音朗讀控制, -
鞏固練習,可以理解為做題練習,目前支持單選題,題目以及選項支持文本、圖片、代碼段展示,
-
專案實戰,編程挑戰練習,給定任務要求,用戶根據要求編程,
這塊主要模塊式基礎支持層的在線Python編程系統,
這里有一個提交作業的按鈕,這個按鈕的展示主要有三種狀態:disabled/enable/hide:分別表示按鈕展示但不可點擊/展示且可點擊/隱藏,這三種狀態又和編程系統中的Python代碼運行狀態有關系,
最終形成的狀態機如下

這個狀態機可以結合著在線Python編程系統的狀態機來看,有一點不同就是:專案實踐中用戶不可以“跳過該題”,
通用資訊層
這一層主要包括課程中心、用戶中心、路由和獨立出來的資料/狀態管理器(UI和資料分離),
資料采集
還有一個基礎模塊,資料采集模塊,在三個層都可以使用,支持宣告式埋點和命令式埋點,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/73799.html
標籤:架構設計
上一篇:Scratch3的結構
