---
# System prepended metadata

title: 軟體需求文件(SRD)

---

---
# System prepended metadata

title: 軟體需求文件(SRD)

---

# 軟體需求文件(SRD)


## 專案資訊
- **專案名稱**：海大拍賣系統
- **撰寫日期**：2025/10/7
- **發展者**：游承諺、王洪賢、張宸翊、蘇奕勳、蕭丞佑

---

## 版次變更記錄

| 版次 | 變更項目 | 變更日期 |
|------|----------|----------|
| 0.1  | 初版 | 2025/10/7 |
| 0.3  | 第二版 | 2025/10/8 |
| 0.4  | 第三版 | 2025/11/10|
| 0.5  | 第四版 | 2025/11/23|
| 0.6  | 第五版 | 2025/12/20|
| 1.0  |          |          |

---

## 目錄
1. [接受準則 (Acceptance Criteria)](#section1)
2. [系統概述 (System Description)](#section2)
3. [操作概念 (Operational Concepts)](#section3)
4. [使用者故事地圖 (User Story Map)](#section4)
5. [使用者介面分析 (User Interface Analysis)](#section5)
6. [功能需求 (Functional Requirements)](#section6)
7. [非功能需求 (Non-functional Requirements)](#section7)

---

## <span id="section1">接受準則 (Acceptance Criteria of this document)</span>
- Clearly and properly stated（需求需清楚且適當的陳述）
- Complete（需求需完整）
- Consistent with each other（需求之間需維持一致性）
- Uniquely identified（每項需求有明確之識別）
- Appropriate to implement（需求需可被實作）
- Verifiable（需求需可被驗證）

---

## <span id="section2">系統概述 (System Description)</span>
這是一個可以提供使用者上傳、拍賣物品、競拍的線上網站，前端使用react，後端框架使用springboot並連結mongoDB資料庫，部署在vercel上
![架構圖](https://hackmd.io/_uploads/Hkw1ZeEael.png)

---

## <span id="section3">操作概念 (Operational Concepts)</span>

![登入註冊.drawio](https://hackmd.io/_uploads/SJ-kRFebZg.png)

小美今天想在海大拍賣平台上架一項商品。她登入帳號後，前往商品管理頁面。系統要求她輸入商品名稱、商品價格等資料並驗證是否可以新增。

可能的例外:
欄位填入不合理的值(價格<0或不存在的商品狀態等)或是空白:
系統在驗證階段就會告訴使用者，並阻止新增
尚未登入:要求使用者先登入，並跳轉至登入頁面

![新增商品](https://hackmd.io/_uploads/BkD9ycebWe.png)

小美今天想在海大拍賣平台修改一項商品。她登入帳號後，前往商品管理頁面。系統只允許修改部分欄位，並驗證修改的合法性。

可能的例外:
欄位填入不合理的值(修改ID、數量<0等):
系統在驗證階段就會告訴使用者，並阻止修改
尚未登入:要求使用者先登入，並跳轉至登入頁面

![修改商品](https://hackmd.io/_uploads/B1vq1qxbbe.png)

小美今天想在海大拍賣平台刪除一項商品。她登入帳號後，前往商品管理頁面。系統只允許修改部分欄位，並驗證修改的合法性。

可能的例外:
欄位填入不合理的值(修改ID、數量<0等):
系統在驗證階段就會告訴使用者，並阻止修改
尚未登入:要求使用者先登入，並跳轉至登入頁面

![刪除商品](https://hackmd.io/_uploads/B1w9y5xZZg.png)

小美今天想在海大拍賣平台查看商品。她進入網頁後，直接點擊商品卡片，就能看到關於這個商品的各項資訊。

可能的例外:
商品沒有圖片或圖片連結失效:用範例圖片先替代

![瀏覽](https://hackmd.io/_uploads/ryo915g-bg.png)

有一天一位海大學生曉華想買柳橙汁，他進入首頁後，在上方的搜尋欄輸入"柳橙汁"，系統便會為他展示所有搜尋結果，接著他可以點擊商品卡片瀏覽

可能的例外:
沒有相關的結果:系統會說"很抱歉，沒有柳橙汁的搜尋結果"，請曉華換別的關鍵字試試看
![查詢](https://hackmd.io/_uploads/Syi51qgZZe.png)

有一天一位海大學生曉華想買柳橙汁，他進入柳橙汁的商品頁後，可以選擇數量，系統會檢查商品庫存確認是否可以買，曉華如果有登入系統會將柳橙汁放進購物車，否則要求他登入

可能的例外:
庫存不足:顯示：「庫存不足，無法加入購物車」。
欲購買數量格式錯誤(輸入0、負數、文字):顯示：「請輸入正確的購買數量」。
商品已下架／不存在:顯示：「此商品已下架或不存在」。
![直購商品](https://hackmd.io/_uploads/HkMokqlZWx.png)

有一天一位海大學生曉華想買拍賣商品，他進入競標頁後，可以選擇出價，系統會檢查出價是否合理並更新目前最高價格，曉華如果有登入系統才允許他出價，否則要求登入，拍賣時間截止時，系統會自動建立訂單，並通知買家與賣家

可能的例外:
出價低於當前最高價格:顯示：「出價需高於目前最高出價」。
出價格式錯誤(例如輸入文字、負數、0)顯示：「請輸入有效的出價金額」。
拍賣時間已結束:顯示：「拍賣已結束，無法再出價」。

![拍賣商品購買](https://hackmd.io/_uploads/Hyzjkqe-Wg.png)

曉明確認好購物車內的商品，要進行結帳，系統會先檢查是否有登入，有的話會請曉明確認是否要結帳，選"是"後，系統就會建立訂單

可能的例外:
購物車為空:顯示「購物車無商品，無法進行結帳」
某項商品已售完或下架:顯示「部分商品目前無法購買，請重新整理購物車」。
![結帳](https://hackmd.io/_uploads/BJziyqlWZe.png)
曉明結帳後，系統會先檢查訂單是否成立，有的話會請曉明與賣家溝通，選擇付費方法

可能的例外:
訂單不存在:顯示：「訂單不存在，無法進行付款」。
![交易付款](https://hackmd.io/_uploads/HyMiyqxWZx.png)





---

## <span id="section4">使用者故事地圖 (User Story Map)</span>
 ![NTOUSE User Story Map](https://hackmd.io/_uploads/S1RVuA76el.jpg)
https://miro.com/app/board/uXjVJAKHErM=/

### 範例使用者故事卡片

### 代號：addProd  
**功能：** 新增商品  
**測試方法：** 新增完商品要出現在商店  
**註記：** 新增商品時設定必填寫的欄位  
**使用者故事：** 作為賣家，我希望能新增新商品到商店中，讓買家能看到並購買。

---

### 代號：updateProd  
**功能：** 更新／移除商品  
**測試方法：** 移除完商品確認物品狀態  
**註記：** 成功更新／移除後跳出通知  
**使用者故事：** 作為賣家，我希望能隨時更新或移除商品，以保持商店資訊正確。

---

### 代號：browseProd  
**功能：** 依目錄瀏覽商品  
**測試方法：** 瀏覽時要顯示符合目錄的商品  
**註記：** 僅顯示該目錄及子目錄下上架中商品，無符合項時顯示提示訊息  
**使用者故事：** 作為買家，我希望能依照目錄瀏覽商品，以方便找到我想要的種類。

---

### 代號：selProd  
**功能：** 依條件篩選搜尋商品  
**測試方法：** 確保結果符合篩選條件  
**註記：** 條件可以選評價、價格、類型等  
**使用者故事：** 作為買家，我希望能依照條件篩選商品，以快速找到合適商品。

---

### 代號：prodDetail  
**功能：** 瀏覽選取商品詳細資訊  
**測試方法：** 確保選取的商品會顯示更多資訊，若沒有相關資訊顯示「無資料」  
**註記：** 商品詳細資訊提供圖片、描述、庫存、等  
**使用者故事：** 作為買家，我希望能查看商品詳細資訊，以了解更多商品細節。

---

### 代號：addToCart  
**功能：** 加入商品至購物車  
**測試方法：** 
* 加入購物車後確認購物車內商品有更新  
* 商品庫存為0時不能讓買家加入

**註記：** 同商品重複加入時應自動增加數量  
**使用者故事：** 作為買家，我希望能將商品加入購物車，以便一次購買多樣商品。

---

### 代號：updateCart  
**功能：** 更新購物車  
**測試方法：** 
* 確認刪除商品、修改數量後能正確更新商品總數與金額  
**註記：** 確保刪除、數量調整、金額即時更新  
**使用者故事：** 作為買家，我希望能調整購物車內容，以確保訂單正確再下單。

---

### 代號：joinBid  
**功能：** 加入競標  
**測試方法：** 更新競標人列表並即時更新競標價  
**註記：** 出價須高於目前最高價；出價成功需提示訊息  
**使用者故事：** 作為買家，我希望能參與商品競標，爭取以合理價格購入想要的商品。
(https://hackmd.io/_uploads/rJetZl46eg.png)

---

### 代號：giveCoupon  
**功能：** 根據使用者的生日或是交易金額給優惠券  
**測試方法：** 調整日期或是金額來確認是否有送出優惠券  
**註記：** 送優惠券是用一個轉盤隨機抽一個，不見得優惠券都是好的東西  
**使用者故事：** 作為買家，我希望網站能給我優惠券，讓我更願意消費。

---

### 代號：orderNego  
**功能：** 與賣家協調交貨方式  
**測試方法：** 提供宅配、超商等方式供選擇，確認訂單中的交貨方式正確  
**註記：** 系統須記錄選擇結果，並通知賣家  
**使用者故事：** 作為買家，我希望能與賣家協調交貨方式，以選擇最方便的取貨管道。


---

## <span id="section5">使用者介面分析 (User Interface Analysis)</span>
**首頁:**
![SEProject2025-首頁線框圖.drawio](https://hackmd.io/_uploads/BkbRGl4Teg.png)
**說明**  
使用者登入成功後會看到的頁面。  
- 左上角為網站的齒輪圖示（網站標誌）  
- 中間為搜尋欄位  
- 右上角為購物車與通知按鈕  
- 左側長方形區塊可依價格、類別等條件篩選商品  
- 頁面下方提供分頁切換功能  

---

**購物車:**
![SEProject2025-購物車.drawio](https://hackmd.io/_uploads/SkL4-xETee.png)
**說明**  
- 商品名稱左方的圈圈可勾選是否選取該商品  
- 數量欄位提供 "+" 與 "-" 按鈕  
- 下方即時顯示目前總金額  
- 點擊"去結帳"後，會跳出通知訊息並導向付款頁面  

---

**結帳:**
![SEProject2025-結帳.drawio](https://hackmd.io/_uploads/HkREzeN6ee.png)
**說明**  
- 顯示購買商品與其所屬商家  
- 使用者需填寫地址與付款方式（貨到付款、信用卡等）  
- 完成後按下"結帳"按鈕即可完成購物流程  

---
**商品頁面:**
![SEProject2025-商品瀏覽.drawio](https://hackmd.io/_uploads/HJoKGxNTxl.png)
**說明**  
- 顯示商品詳細資訊  
- 下方三個框為相似商品的預覽區塊  
- 提供使用者快速瀏覽並選擇其他相似商品  


---

## <span id="section6">功能需求 (Functional Requirements)</span>
* 基本需求

  | 編號 | 需求內容 |
  | --- | ------- |
  |FR-01|系統應提供會員註冊功能，使用者可建立帳號|
  |FR-02|使用者可同時作為買家與賣家使用相同帳號進行操作|
  |FR-03|系統應提供會員登入、登出與個人資料修改功能|
  |FR-04|賣家可上架商品，輸入名稱、照片、價格、數量及描述等資訊|
  |FR-05|系統應區分商品為「直購商品」與「競標商品」兩種類型|
  |FR-06|賣家可修改或下架其上架之商品|
  |FR-07|買家可依條件（如名稱、類別、價格區間等）搜尋商品|
  |FR-08|系統應提供篩選功能（例如依價格、評價、上架時間排序）|
  |FR-09|系統應提供購物車功能，買家可將直購商品加入購物車|
  |FR-10|買家可於購物車中修改商品數量或移除商品|
  |FR-11|買家可確認購物車內容並進行結帳操作|
  |FR-12|系統應在買家完成結帳後產生訂單資料|
  |FR-13|賣家收到訂單通知後可與買家協調交付方式|
  |FR-14|競標商品應設有固定的競標期限（截止時間）|
  |FR-15|買家可對競標商品出價，系統應即時更新目前最高出價|
  |FR-16|系統應於競標截止時自動判定最高出價者為得標者|

* 進階需求


  | 編號 | 需求內容 |
  | --- | ------- |
  |FR-17|系統首頁應顯示最新上架商品與熱門商品|
  |FR-18|系統應記錄使用者的商品瀏覽歷史|
  |FR-19|使用者可查詢自身瀏覽歷史紀錄|
  |FR-20|系統應根據使用者瀏覽歷史提供個人化商品推薦|
  |FR-21|系統應提供自動出價功能，依使用者設定的最高金額自動調整出價|
  |FR-22|使用者可對已完成交易的商品進行評價與評分|
  |FR-23|系統應在商品頁顯示該商品的平均評分與評論內容|
  |FR-24|系統應在賣家資訊頁顯示該賣家的評價總覽與平均評分|
  |FR-25|系統應不定期或是使用者達到特定條件時給予優惠券|
  |FR-26|使用者可以查詢、更新自己的使用者資訊|
  |FR-27|使用者可以查詢公開使用者資訊|
  |FR-28|使用者可以新增商品至收藏清單|
  |FR-29|使用者可以查詢、更新收藏清單|
  |FR-30|使用者可以查詢聊天歷史紀錄|
  |FR-31|系統紀錄使用者聊天訊息|
  |FR-32|系統建立與刪除聊天室|
  |FR-33|提供JWT token驗證使用者|
  |FR-34|RAG搜尋商品，提供更精確的搜尋結果|
---

## <span id="section7">非功能需求 (Non-functional Requirements)</span>
| 編號 | 類型 | 需求內容 |
| --- | ----- | ------|
|NFR-01|介面需求| 系統應提供直覺化介面，方便買家與賣家操作。                 |
| NFR-02 | 效能需求  | 系統應能同時支援至少 100 位使用者線上操作。              |
| NFR-03 | 效能需求  | 商品搜尋結果應在 3 秒內回應。                      |
| NFR-04 | 安全性需求 | 使用者密碼應以雜湊（hash）方式儲存。 
| NFR-05 | 相容性需求 | 系統應能在主流瀏覽器（Chrome、Edge、Firefox）上正常運作。 |


2025/12/20需求文件修改紀錄:
增加FR-25~FR-33
增加了優惠券、商品收藏、聊天、相關的功能
優惠券:有免運、買一送一、折XX元等類型，在結帳時可使用，創立新用戶、遇到節日都能獲得抽獎機會
商品收藏:方便使用者紀錄喜愛的商品，方便日後再次購買
聊天:提供買賣雙方傳遞訊息，系統會儲存與載入使用者間的對話紀錄
RAG搜尋:使用RAG(擷取增強生成)，提供更精確、低幻覺率的搜尋

---