---
# System prepended metadata

title: 軟體工程-親師生互動平台

---

# 軟體工程
<!-- [0916 會議記錄](https://hackmd.io/@honor2016tw/SJ5EijSpC)
 -->
## 需求規格書
(09/25更新)

### 1. 簡介
1.1 專案大綱
	本系統旨在提升教學現場的互動性與個性化學習，通過即時回饋和數據分析來調整教學策略，幫助教師更好地理解學生的學習情況，並針對學生個別需求進行調整。
    
1.2 專案目標
	收集現代學生的語料，以便未來研究青少年的情感與心理狀態。
	提供即時回饋，幫助學生修正錯誤並提升學習效果。
	實現學生與教師、學生與學生之間的互動，通過多模態輸入，方便應對不同的教學場景。
    
1.3 目標用戶
    輔導老師、學生、系統管理員

1.4 功能需求
	個性化學習： 根據每個學生的學習討論與風格，可利用生成式AI給予課堂回饋、整理。
	互動性： 系統能夠促進課堂環境中的互動，教師和學生可以通過系統，縮短溝通時間，促進討論與指導。
	數據分析： 根據學生的學習表現，為教師提供分析報告，幫助教師調整教學策略。
	多模態輸入： 支持文字、語音、圖像(目前列為額外功能)等不同形式的輸入，以應對不同的學習場景。
    
### 2. 整體描述
2.1 使用者功能：
### 教師
```mermaid
graph TD
   Login(0. 登入)
   LandingPage(1. 課程總覽頁面) 
   ClassPage(2. 課程頁面)
   TotalLLMPage(3. 統一大語言模型互動視窗)
   TotalPublishPage(4. 統一發布頁面)
   ProblemReportPage(5. 問題回報頁面)
   WeekFilePage(6. 課程文件頁面)
   HomeworkPage(7. 作業繳交統計頁面)
   DashboardPage(8. 學習狀況統計表頁面)
   LLMPage(9. 大語言模型互動視窗)
   PublishPage(10. 發布頁面)
   LLMSidebar(大語言模型互動側欄)
   ChatHistorySidebar(對話紀錄側欄)
   ChatHistorySidebar1(對話紀錄側欄)

   HomeworkHistorySidebar(作業紀錄側欄)

   
   
   Login --- LandingPage
   LandingPage --- ClassPage
   LandingPage --- TotalLLMPage
   LandingPage --- TotalPublishPage
   LandingPage --- ProblemReportPage
   ClassPage -- same --- WeekFilePage
   ClassPage --- HomeworkPage
   ClassPage --- DashboardPage
   ClassPage --- LLMPage
   WeekFilePage --- PublishPage
   LLMPage --- ChatHistorySidebar
   TotalLLMPage --- ChatHistorySidebar1
   DashboardPage --- LLMSidebar
   HomeworkPage --- HomeworkHistorySidebar
```
    1. 教師的課程總覽頁面要簡潔，課堂進入按鈕只有課堂標題與顯著提示(背景圖片)
    2. 頁面能針對未來最接近當天的課程做總覽排序(接近的放前面、過去的放後面)
    3. 教師能標記重要課程，讓此課程按鈕始終保持在最前面
    4. 有置頂的公告區
    5. 有自動根據週數切換的每週課程分頁
    6. 公告區以及課程分頁都有按鈕可以直接進行編輯
    7. 發布內容支援 Markdown、多類文檔上傳
    8. 可以開作業繳交區、討論區、投票區這三種功能
    9. 課堂頁面有按鈕可以進入視窗與大型語言模型互動
    10. 與大語言模型對話的目的在於將與學生進行互動的大語言模型塑造成教師想要的角色(Create GPT)
    11. 能夠與模型進行多模態互動，能上傳文字、音檔、文件(pdf,jpg)
    12. 一開始進入的互動視窗，即為當週課程的互動視窗，對話的內容會轉換成當週與學生進行互動的大語言模型的系統內容
    13. 能夠對先前的對話內容進行修改
    14. 頁面能夠瀏覽並選定不同週次進行對話，並複製不同週次的內容成為當前的新對話
    15. 課堂的繳交作業分頁可以瀏覽學生交作業的情形，並按週分頁
    16. 課堂的學習狀況分頁可以呈現學生使用大語言模型對話所產生的文字雲、常出現詞彙統計，並支援分組顯示。
    17. 課堂的學習狀況分頁可與大語言模型互動，讓大語言模型說明學生的學習狀況
    18. 有發佈內容的專屬頁面，可以將同一個內容發佈到不同頁面(公告區、本週課程區…)多個課程中(1班、2班)
    19. 發佈的內容可以選定，像是作業繳交區、討論區、投票區等
    20. 有與大語言模型對話的專屬頁面，可以將同一個互動內容傳遞到不同週次以及多個課程中(1班、2班)
    21. 此區大語言模型對話歷史不限於週次，在課堂頁面中與大語言模型的互動紀錄也同樣會保存至此
    22. 有問題回報頁面可以直接回報給管理員、開發者

### 學生
```mermaid
graph TD
   Login(0. 登入)
   LandingPage(1. 課程首頁) 
   WeekFilePage(2. 課程文件頁面)
   LLMPage(3. 大語言模型互動視窗)
   HomeworkPage(4. 作業繳交區)
   UploadPage(5. 上傳文件區)
   EditPage(6. 文件編輯區)
   ChatHistorySidebar(對話紀錄側欄)

   
   
   Login --- LandingPage
   LandingPage --- WeekFilePage
   LandingPage --- LLMPage
   LandingPage --- HomeworkPage
   HomeworkPage --- UploadPage
   HomeworkPage --- EditPage
   EditPage --- ChatHistorySidebar

```
    1. 基本課堂介面與教師的並無差異，只差在有沒有編輯按鈕
    2. 能夠直接在系統內完成文件書寫(pdf,類似白板編輯)
    3. 能夠將老師提供在作業區的文件當作模板
    4. 側邊視窗有 AI 做輔助
    5. 支援上傳文件功能(pdf,jpg)
    6. 除以上功能外，文件可以儲存、刪除、繳交
    7. 能夠在總覽頁面就能找到大語言模型對話視窗的進入點
    8. 支援語音、文字輸入，能理解多語者的談話內容
    9. 能夠對先前的對話內容進行修改


### 管理員
```mermaid
graph TD
   Login(0. 登入)
   LandingPage(1. 課程總覽頁面) 
   AddClassPage(2. 新增課程頁面)
   ArchivePage(3. 課程封存頁面)
   ProblemReportPage(4. 問題回報頁面)
   StudentlistPage(5. 學生清單頁面)
   
   
   Login --- LandingPage
   LandingPage --- AddClassPage
   LandingPage --- ArchivePage
   LandingPage --- ProblemReportPage
   AddClassPage --- StudentlistPage
```
    1. 新增課堂的頁面簡潔，不需要輸入太多欄位(標題、學期、負責老師)
    2. 支援 csv 輸入，將有修課的同學名單快速匯入
    3. 能夠手動對學生名單進行操作(新增、刪除、更改資料)
    4. 有課堂總覽頁面，可以進行篩選(班級、學期、老師)
    5. 課程可支援方塊或清單顯示
    6. 能夠複選課程，並作出操作(封存、恢復)
    7. 能夠在封存區直接刪除課程內容
    8. 有問題回報頁面可以直接回報給開發者


2.1.1 使用情境：
>`1. 紀老師使用平台準備上課`
紀老師準備明天的課堂，他進入了平台上的課程總覽頁面。頁面非常簡潔，課程標題清晰，背景圖片顯著，讓他能夠快速找到即將要上的課程（需求1.1）。當他打開課程總覽時，未來最接近的課堂被排在最前面，讓他可以輕鬆看到明天的課程（需求1.2）。此外，紀老師還能將這堂課標記為重要課程，每次進入平台時，這堂課都會顯示在最上方（需求1.3）。

>`2. 紀老師快速發布課程內容`
紀老師決定在上課前，將上課內容發布到課堂頁面上。他先編輯了課堂的公告區，發布了今天上課的重要提醒（需求2.1）。然後，他進入自動切換到當週的課程分頁，並在該分頁發布了課程的詳細內容（需求2.2）。他發現公告區和課程分頁的編輯按鈕非常便捷，可以讓他快速修改（需求2.3）。紀老師使用 Markdown 來發布課程內容，同時上傳了幾個 PDF 文件供學生下載和參考（需求2.4）。此外，他開啟了作業繳交區、討論區和投票區，方便學生進行互動和討論（需求2.5）。課堂頁面還有一個按鈕可以讓紀老師進入與大語言模型互動的視窗，以便在上課時使用（需求2.6）。

>`3. 與大語言模型進行互動`
在上課時，紀老師使用了與大語言模型互動的視窗。他開始引導大語言模型成為他課程中的助教角色，讓模型能幫助回答學生問題（需求3.1）。他還上傳了一些教學資料和音檔，進行多模態互動（需求3.2）。當紀老師與模型的互動完成後，這些對話內容會自動轉化成課堂與學生互動的基礎（需求3.3）。如果有需要，他可以隨時修改對話內容（需求3.4）。紀老師也能瀏覽不同週次的互動記錄，並將某些有用的對話複製到其他週次（需求3.5）。

>`4. 紀老師檢查學生的學習狀況`
課後，紀老師進入課堂的繳交作業分頁，查看了學生的作業繳交情況。這些作業按週排列，讓他能夠清晰地檢視每一週學生的進度（需求4.1）。在課堂的學習狀況分頁中，紀老師看到了小明與大語言模型互動所生成的詞雲，並且平台為他提供了常出現的關鍵詞統計數據，還可以按組分開顯示（需求4.2）。紀老師隨即與大語言模型互動，讓模型說明小明的學習狀況，並獲得了詳細的反饋（需求4.3）。

>`5. 紀老師將內容同步到其他課堂`
紀老師需要將這次課堂的教學內容分享給另一個班級。他進入發布內容的專屬頁面，將這週的公告、課程內容一鍵發布到另一個班級（需求5.1）。此外，他也將作業繳交區、討論區和投票區的內容同步到兩個班級中（需求5.2）。他還複製了與大語言模型的對話，將其發佈到其他課程和週次（需求5.3）。不僅如此，這些對話歷史記錄也被保存到了課堂頁面中，方便日後檢視（需求5.4）。

>`6.小明進入課堂查看公告與作業`
小明進入了課堂頁面，由於他只有一個課程，系統直接顯示了當前課程的公告與作業頁面，無需進行分頁（需求6.1）。這個介面與紀老師的非常相似，只是他沒有編輯權限（需求6.2）。他查看了今天的公告，並準備開始做作業。

>`7. 小明在課堂上完成作業`
小明進入作業繳交區，看到老師上傳的作業文件作為模板。他直接在系統內完成了 PDF 格式的作業書寫，並且在白板編輯區進行了標註和修改（需求7.1, 7.2）。作業旁邊的側邊視窗還有 AI 助手，幫助他解答疑惑（需求7.3）。小明還上傳了一些參考的 PDF 文件作為作業附件（需求7.4）。最後，他將文件保存、檢查後，順利繳交了作業（需求7.5）。

>`8. 小明與大語言模型互動`
在完成作業後，小明打算與課堂中的大語言模型進行互動。透過總覽頁面的顯著按鈕，他能夠快速進入對話視窗（需求8.1）。他使用語音和文字輸入來與大語言模型互動，模型能夠理解小明用不同語言提出的問題（需求8.2）。如果對話內容有需要修改的地方，小明可以隨時進行調整（需求8.3）。

>`9. 管理員協助紀老師加入學生`
紀老師發現有幾名新學生需要加入課堂，於是聯繫了管理員。管理員打開平台的課堂管理頁面，這個頁面非常簡潔明了，只需要填寫課程標題、學期和負責老師的名字即可新增課堂（需求9.1）。紀老師還提供了一份學生名單，管理員通過 CSV 文件的匯入功能快速將學生加入課程（需求9.2）。當有學生資料錯誤時，管理員能夠手動新增、刪除或更改學生資料，非常便捷（需求9.3）。

>`10. 管理員封存和恢復課程`
到了學期末，紀老師希望將過去的課堂封存。管理員進入平台的課堂總覽頁面，利用篩選功能輕鬆找到該學期的課堂，並根據班級和負責老師進行篩選（需求10.1）。頁面支持方塊與清單兩種顯示方式，管理員可以自由選擇（需求10.2）。管理員選中了幾個課程，並選擇「封存」操作將其封存（需求10.3）。如果有些課程確定不再需要保存，管理員還可以在封存區內直接刪除這些課程內容（需求10.4）。

>`11. 遇到問題時的回報`
在使用平台的過程中，紀老師和管理員偶爾會遇到一些問題。他們發現平台有一個專屬的問題回報頁面，可以快速地將問題反饋給管理員或開發者（需求11.1）。紀老師和管理員根據平台上所訂定的回報規則，詳細描述問題，這樣可以減少開發者與管理員之間的溝通難度，提高問題解決的效率。


2.2假設及依賴：
(待補上的相關資訊)
列出包括硬體依賴、第三方系統的整合、特定的軟體庫或API的依賴。
    



2.3 技術規格:
        前端：使用 React.js框架
        後端：使用 Django(或 flask) + MySQL
              AI 套 hugging face, 可能使用 flowise 來 integration跟串接
        資料庫：使用 MySQL
        部屬環境：自建伺服器
### 3.系統特性與需求
3.1 功能需求：
`教師`
管理課堂(不同班級)、管理課堂分組
在課堂之前可以先將課程內容輸入給大型語言模型理解，並交流以確認教學內容
能夠指派課堂作業並查看學生作答回饋內容
`學生`
跟大型語言模型互動並增進對課程的理解
能夠使用系統完成課堂作業
`管理員`
協助教師新增課堂、封存課堂
管理帳號、更改帳號資訊
管理封存課堂(刪除、恢復)

3.2 外部介面需求：
    列出系統與外部系統的接口需求，例如API、數據庫、第三方應用程式等需要互相通信的接口。

3.3 非功能需求
>#### 系統可用性： 
 系統正常運行時間應保證 99% 的運行時間，確保在大部分時間內用戶都能正常使用。此要求需要結合自動化監控和報警系統進行監測。
>#### 擴展性：
`資料庫擴展：`
數據超過某個門檻（如10萬條記錄）時，自動或手動啟動數據庫擴展機制。

`雲端服務擴展：`
    系統應能夠部署於雲平台上，並且支持自動擴展策略，如 AWS Auto Scaling 或 Kubernetes 部署以動態增加資源

>#### 系統維護需求：
`模組化設計：`
系統應該遵循模組化設計原則，每個模組（如前端、後端、資料庫等）應相對獨立，方便單獨進行更新和維護，並減少影響其他模組的風險。 

`安全性：`
所有與伺服器的連線都必須使用 HTTPS，而不是 HTTP
使用 django.contrib.auth 配置和管理用戶的密碼相關操作

`自動化測試：`
系統應包含單元測試、集成測試和自動化部署流程，確保在每次更新或升級時不會引入新的問題。測試覆蓋率應達到 70% 以上。
    










