---
# System prepended metadata

title: 需求規格書
tags: [文件]

---

:::warning
- 記得切雙欄或編輯模式，裡面有偷偷塞 `<!-- -->` 的註解
- 實例好像要有一點故事性？
- 用詞統一！
- 共識
    - 圖表使用 ==**?**== 製作
    - 待確認的東西用這種形式寫： `==**待確認事項**==`
    - 先不管做不做的出來，就先把適合可以弄上去的功能都先提出來
- 參考
    - [糕餅需求規格書](https://mason1762.gitbook.io/samxinbakery/)
:::

# 1 目錄
:::success
[TOC]
:::

# 2 系統說明

## 2.1 系統資訊

:::info
- **系統名稱**：中壢高中熱食部線上訂餐系統 ==**( TBD，可改 )**==
- **系統平台**：==**待定，這邊會放一個網址**==
    線上訂餐系統會以網頁形式呈現，支援瀏覽器 ==**( 待填 )**==
- **系統收益**：==**( 好像可以刪掉這部分 )**==
- **系統開發環境**
    - 前端：==**待定**==
    - 後端：==**待定**==
    - 資料庫：==**待定**==
:::

## 2.2 系統目的

中壢高中目前熱食部訂餐流程如下：在每週一發放紙本訂單至各班班級櫃，各班負責人需於每天早上前兩節下課在各班收集完整訂單，並帶著紙本訂單與訂餐總金額至熱食部訂餐。

我們觀察到這套流程存在著幾個問題
1. **影響上課時間**
    熱食部目前訂餐流程容易讓各班負責人為了訂餐影響到下一堂課的上課時間
2. **金錢控管不容易**
    學生在金錢控管上易有出入，且需要花時間理清金錢糾紛
3. **紙本不環保疑慮**
4. **熱食部人力考量**
    熱食部員工需要花時間及人力幫學生訂餐，並於之後手動統計各項餐點訂餐狀況，效率可優化

而上述這些問題，如果能將流程自動化、電子化便可解決。因此我們預計開發出一套專屬壢中熱食部之線上訂餐系統，供日後壢中老師、學生以及熱食部員工使用。希望透過這套線上訂餐系統能解決訂餐者在訂餐時的不便，也能幫助熱食部員工更快速的統計各項數據，方便製作餐點、出餐。

# 3 需求規格

<!-- 這邊列出這套系統所有功能 -->

## 3.1 功能需求

系統支援總功能依照七個不同種類分成下列 21 項
| 分類 | 功能 |
| :-- | :-- |
| 公告 | 系統說明、最新消息（公告）、系統教學 |
| 訂餐 | 菜單列表與訂單輸入、購物車清單確認送出、支付方式選擇、訂單查詢 |
| 登入 | 系統註冊、系統登入、系統登出、修改資料、忘記密碼 |
| 其他 | 連絡我們、常見問題 (FAQ)、回饋意見填寫 |
| 更新 | 編輯公告、編輯菜單 |
| 統計 | 訂單統計、意見管理 |
| 維護 | log資訊檢視、資料管理 |

<!--
    維護人員功能共用同一個網頁
-->

其中使用系統者分成三種身分，權限由高至低如下：

| 權限等級 | 身分 | 說明 |
| :-- | :-- | :-- |
| 第一級 | 維護人員 | 系統開發者、維護者 |
| 第二級 | 工作人員 | 熱食部員工 |
| 第三級 | 用戶 | 訂餐者，包含老師與學生 |

<!--
    學校若要統一註冊、修改資料，以維護人員身分進行
-->

### 3.1.1 系統說明

- 規則
    - 內容包含系統簡介、開發者、維護者 (contributors) 清單
        - Contributors 可放上開發者、維護者相關連結增加開發者、維護者曝光度
        <!-- 
            Reference：NOJ
        -->
    - 使用一個檔案儲存系統說明，並渲染至靜態網頁上
    - 支援 markdown 語法編輯
    - 檔名：`introduction.md`
- 實例
    - ==**一張範例圖.png**==

### 3.1.2 最新消息（公告） :heavy_check_mark: 

- 規則
    - 最新消息（公告）列表包含發布時間、更新時間、主題
        - 以表格方式呈現
        - 預設以更新時間由新至舊排序
        - 日期格式為: `YYYY.MM.DD HH:mm:ss`，`HH` 以 24 小時制表示
    - 公告列表預設每頁顯示 ==**20**== 項
        - 支援顯示項目數量使用者自行決定，最少 ==**20**== 筆，最多 ==**50**== 筆
    - 支援標籤功能，快速查找相關主題公告
        - 標籤項目包含：發布時間、發布人、主題標籤
        - ==**主題標籤列表如下**==
            - 必填：系統、熱食部
            - 選填：優化、維修、菜單、活動、其他、...
            	- 標籤讓使用者選取，非自行輸入
            <!-- 努力新增中 -->
    - 點選 ==**每一欄**== 可使用彈出視窗跳至對應的詳細公告頁面
- 實例
    - 用戶可於公告頁面查閱如下列表資訊
        | 發布日期 | 更新日期 | 主題 |
        | :--: | :--: | :-- |
        | 2024.09.06 00:00:00 | 2024.09.10 80:20:00 | :hammer: 系統維修 |
        | 2024.09.01 08:00:00 | 2024.09.03 17:00:00 | :newspaper: 113-1 第一週菜單已上架 |
        | 2024.08.15 08:00:00 | 2024.08.15 08:00:00 | :loudspeaker: 系統正式啟用！ |
	- 若無更新，則更新日期和發布日期相同
	- 預設排序方式：更新日期新的在上面
		- 之後可用各個欄位進行排序
    - 若用戶點選「系統維修」該欄則可看到該公告詳細內容如下
        - ==**一張範例圖.png**==
        ```
        主題：系統維修（置中）
        發布時間：2024.09.06 00:00:00
        最新更新時間：2024.09.06 00:00:00
        
        線上訂餐系統將於今日（2024.09.06）早上 8:00 到下午 17:00 進行維修及測試，
        請用戶不要在這段時間使用系統，造成您的不便敬請見諒
        ```

### 3.1.3 系統教學 :heavy_check_mark:

- 規則
    - 內容包含網站導覽、註冊登入須知、如何使用系統、如何支付
    - 使用一個檔案儲存系統教學內容，並渲染至靜態網頁上
    - 支援 markdown 語法編輯
    - 檔名：`tutorial.md`
- 實例
    - ==**一張範例圖.png**==

### 3.1.4 菜單列表與訂單輸入 :heavy_check_mark:

- 規則
    - 產品類別包含：早餐部餐點、午餐部餐點、飲料部餐點以及其他
        - 早餐部餐點包含 ==**12?**== 項產品項目
        - 午餐部餐點包含 ==**8**== 項產品項目
        - 飲料部餐點包含 ==**TBD**== 項產品項目
        - 其他包含 ==**TBD，例如滷味？**==
    - 商品客製化資訊和每份餐點綁定
    	- 選餐點 -> 選客制化
    - 產品項目內容的資訊包含：品項名稱、圖片、備註、金額以及目前訂購數量
        - 備註內容包含：限量、剩餘幾份、餐點內容物 <!-- 還有再補上 -->
        - 一項產品綁定一個圖片檔案位置
    - 使用 ==**json**== 檔紀錄再渲染置網頁，並提供 API 給工作人員編輯
    - 檔名：`menu.json`
    - 訂單輸入功能僅供第一級登入用戶使用
    - 消費者若對產品項目有興趣可在頁面上將產品加入購物車
        - 若用戶未登入不得進行接續動作
        - 超過 10:00 不得訂餐
    - 加入購物車之後，停留在原畫面，消費者若要進行結帳或檢視已選購產品，可以點選購物車再進行接續行為
- 實例
    - ==**一張範例圖.png**==

### 3.1.5 購物車清單確認送出 :heavy_check_mark:

- 規則
    - 此功能僅供第一級登入用戶使用
    - 用戶點選購物車進到購物車清單畫面
    - **增加取餐時間讓用戶選擇**
    - 用戶點選「確認送出」按鈕會進到支付頁面
        - 點選「確認送出」按鈕資料就傳到後端
        - 若訂單產品總數為 0 不得進行接續動作
- 實例
    - ==**兩張範例圖.png**==
    - 假設用戶送出下列訂單
        - 訂單成立時間：2024.09.01 10:00:00
            | 項目 | 訂購人資訊 |
            | :-- | :-- |
            | 訂購人用戶名 | 銅馬 |
            | 訂購人學號 | 710001 |
            | 訂購人年級 | 3 |
            | 訂購人班級 | 12 |
            | 訂購人座號 | 1 |
        - 訂購品項
            | 品項 | 數量 | 單價 | 小計 |
            | :-- | :-- | :-- | :-- |
            | 蔬食便當 | 1 | 50 | 50 |
            | 九號餐 | 1 | 55 | 55 |
        - 總金額：105

### 3.1.6 訂單查詢 :heavy_check_mark: 

- 規則
    - 此功能僅供已登入用戶使用
    - 用戶點選「訂單查詢」按鈕即可進入訂單檢視頁面檢視已送出訂單
    - 訂單列表包含下列資訊：時間、訂單內容、訂單狀態
        - 訂單狀態如下
            | 狀態 | 說明 |
            | :-- | :-- |
            | :warning: 未送出 | 訂單仍存於購物車中，尚未付款確認訂單 |
            | :fork_and_knife: 未完成 | 訂單已送出，熱食部製作中 |
            | :heavy_check_mark: 已完成 | 訂單已送出，熱食部製作完成 |
			| :question: 已領取(使用待討論) | 訂購人已領取 |

    - 訂單列表依成立時間由新到舊排序
- 實例
    - ==**一張範例圖.png**==
    - 假設用戶已訂購兩日餐點，一天已完成，一天未完成
        | 訂購時間 | 訂單內容 | 狀態 |
        | :-- | :-- | :-- |
        | 2024.09.02 09:50:03 | 蔬食便當 * 1 | :fork_and_knife: 未完成 |
        | 2024.09.01 10:00:00 | 蔬食便當 * 1<br>九號餐 * 1 | :heavy_check_mark: 已完成 |

### 3.1.7 支付方式選擇 ==**TBD**==

- 規則
    - 此功能僅供已登入用戶使用
- 實例

### 3.1.8 系統註冊 :heavy_check_mark:

- 規則
    - 由學校統一註冊帳號
    - 註冊時需填寫資訊依照身分分成兩種
        - 若為學生則包含：學號、年級、班級、座號、E-mail、設立密碼、確認密碼，並且包含使用條款說明與確認欄位
            - 檢查重複年級班級座號
            - 學號是身分唯一性
        - 若為老師則包含：學號（一組識別號碼）、負責處室（**共用班級欄位**）、E-mail、設立密碼、確認密碼，並且包含使用條款說明與確認欄位
            - 老師學號欄位由系統給
            - 負責處室由系統給一個代號（ex: 體育科辦公室: 100）
            - 年級、座號填 0
        - 特殊欄位需使用格式化字串輸入並進行檢查，系統提供格式化字串<!-- placeholder -->提示
        - 設立密碼與確認密碼需使用 `*` 隱藏明文
        <!-- 使用條款要做成附件 -->
        <!-- 小心 SQL-Injection -->
        <!-- 特定欄位使用列表選擇 -->
        <!-- 每個欄位的限制寫清楚 -->
    - 完成註冊之後寄發 email 確認信，待用戶點選確認按鈕便將用戶資料寫入資料庫中，完成註冊
        - Email 確認信之確認按鈕會先顯示「恭喜您！您已成功註冊，請重新登入」通知，待後端註冊完成將畫面重新導至未登入首頁，用戶重新登入便可成功進入已登入網頁
- 實例
    - 學生註冊資訊範例
        - 填寫資料如下：
            | 項目 | 內容 | 項目 | 內容 |
            | :-- | :-- | :-- | :-- |
            | 學號 | 710001 | E-mail | `710001@clhs.gmail.com` |
            | 年級 | 3 | 班級 | 12 |
            | 座號 | 1 |
            
        - 收到 email 確認信如下
            ```
            親愛的 710001 您好：
            歡迎您加入壢中熱食部線上訂餐系統，
            我們已收到您的註冊，請點選確認按鈕確認註冊資訊是否正確
            「確認按鈕」
            壢中熱食部線上訂餐系統 開發團隊 敬上
            ```
    - 教師註冊資訊範例
        - 填寫資料如下：
            | 項目 | 內容 | 項目 | 內容 |
            | :-- | :-- | :-- | :-- |
            | 學號 | 810002 | E-mail | `810002@clhs.gmail.com` |
            | 年級 | 0 | 班級 | 100 |
            | 座號 | 0 | 設立密碼 | bronzeHorse |
            | 確認密碼 | bronzeHorse ||
            
        - 收到 email 確認信如下
            ```
            親愛的 810002 您好：
            歡迎您加入壢中熱食部線上訂餐系統，
            我們已收到您的註冊，請點選確認按鈕確認註冊資訊為您本人填寫
            「確認按鈕」
            壢中熱食部
            ```
        <!-- 用戶名改成學號，資料不會寫在 mail 中 -->

### 3.1.9 系統登入 :heavy_check_mark:

- 規則
    - 會員在未登入時可點擊「登入」按鈕則進入系統登入畫面
    - 登入畫面包含輸入「帳號」與「密碼」
    - 「帳號」即為學生的學號或教師/行政人員的識別號碼
    - 輸入密碼時需使用 `*` 隱藏明文
    - 成功登入之後，登入狀態顯示 `Hi! 學號`
    - 支援忘記密碼功能，詳見 3.1._ 忘記密碼
- 實例
    - ==**一張範例圖.png**==
    - 用戶 710001 可以以下方式登入
		<!-- 學號登入? (用戶名稱好像可以直接是學號) by可伊 -->
        | 項目 | 輸入 |
        | :-- | :-- |
        | 學號 | `710001` |
        | 密碼 | bronzeHorse |
    - 待用戶 710001 成功登入後，登入狀態顯示 `Hi! 710001`


### 3.1.10 系統登出 :heavy_check_mark:

- 規則
    - 會員在登入時可點擊「登出」按鈕登出帳戶
    - 登出後登入狀態顯示未登入
    <!-- 登出後畫面要重新渲染，尤其菜單輸入部分 -->
- 實例
    - ==**一張範例圖.png**==

### 3.1.11 修改資料
<!-- 系統統一註冊，再發密碼給學生自行修改登入 -->
- 規則
    - 此功能僅供已登入用戶使用
    - 編輯基本資料分為可修改與不可修改
        - 不可修改的欄位為學號
        - 可修改的欄位為連絡電話、密碼、Email
        - 年級、班級、座號只能由學校統一更改（學校每年統一更新一次）
        - ==**TBD：其中中文全名、年級、班級、座號的修改設有「每學期最多兩次」的限制**==
        - 若有特殊更改需求可由維護人員進行修改
            <!-- 那個年級、班級、座號是不是要有特殊審核啊？不然我還是可以串改訂單啊 -->
    - 用戶修改完資料會收到一封 mail 確認信，唯有確認後才會真的成功更改資料
- 實例
    - ==**一張範例圖.png**==

### 3.1.12 忘記密碼 :heavy_check_mark:

- 規則
    - 用戶點選忘記密碼後輸入用戶 Email，系統寄送 ==**八位亂數密碼**== 至該 Email，用戶再透透過該組密碼登入並重設
        - 亂數密碼符合 3.1._ 系統註冊 密碼之規定
    - 系統需檢查用戶輸入之 Email 是否真的存在於資料庫中，若否則不傳送 Email
- 實例
    - ==**一張範例圖.png**==
    - 用戶 銅馬 點選忘記密碼按鈕，系統跳出視窗要求用戶 銅馬 輸入 Email
    - 系統寄送 Email 如下：
        ```
        親愛的用戶您好，
        我們已重設您的密碼，密碼為「12345678」
        請以此密碼重新登入，並重新設定密碼
        壢中熱食部線上訂餐系統開發團隊 敬上
        ```

### 3.1.13 聯絡我們 :heavy_check_mark:

- 規則
    - 內容包含熱食部營業時間、熱食部聯絡電話、系統維護端 E-mail、回饋表單連結
    - 使用一個檔案儲存常見問題內容，並渲染至靜態網頁上
    - 支援 markdown 語法編輯
    - 檔名：`contact.md`
- 實例
    - ==**一張範例圖.png**==

### 3.1.14 常見問題（FAQ） :heavy_check_mark:

- 規則
    - 內容包含 ==**(待填)**== <!-- 再說 -->
    - 使用一個檔案儲存常見問題內容，並渲染至靜態網頁上
    - 支援 markdown 語法寫成
    - 檔名：`faq.md`
- 實例
    - ==**一張範例圖.png**==

### 3.1.15 回饋意見填寫 :heavy_check_mark:

- 規則
    - 此功能僅供已登入用戶使用
    - 客戶反應意見欄位包含：回饋對象（系統、熱食部）、內容
    - 客戶送出反應意見之後會收到郵件通知，郵件通知包含用戶填寫欄位資訊以及預設回覆內容
    - 客戶送出反應意見之後後端會在意見管理處新增一筆資料，狀態設為未回覆
- 實例
    - ==**一張範例圖.png**==
    - 用戶填寫欄位輸入如下
        | 欄位 | 內容 |
        | :-- | :-- |
        | 回饋對象 | 系統 |
        | 內容 | 忘記密碼功能似乎怪怪的 |
    - 用戶收到回覆郵件
        ```
        親愛的 銅馬 您好：
        我們已收到您的建議，建議內容如下：（表格呈現）
        | 欄位 | 內容 |
        | :-- | :-- |
        | 回饋對象 | 系統 |
        | 內容 | 忘記密碼功能似乎怪怪的 |
        謝謝您寶貴的建議，我們會盡速與您連繫並回覆您的意見
        壢中熱食部線上訂餐系統開發團隊 感謝您！
        ```

<!-- 這邊開始算是工作人員層面 -->

### 3.1.16 編輯公告

- 規則
    - 此功能僅供已登入第二級權限以上人員使用
    - 工作人員可以新增、刪除、編輯、發布最新消息的內容
        - 若有修改最新消息內容，會記錄更新時間
    - 最新消息內容編輯包含三個欄位，分別是「預計發布時間」、「主旨」與「內容」
- 實例
    - 熱食部員工預計發布一則新公告，填寫內容如下：
        | 項目 | 內容 |
        | :-- | :-- |
        | 預計發布時間 | 2024.09.01 08:00:00 |
        | 主旨 | 113-1 第一週菜單已上架 |
        | 內容 | 各位同學好，本學期第一週菜單已經上架囉！<br>歡迎同學使用系統訂餐！ |

### 3.1.17 編輯菜單 :heavy_check_mark: 

- 規則
    - 此功能僅供已登入第二級權限人員使用
    - 工作人員可以新增、修改、刪除、發布菜單
        - 預設是修改功能 <!-- 因為像早餐部、飲料部、其他就比較適合這樣 -->
        - 提供 reset 按鈕讓工作人員重新上傳菜單 <!-- 方便午餐部編輯菜單 -->
    - 編輯表單分成早餐部、午餐部、飲料部與其他四種
    - 每種欄位包含：品項名稱、金額、圖片、備註、供餐時間、發布時間
        - 午餐部提供一次編輯一週菜單功能，早餐部、飲料部、其他等部門一次編輯一天菜單 <!-- 畢竟其他部門不太更新菜單 -->
        - 供餐時間決定熱食部編輯菜單截止時間，同時是用戶開放訂餐時間，依據部門有不同規則，規則如下：
            | 部門 | 規則 |
            | :-- | :-- |
            | 早餐部 | 每天晚上 23:59 決定隔天菜單<br>並開放學生於每天 05:00 開始得訂該日餐點 |
            | 午餐部 | 每週日 23:59 決定該週菜單<br>並開放學生於每週一 05:00 開始得訂該週餐點 |
            | 飲料部 | 每天晚上 23:59 決定隔天菜單<br>並開放學生於每天 05:00 開始得訂該日餐點 |
            | 其他 | 每天晚上 23:59 決定隔天菜單<br>並開放學生於每天 05:00 開始得訂該日餐點 |
        - 預設週六週日為空白菜單，若遇補課、活動等情況熱食部可另外彈性開菜單
- 實例
    > 早餐部編輯菜單填寫內容如下：
    
    | 品項名稱 | 金額 | 圖片 | 備註 |
    | :-- | :-- | :-- | :-- |
    | 一號餐 | 50 | :one: |  |
    | 二號餐 | 50 | :two: |  |
    | 三號餐 | 50 | :three: |  |
    | 四號餐 | 50 | :four: |  |
    | 五號餐 | 50 | :five: |  |

    | 項目 | 內容 |
    | :-- | :-- |
    | 發布時間 | 2024.09.01 08:00:00 |
    | 供餐時間 | 2024.09.01 06:30:00 |

    > 午餐部編輯菜單填寫內容如下：
    
    | 品項名稱 | 金額 | 圖片 | 備註 |
    | :-- | :-- | :-- | :-- |
    | 草莓排骨飯 | 60 | :bento: | 熱食部新品！<br>快來嘗試 |
    | 韓式部隊鍋 | 60 | :ramen: |  |
    | 黯然消魂飯 | 60 | :ghost: |  |
    | 鍋貼 | 60 | :dumpling: |  |
    | 蔬食便當 | 50 | :bento: |  |

    | 項目 | 內容 |
    | :-- | :-- |
    | 發布時間 | 2024.09.01 08:00:00 |
    | 供餐時間 | 2024.09.01 12:00:00 |
    
    > 飲料部編輯菜單填寫內容如下：
    
    | 品項名稱 | 金額 | 圖片 | 備註 |
    | :-- | :-- | :-- | :-- |
    | 四季春 | 30 | :cup_with_straw: |  |
    | 紅茶 | 15 | :cup_with_straw: |  |

    | 項目 | 內容 |
    | :-- | :-- |
    | 發布時間 | 2024.09.01 08:00:00 |
    | 供餐時間 | 2024.09.01 10:00:00 |
        
    > 其他編輯菜單填寫內容如下：
    
    | 品項名稱 | 金額 | 圖片 | 備註 |
    | :-- | :-- | :-- | :-- |
    | 王子麵 | 0 | :ramen: | 熱食部阿姨今天心情好 |

    | 項目 | 內容 |
    | :-- | :-- |
    | 發布時間 | 2024.09.01 08:00:00 |
    | 供餐時間 | 2024.09.01 14:00:00 |

### 3.1.18 訂單統計

- 規則
    - 此功能僅供第二級以上權限人使用
    - 可查詢所有訂單資訊
        - 預設的查詢結果以訂購時間由新至舊排序
            - 已完成訂單與未完成訂單會在不同頁顯示
            - 每頁預設顯示 50 筆資料，提供自訂顯示數量功能
            - 已完成訂單儲存一學期
            <!-- 訂單直接用資料庫存 -->
        - 查詢頁面提供的查詢條件方式包含：訂購時間、訂單編號、訂購人學號、訂購人年級、訂購人班級、訂購人座號、訂單內容、訂單狀態、付款方式、金額
            <!-- 提供凍結窗格功能？ -->
    - 可以匯出表格、文件方便熱食部做後續統計
        - 支援格式：==待填==
- 實例
    - 假設有1筆已完成訂單及2筆未完成訂單，顯示列表如下
        > 第一頁
        
        | 訂購時間 | 訂單編號 | 訂購人學號 | 訂購人年級 | 訂購人班級 | 訂購人座號 | 訂單內容 | 訂單狀態 | 付款方式 | 金額 |
        | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- |
        | 2024.09.02 10:20:01 | O0005 | 710001 | 3 | 12 | 1 | 九號餐 * 2 | 未完成 | 悠遊卡 | 110 |
        | 2024.09.02 09:50:33 | O0004 | 810002 | 2 | 12 | 16 | 七號餐 * 1 | 未完成 | 現金 | 50 |
        
        > 第二頁
        
        | 訂購時間 | 訂單編號 | 訂購人學號 | 訂購人年級 | 訂購人班級 | 訂購人座號 | 訂單內容 | 訂單狀態 | 付款方式 | 金額 |
        | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- |
        | 2024.09.01 10:00:00 | O0003 | 710001 | 3 | 12 | 1 | 九號餐 * 1 | 已完成 | 悠遊卡 | 55 |
        | 2024.09.01 09:55:10 | O0002 | 810002 | 2 | 12 | 16 | 蔬食便當 * 1 | 已完成 | 現金 | 50 |
        | 2024.09.01 09:30:03 | O0001 |  |  |  |  | 八號餐 * 1 | 已完成 | 悠遊卡 | 55 |

### 3.1.19 意見管理
- 規則
    - 此功能僅供第二級以上權限人使用
    - 可以列出所有客戶意見，並且以新增時間欄位做排序，以新增時間新至舊排序
    - 客戶意見列表的欄位包含：新增時間、處理狀態、回覆時間、用戶學號、用戶 email、標籤（包含意見對象）、意見內容。
        - 處理狀態有兩種，分別是「已回覆」與「未回覆」
        - 若處理狀態為「未回覆」，則「最後回覆時間」為空值 (`NULL`)
    - 支援標籤功能查詢特定主題意見
    - 可以進一步顯示每一筆客戶意見的資訊 <!-- 什麼進一步資訊可以寫？ -->
        - 使用彈出視窗呈現
- 實例
    - 客戶意見列表如下
        | 新增時間 | 處理狀態 | 回覆時間 | 用戶學號 | 用戶 email | 標籤 | 意見內容 |
        | :-- | :-- | :-- | :-- | :-- | :-- | :-- |
        | 2024.09.14 15:00:00 | 未回覆 |  | 710001 | 710001@clhs.gmail.com | 系統 | 忘記密碼功能好像怪怪的 |
        | 2024.09.02 14:30:27 | 已回覆 | 2024.09.02 20:00:00 |  | teacher@clhs.gmail.com | 熱食部 | 許願明天有滷味可以吃 |

### 3.1.20 log資訊檢視

- 規則
    - 此功能僅供第一級權限人員使用
    - 所有第二、第三級人員操作皆須留下 log 資訊
    - log 格式如下：`[時間][身分][用戶學號][編號][行為]`
        - 時間格式為：`YYYY.MM.DD HH:mm:ss`
        - log格式詳見設計規格書
<!-- 這邊設計規格書寫沆之後要在更新更詳細版本 -->

### 3.1.21 資料管理

- 規則
    - 此功能僅供第一級權限人員使用
    - 維護人員得檢視用戶資料，並修改與刪除用戶資料
    - 在查詢用戶資料時，查詢欄位包含學號、年級、班級、座號、E-mail、連絡電話
        - 查詢出來的用戶資料以表格呈現
        <!-- 密碼因為是 hash 就不顯示了 -->
    - 預設顯示所有用戶的資料，以每頁 50 筆為限
        - 支援標籤功能篩選特定資料
        - 支援自訂每頁顯示資料數功能
    - 維護人員得直接修改用戶資料
    - 凡有資料經過修改，皆寄出一封 Email 確認信通知用戶
    - 維護人員可以重設用戶密碼，詳見 3.1.12 忘記密碼
- 實例
    - 維護人員查詢用戶資料時顯示表格如下
        | 學號 | 年級 | 班級 | 座號 | E-mail | 連絡電話 |
        | :-- | :-- | :-- | :-- | :-- | :-- |
        | 710001 | 3 | 12 | 1 | 710001@clhs.gmail.com | 0900000000 |
        | 810002 | 2 | 12 | 16 | 810002@clhs.gmail.com | 0911111111 |
        |  |  |  |  | teacher@clhs.gmail.com | 0922222222 |
    - 重設用戶 銅馬 的密碼為`A234B678`，所發出的 email 內容如下:
        ```
        親愛的用戶您好：
        我們已重新設定您的密碼，新密碼為：A234B678
        請使用此密碼重新登入，再自行修改新密碼
        壢中熱食部線上訂餐系統開發團隊 敬上
        ```
        <!-- 因為不知道用戶名稱，所以就直接稱用戶了-->

## 3.2 非功能需求

1. 系統主視覺 logo 設計
2. 支援中文及英文，使用者可切換語系 <!-- Bonus 啦！   英文有需要嗎? by可伊-->
3. 支援深色背景模式 <!-- 為什麼要做這個? by可伊 -->
4. 需能達到 2500 人同時上線
    <!--
        數據來源：40人/班 * 20班/屆 * 3屆 + 100 老師、其他；緩衝 = 2500
        多台伺服器、單一伺服器
    -->
5. 使用者、工作人員所有操作皆留下 log 資訊，log 格式須符合 3.1._ log 資訊檢視訂定之規格
6. 網頁皆須使用 https 協定 <!-- For 安全性 -->
7. 安全性須通過 OWASP 測試 __ <!-- ？？？ -->

# 4 功能規格設計

<!-- 可以使用 Figma 設計？ -->


<!--
    API 留到設計規格書寫
    測試規格留到測試計畫書寫
-->