本文件採用 行為導向(BDD) + 使用者需求導向 結構,定義產品的核心價值、功能需求與驗收標準。
使用者面臨「想做某件事但不知道如何開始」的拖延困境。大型任務(如「開始運動」)缺乏明確的第一步,導致遲遲無法啟動。同時,任務優先級混亂,不知道該先做哪件事。
透過 艾森豪矩陣 提供視覺化的優先級分類,搭配 Gemini AI 原子習慣拆解,將大任務拆解成「穿上襪子」這樣的微小行動,消除心理阻力。所有資料即時同步到 Google Sheets,確保資料永久保存且便於分析。
「完成比完美重要」—— 透過極簡化的起始動作,讓使用者立即行動而非持續拖延。
| 使用者類型 | 需求或痛點 | 預期收益 |
|---|---|---|
| 個人使用者(主要) | 任務太多不知從何開始,計畫總是無法執行 | 清楚知道該做什麼,從最小行動開始累積成就感 |
| 追求效率者 | 需要快速區分任務優先級 | 視覺化四象限立即判斷輕重緩急 |
| 習慣建立者 | 想養成習慣但起步困難 | AI 拆解降低行動門檻,持續累積小勝利 |
註: 當前版本僅供單一使用者使用,未來可擴充多使用者功能。
- 降低任務啟動阻力 - 透過 AI 拆解讓任何任務都有明確的「第一步」
- 提升任務完成率 - 四象限分類協助聚焦真正重要的事
- 培養執行習慣 - 小任務的完成累積正向回饋循環
| 指標 | 目標值 | 說明 |
|---|---|---|
| 任務完成率 | ≥ 70% | (已完成任務數 / 總建立任務數) |
| 平均任務存活時間 | ≤ 3 天 | 從建立到完成的平均天數,越短代表執行力越強 |
| AI 拆解採納率 | ≥ 80% | 使用 AI 拆解功能後,實際執行子任務的比例 |
| 每週活躍度 | ≥ 5 天 | 每週至少使用系統的天數 |
採用 BDD (Given–When–Then) 格式
場景: 快速記錄新任務
- Given 使用者打開系統且已連線到 Google Sheets
- When 使用者在輸入框輸入「我要開始運動」並按下新增按鈕
- Then 任務應出現在「待分類區」,並即時同步到 Google Sheets Tasks 分頁
業務規則:
- 任務名稱不可為空
- 新任務預設狀態為
uncategorized - 系統應顯示「新增成功」的視覺回饋
場景: 任務優先級分類
- Given 待分類區有任務「我要開始運動」
- When 使用者將任務拖曳到「重要且緊急」象限
- Then 任務應從待分類區消失,出現在目標象限,並更新 Google Sheets 狀態為
urgent_important
場景: 任務重新分類
- Given 任務「我要開始運動」目前在「重要且緊急」象限
- When 使用者將任務拖曳回「待分類區」
- Then 任務應返回待分類區,狀態更新為
uncategorized
業務規則:
- 拖曳過程有視覺化回饋(拖曳陰影、目標區域高亮)
- 象限之間可互相拖曳
- 任務被拖曳時有「鎖定」效果,避免誤觸
場景: 使用 Gemini 拆解大任務
- Given 使用者選中任務「我要開始運動」
- When 使用者點擊「🤖 AI 拆解」按鈕
- Then 系統應呼叫 Gemini API,原任務消失,生成 3-5 個子任務:
- 「🔗 來自運動 | 穿上襪子」
- 「🔗 來自運動 | 換上運動服」
- 「🔗 來自運動 | 做 5 分鐘暖身」
- And 子任務繼承原任務的象限分類
- And 子任務的
parent_task_id欄位記錄原任務 ID
場景: API 呼叫失敗處理
- Given 使用者點擊「🤖 AI 拆解」按鈕
- When Gemini API 回傳錯誤(網路問題/額度用完)
- Then 系統應顯示錯誤提示:「AI 分析暫時無法使用,請稍後再試」
- And 原任務保持不變
業務規則:
- 只有被選中的任務才會顯示 AI 拆解按鈕
- 子任務名稱前綴「🔗 來自[原任務名稱]」
- AI 拆解時顯示 Loading 狀態
場景: 完成任務並記錄
- Given 使用者在「重要且緊急」象限有任務「穿上襪子」
- When 使用者點擊任務上的「✓ 完成」按鈕
- Then 任務應從畫面上消失
- And Google Sheets 中該任務狀態更新為
completed - And 記錄完成時間
completed_at
業務規則:
- 完成的任務不再顯示在任何象限
- 完成資料保留在 Google Sheets 供統計使用
- 完成時有簡短的動畫效果(淡出)
場景: 檢視任務執行績效
- Given 使用者已使用系統一週以上
- When 使用者打開統計面板
- Then 系統應顯示:
- 本週完成任務數
- 本週平均任務存活時間(天數)
- 完成率百分比
業務規則:
- 統計資料每次開啟系統時自動計算
- 資料來源為 Google Sheets Analytics 分頁
- 平均存活時間 = Σ(完成時間 - 建立時間) / 完成任務數
場景: 系統啟動時檢查連線
- Given 使用者開啟系統
- When 系統初始化
- Then 應嘗試連線到 Google Sheets API
- And 顯示連線狀態:
- 🟢 已連線 | 最後同步: 剛剛
- 🔴 連線失敗 | 請檢查網路設定
場景: 同步過程中的狀態顯示
- Given 使用者新增一個任務
- When 系統正在同步到 Google Sheets
- Then 連線燈號應顯示 🟡 連線中...
- And 同步完成後恢復 🟢 已連線
業務規則:
- 每次操作後檢查連線狀態
- 連線失敗時阻止所有需要同步的操作
- 顯示上次成功同步的時間戳記
| 編號 | 功能名稱 | 說明 | 優先級 | 驗收準則 |
|---|---|---|---|---|
| FR-1 | 新增任務 | 使用者可輸入任務名稱並新增到待分類區 | P0 | 任務出現在待分類區且同步到 Sheets |
| FR-2 | 拖曳分類 | 使用者可拖曳任務到四象限或待分類區 | P0 | 任務正確移動且狀態更新 |
| FR-3 | AI 任務拆解 | 使用 Gemini API 將大任務拆解成小步驟 | P0 | 原任務消失,子任務正確生成並標記關聯 |
| FR-4 | 標記完成 | 使用者可標記任務完成 | P0 | 任務從畫面消失,Sheets 狀態更新為 completed |
| FR-5 | 連線狀態監控 | 即時顯示 Google Sheets 連線狀態 | P0 | 燈號正確反映連線狀態 |
| FR-6 | 每週統計 | 計算並顯示平均任務存活時間 | P1 | 統計數據與 Sheets 資料一致 |
| FR-7 | 任務編輯 | 使用者可修改任務名稱 | P2 | 編輯後即時同步 |
| FR-8 | 任務刪除 | 使用者可刪除任務 | P2 | 任務從 Sheets 移除 |
優先級說明:
- P0: 核心功能,MVP 必須包含
- P1: 重要功能,首次發布應包含
- P2: 次要功能,可後續迭代新增
| 類別 | 項目 | 指標或描述 |
|---|---|---|
| 效能 | API 響應時間 | Google Sheets API < 2 秒,Gemini API < 5 秒 |
| 效能 | 拖曳流暢度 | 60 FPS,無明顯延遲感 |
| 安全性 | API 金鑰保護 | config.js 不納入版本控制,使用 .gitignore |
| 可用性 | 連線狀態可見性 | 使用者隨時知道系統連線狀態 |
| 可維護性 | 程式碼結構 | 單一 HTML 檔案,模組化 JavaScript 函式 |
| 相容性 | 瀏覽器支援 | Chrome 90+, Firefox 88+, Safari 14+ |
| 可擴充性 | 架構設計 | 保留多使用者擴充空間 |
| Story | 測試案例 | 驗收條件 |
|---|---|---|
| 新增任務 | 輸入任務名稱後按新增 | 任務出現在待分類區,Google Sheets 有對應紀錄 |
| 拖曳分類 | 拖曳任務到「重要且緊急」 | 任務正確移動,Sheets 狀態為 urgent_important |
| 拖曳分類 | 從象限拖回待分類區 | 任務返回待分類區,狀態為 uncategorized |
| AI 拆解 | 點擊「🤖 AI 拆解」 | 原任務消失,生成 3-5 個子任務,標記 parent_task_id |
| AI 拆解 | API 失敗時 | 顯示錯誤訊息,原任務保持不變 |
| 標記完成 | 點擊「✓ 完成」按鈕 | 任務從畫面消失,Sheets 狀態為 completed |
| 連線狀態 | 系統啟動 | 顯示 🟢/🔴 連線狀態 |
| 連線狀態 | 同步過程中 | 顯示 🟡 連線中... |
| 每週統計 | 開啟統計面板 | 正確顯示本週完成數與平均存活時間 |
| 編號 | 階段 | 內容 | 預計完成 |
|---|---|---|---|
| M1 | 基礎架構 | HTML 結構 + Tailwind 樣式 + Google Sheets API 連線 | 第 1 週 |
| M2 | 核心功能 | 新增任務、拖曳分類、待分類區 | 第 2 週 |
| M3 | AI 整合 | Gemini API 任務拆解、子任務關聯顯示 | 第 3 週 |
| M4 | 統計與優化 | 完成率統計、連線狀態監控、錯誤處理 | 第 4 週 |
| M5 | 測試與部署 | 手動測試檢查清單、部署到靜態託管 | 第 5 週 |
| 類別 | 風險描述 | 影響程度 | 緩解措施 |
|---|---|---|---|
| 技術 | Gemini API 響應時間過長 | 中 | 設定 5 秒 timeout,失敗時提供重試按鈕 |
| 技術 | Google Sheets API 配額限制 | 低 | 單一使用者操作頻率不會超過配額 |
| 使用者 | 拖曳操作在行動裝置上體驗不佳 | 中 | 未來迭代加入觸控優化 |
| 資料 | API 金鑰洩漏風險 | 高 | 使用 .gitignore 排除,提供範例設定檔 |
- 使用者有穩定的網路連線
- 使用者理解艾森豪矩陣的四象限概念
- 使用者願意等待 AI 拆解 3-5 秒
- 使用者主要在桌面瀏覽器使用系統
| 文件 | 用途 |
|---|---|
README.md |
專案架構與技術說明 |
SPEC.md |
API 與資料模型規格 |
PRD.md |
產品需求文件(本檔) |
專注於核心功能:
- ✅ 四象限拖曳分類
- ✅ AI 任務拆解
- ✅ Google Sheets 即時同步
- ✅ 基礎統計(完成率)
- 任務編輯與刪除功能
- 更豐富的統計圖表
- 任務標籤系統
- 深色模式
- 身份驗證系統
- 多使用者資料隔離
- 任務分享功能
本產品遵循「少即是多」的設計哲學:
- 減少選擇疲勞: 只有四個象限,不需要複雜的標籤系統
- 降低操作成本: 拖曳即分類,不需要多步驟表單
- 即時回饋: 所有操作都有立即的視覺回饋
- 聚焦執行: AI 拆解專注於「起始動作」,不是完整計畫
- 零學習成本: 打開就能用,不需要教學
- 視覺化優先: 四象限一目了然,不需要文字說明
- 正向回饋: 完成任務有成就感,不是罪惡感
- 資料透明: 使用者隨時知道資料狀態(連線燈號)