--- # 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上  --- ## <span id="section3">操作概念 (Operational Concepts)</span>  小美今天想在海大拍賣平台上架一項商品。她登入帳號後,前往商品管理頁面。系統要求她輸入商品名稱、商品價格等資料並驗證是否可以新增。 可能的例外: 欄位填入不合理的值(價格<0或不存在的商品狀態等)或是空白: 系統在驗證階段就會告訴使用者,並阻止新增 尚未登入:要求使用者先登入,並跳轉至登入頁面  小美今天想在海大拍賣平台修改一項商品。她登入帳號後,前往商品管理頁面。系統只允許修改部分欄位,並驗證修改的合法性。 可能的例外: 欄位填入不合理的值(修改ID、數量<0等): 系統在驗證階段就會告訴使用者,並阻止修改 尚未登入:要求使用者先登入,並跳轉至登入頁面  小美今天想在海大拍賣平台刪除一項商品。她登入帳號後,前往商品管理頁面。系統只允許修改部分欄位,並驗證修改的合法性。 可能的例外: 欄位填入不合理的值(修改ID、數量<0等): 系統在驗證階段就會告訴使用者,並阻止修改 尚未登入:要求使用者先登入,並跳轉至登入頁面  小美今天想在海大拍賣平台查看商品。她進入網頁後,直接點擊商品卡片,就能看到關於這個商品的各項資訊。 可能的例外: 商品沒有圖片或圖片連結失效:用範例圖片先替代  有一天一位海大學生曉華想買柳橙汁,他進入首頁後,在上方的搜尋欄輸入"柳橙汁",系統便會為他展示所有搜尋結果,接著他可以點擊商品卡片瀏覽 可能的例外: 沒有相關的結果:系統會說"很抱歉,沒有柳橙汁的搜尋結果",請曉華換別的關鍵字試試看  有一天一位海大學生曉華想買柳橙汁,他進入柳橙汁的商品頁後,可以選擇數量,系統會檢查商品庫存確認是否可以買,曉華如果有登入系統會將柳橙汁放進購物車,否則要求他登入 可能的例外: 庫存不足:顯示:「庫存不足,無法加入購物車」。 欲購買數量格式錯誤(輸入0、負數、文字):顯示:「請輸入正確的購買數量」。 商品已下架/不存在:顯示:「此商品已下架或不存在」。  有一天一位海大學生曉華想買拍賣商品,他進入競標頁後,可以選擇出價,系統會檢查出價是否合理並更新目前最高價格,曉華如果有登入系統才允許他出價,否則要求登入,拍賣時間截止時,系統會自動建立訂單,並通知買家與賣家 可能的例外: 出價低於當前最高價格:顯示:「出價需高於目前最高出價」。 出價格式錯誤(例如輸入文字、負數、0)顯示:「請輸入有效的出價金額」。 拍賣時間已結束:顯示:「拍賣已結束,無法再出價」。  曉明確認好購物車內的商品,要進行結帳,系統會先檢查是否有登入,有的話會請曉明確認是否要結帳,選"是"後,系統就會建立訂單 可能的例外: 購物車為空:顯示「購物車無商品,無法進行結帳」 某項商品已售完或下架:顯示「部分商品目前無法購買,請重新整理購物車」。  曉明結帳後,系統會先檢查訂單是否成立,有的話會請曉明與賣家溝通,選擇付費方法 可能的例外: 訂單不存在:顯示:「訂單不存在,無法進行付款」。  --- ## <span id="section4">使用者故事地圖 (User Story Map)</span>  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> **首頁:**  **說明** 使用者登入成功後會看到的頁面。 - 左上角為網站的齒輪圖示(網站標誌) - 中間為搜尋欄位 - 右上角為購物車與通知按鈕 - 左側長方形區塊可依價格、類別等條件篩選商品 - 頁面下方提供分頁切換功能 --- **購物車:**  **說明** - 商品名稱左方的圈圈可勾選是否選取該商品 - 數量欄位提供 "+" 與 "-" 按鈕 - 下方即時顯示目前總金額 - 點擊"去結帳"後,會跳出通知訊息並導向付款頁面 --- **結帳:**  **說明** - 顯示購買商品與其所屬商家 - 使用者需填寫地址與付款方式(貨到付款、信用卡等) - 完成後按下"結帳"按鈕即可完成購物流程 --- **商品頁面:**  **說明** - 顯示商品詳細資訊 - 下方三個框為相似商品的預覽區塊 - 提供使用者快速瀏覽並選擇其他相似商品 --- ## <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(擷取增強生成),提供更精確、低幻覺率的搜尋 ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up