iT邦幫忙

2026 iThome 鐵人賽

DAY 4
2

Day3_在開始設計之前,先看看User Story

很多軟體的開發案,在開始之前,有些客戶會給一些期望開發的一些內容,
假設今天收到的規格如下:

Project Management Web應用程式開發

開發一個供公司內部使用的 Web 應用程式,讓團隊以專案為範圍管理成員與 Task Item。前台使用者可以查看 Task Item 列表,並依權限修改狀態、設定交付時間及查看詳情

每位使用者登入後,只會看到自己有權限查看的專案與 Task Item。Viewer 只能瀏覽資料,不能新增、修改或刪除任何系統資料。取得其他角色後,被指派者才可以修改自己 Task Item 的狀態與交付時間,也可以在 Task 詳情中留言。

Task 狀態是所有專案成員共用的工作狀態,不會為每位使用者分開保存。checkbox 只用於選取目前頁面中要批次修改的 Task,重新整理頁面或完成操作後就會清除,不會寫入資料庫。「不再顯示批次確認視窗」則屬於個人偏好,系統會依使用者分開保存,並提供重新開啟的方法。

這個開發題圍繞一個名為 "Project Management" 的網頁介面展開。前台使用者可以查看專案內的 Task Item,選取一筆或多筆資料,設定目標狀態後按下「確認」。後端會逐筆檢查權限、指派關係與狀態轉換,全部通過後才會一次更新。

使用者也可以點擊 Task Item 查看詳細資料、修改有權限調整的欄位,以及閱讀或新增留言。

後台需提供介面或 API,讓後台管理員新增、修改及軟刪除 Task Item。所有新增、修改、刪除與角色異動都必須由後端檢查權限,不能只依賴前端按鈕是否顯示。

使用註冊

  1. 透過設定帳號、密碼與 E-mail 進行註冊,註冊完成後預設取得 Viewer 系統角色
  2. 系統會透過 Gmail SMTP 寄出 E-mail 驗證信;完成驗證前,使用者只能以 Viewer 身分登入及瀏覽有權限查看的資料,不得進行任何修改操作
  3. E-mail 驗證通過後不會自動變更角色,使用者仍是 Viewer,直到 Admin 將其調整為其他系統角色
  4. 只有 Admin 可以在 E-mail 驗證通過後,將 Viewer 調整為其他系統角色;未完成驗證的帳號不得變更為其他角色。後台管理員與專案管理者只能依權限管理專案成員及專案角色

使用角色

  1. 前台使用者(User
  2. 後台管理員(Administrator
  3. 最高管理者(Admin
  4. 瀏覽者(Viewer):只能查看有權限存取的資料,不得新增、修改、刪除、留言、切換 Task 狀態或調整角色

User Stories

前台使用者

  1. 查看 Task Item 列表
    作為專案成員,我想要在網頁上查看自己有權限存取的 Task Item 列表,以便掌握專案工作進度。
  • 列表呈現:

    • 提供下拉選單,可依狀態、指派對象與「只看我的 Task」篩選。
    • 提供輸入欄,可模糊搜尋 Task 編號、標題與描述。
    • 進入 /projects/{projectId}/task-items 頁面時,顯示 checkbox、Task 編號、標題、交付期限、狀態、建立者與指派對象。
    • 沒有符合條件的資料時,顯示明確的空狀態訊息。
  • 欄位一致性:

    • 每筆資料預設依新增時間由新到舊排序,並可切換升冪或降冪。清單支援分頁,搜尋、篩選、排序及分頁條件會保存在 URL query string。
  1. 狀態切換(根據勾選的 Task Item,設定目標狀態後,按下確認進行狀態切換)

    作為被指派者或後台管理員,我想要勾選一筆或多筆 Task Item,並設定要切換的狀態,以便一次更新工作進度。

  • 多選功能:

    • 每列 Task Item 左側有一個 checkbox,沒有修改權限的項目則為 Disabled;Viewer 看到的 checkbox 一律為 Disabled。
    • 點擊 checkbox 後,該列會顯示已選取狀態。
    • 表頭提供「全選」checkbox,只會選取目前頁面中有權限修改的項目。
  • 狀態切換操作:

    • 提供下拉選單,讓使用者選擇要修改成哪一個狀態。
    • 未選取 Task 或尚未選擇目標狀態時,「確認」按鈕為 Disabled。
    • 點擊「確認」後,系統會顯示目標狀態與選取數量,再送出 API 請求。
    • 後端會逐筆檢查專案權限、指派關係與狀態轉換,並以單一交易更新;其中一筆失敗時,全部資料都不更新。
    • 更新完成後,清除所有 checkbox,並在畫面上顯示最新的 Task 狀態。
    • 確認視窗提供「取消」與「確定」兩個選項;選擇「取消」時不進行任何變更。
    • 使用者勾選「之後不再詢問」後,可以略過後續的批次確認視窗,也可以到個人設定重新開啟。
    • 只有具備修改權限的被指派者、後台管理員或 Admin 可以切換狀態,Viewer 不得執行此操作。
  • 使用者反饋:

    • 更新成功後,顯示提示訊息,例如「已成功修改 X 個項目的狀態」。
    • 權限不足、狀態衝突或伺服器失敗時,保留原畫面資料並顯示錯誤原因。
  1. 保持操作狀態

    作為專案成員,我想要在重新開啟頁面時看到最新的 Task 狀態,以便接續追蹤工作進度。

  • 資料持久化:
    • Task 狀態會儲存在後端,所有有權限查看該 Task 的專案成員都會看到相同結果;checkbox 不會保存。
  • 重新載入:
    • 使用者關閉或重新整理瀏覽器後,再次開啟 Task Item 清單時,系統會從後端載入最新狀態。
  1. 查看 Task Item 詳情

    作為專案成員,我想要點擊某個 Task Item 查看詳細資料,以便了解工作內容與討論紀錄。

  • 詳細頁面:

    • 在列表每列提供「查看詳情」按鈕或連結,也可以讓整列資料支援點擊。
    • 點擊後導向 /projects/{projectId}/task-items/{taskId},頁面顯示 Task 編號、標題、描述、開始時間、交付期限、建立者、指派對象、狀態、建立時間及最後更新時間。
    • 具備修改權限的被指派者可以修改狀態與交付期限,後台管理員可以修改全部可編輯欄位;Viewer 只能查看。
    • 頁面提供留言串,顯示留言作者、內容與時間。具備留言權限的專案成員可以新增留言,Viewer 只能閱讀既有留言。
  • 返回列表:

    • 詳情頁提供「返回列表」連結或按鈕,返回後保留原本的搜尋、篩選、排序與分頁條件。

後台管理員

  1. 新增 Task Item

    作為後台管理員,我想要在專案中新增 Task Item,以便指派並追蹤工作。

  • 新增表單:

    • 管理後台提供 /admin/projects/{projectId}/task-items/new 頁面,包含專案、標題、描述、開始時間、交付期限及指派對象等欄位。
  • 驗證規則:

    • 專案、標題與指派對象為必填;指派對象必須是該專案的有效成員,開始時間不得晚於交付期限。驗證失敗時顯示欄位錯誤並禁止提交。
  • 提交行為:

    • 新增成功後,Task 初始狀態為 Pending,系統顯示成功訊息並導向 Task 詳情。
  1. 修改 Task Item

    作為後台管理員,我想要修改現有的 Task Item,以便修正內容或調整工作安排。

  • 編輯介面:
    • 在管理列表每列提供「編輯」按鈕,點擊後進入 /admin/projects/{projectId}/task-items/{taskId}/edit,並預填目前資料。
  • 驗證規則:
    • 可修改標題、描述、開始時間、交付期限、指派對象與狀態,欄位規則與新增 Task 相同。驗證失敗時顯示錯誤並禁止儲存。
  • 提交行為:
    • 儲存時檢查資料版本,避免覆蓋其他使用者已完成的修改;發生版本衝突時顯示衝突訊息,成功時顯示最新資料。
  1. 刪除 Task Item

作為後台管理員,我想要移除不再需要的 Task Item,以便讓一般清單只保留仍在使用的資料。

  • 刪除操作:

    • 每列提供「刪除」按鈕。點擊後顯示 Task 標題,並說明刪除後不會出現在一般清單,也無法由使用者自行復原。
  • 確認後行為:

    • 點擊「確定」後送出軟刪除請求。成功時返回 Task 清單並顯示成功訊息;失敗時保留原畫面並顯示錯誤訊息。已刪除的 Task、相關留言與稽核紀錄仍會保留。

看完以上需求,我想信讀到這邊,有點經驗的開發人員,已經有點想法了,但是剛入行沒多久的人呢?接下來的章節,我們會一一拆解需求


上一篇
Day2_先別急著寫Code,我們先來了解什麼是運算思維?
下一篇
Day4_Mermaid:是一個人機協作的一個好工具
系列文
Codex的規格驅動開發 :30 天打造 .NET 內部專案管理系統5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言