今天讓網站能一眼看出哪些事項已經逾期,並在清單上方顯示統計數字。
今天做的事
後端新增 GET /api/todos/stats,用一條 SQL 一次算出四個數字:
SELECT
COUNT(*) AS total,
COALESCE(SUM(done), 0) AS done,
COALESCE(SUM(CASE WHEN done = 0 THEN 1 ELSE 0 END), 0) AS pending,
COALESCE(SUM(CASE WHEN done = 0 AND due_date IS NOT NULL
AND due_date < date('now', 'localtime') THEN 1 ELSE 0 END), 0) AS overdue
FROM todos
前端在清單上方顯示「共幾筆|未完成幾筆|已完成幾筆|已逾期幾筆」,未完成且已過截止日的項目會顯示紅字和「⚠ 已逾期」。新增、完成、刪除之後,統計數字都會跟著更新。
觀察
心得
資料庫算好數字再傳給前端,比前端把整份清單抓下來自己算更合理,資料多了也不會拖慢畫面。逾期的判斷牽涉到時區,一個小小的'localtime'就能差一天,這種細節不實際測試很難發現。