PM → 工程師 · 通知中心

通知中心 · 功能文件

上半是可以直接操作的原型,UI 與操作邏輯看這個;下半是資料欄位、行為規則與邊界情況。 看到哪裡有問題,把那段話反白留言就好——我會知道你在講哪一段。

背景

下一個版本要加通知中心。與其寫三千字讓你自己想像,我直接做一個給你按,再把規格附在下面。

這一頁就是要交給你的文件:原型定 UI 與操作、規格定資料與規則、最後四題是我需要你判斷的技術決定。

1先按原型切換左邊情境,點通知、按「全部已讀」、切換類型
2往下看規格流程、欄位、規則、邊界;有問題就把那段反白留言
3看完規格再答四題那四題我沒辦法自己決定,需要你的技術判斷
原型

先按按看

右邊的列表是真的能點的

左邊切換情境,右邊直接操作。UI 與操作邏輯以這個原型為準, 下面的規格是它背後的資料與規則。

情境
通知 0
規格

資料與行為

下面是實作要照的東西

原型講的是「長什麼樣、怎麼動」,這一段講的是「資料怎麼存、規則怎麼判」。 有疑問一樣反白留言就好。

一則通知的一生
系統端 事件發生出貨 · 審批 · 系統公告 建立一筆通知寫入 notification 推送給對象見 Q3 的推送方式 紅點 +1超過 99 見 Q1 使用者端 點開通知中心載入最近 30 則 點某一則或按「全部已讀」 標為已讀 · 紅點 −1立刻更新,不等後端 有連結?target_url 沒有 跳到對應頁面 留在原地 這兩條走哪一條,見 Q4
資料欄位
欄位型別說明備註
idstring通知唯一碼UUID,前端不解析內容
user_idstring收件人一則通知只對應一個人;多人要各建一筆
typeenum訂單 / 審批 / 系統決定列表上的標籤顏色與篩選
titlestring顯示文字最長 60 字,超過在後端截斷並補「…」
target_urlstring?點擊跳轉目標可為空。空的時候點了只標已讀
is_readboolean已讀狀態預設 false
created_atdatetime產生時間列表用這個排序,新的在上
read_atdatetime?讀取時間標已讀時寫入,之後可用來做清理
行為規則
紅點數字
等於這個使用者的未讀總數。不受類型篩選影響——切到「訂單」時紅點仍顯示全部未讀。
點一則
立刻在前端標成已讀、紅點減一,同時送 API。API 失敗不要把畫面改回去,下次載入會校正。
全部已讀
把當前使用者所有未讀標成已讀,一支 API 處理,不要前端迴圈打 N 次。
列表載入
預設最近 30 則,往下捲再載 30。不做分頁按鈕。
排序
一律 created_at 由新到舊。已讀的不沉底、不分組。
即時性
紅點與列表的更新方式見下面 Q3,那題還沒定。
邊界情況
情況預期行為對照
完全沒有通知顯示空狀態:「目前沒有通知 / 有新的訂單或審批就會出現在這裡」原型左邊第 4 個情境
某個類型沒有通知顯示「這個類型沒有通知 / 換個類型看看」,紅點不變原型切篩選就看得到
未讀超過 99紅點顯示上限值,實際數字不顯示見 Q1,原型第 2 個情境
target_url 為空點了只標已讀,畫面留在原地原型現在就是這個行為
同一則在兩台裝置同時點以先到的為準,第二次呼叫回 200 不報錯冪等,不要跳錯誤訊息
通知超過 30 天待確認見 Q2,原型第 5 個情境
使用者被停用不再產生新通知,既有的保留不影響現有資料
待確認

四題需要你的技術判斷

選完按最下面複製給我
Q1

未讀數超過 99 要怎麼顯示?

旺季一天可能上百則。這個決定紅點的呈現與後端要不要算精確數字。

Q2

已讀的通知要留多久?

這決定資料表會長多大,以及要不要排清理排程。

Q3

新通知怎麼進來?

這題影響架構,我先講我要的體驗,可行性你評估。

Q4

點一則通知之後?

我原型裡是「點了就標已讀、留在原地」,但實際上可能要跳轉。

⌘ + Enter 送出 · Esc 取消
— 我的評論