Skip to content

Latest commit

 

History

History
313 lines (220 loc) · 11.4 KB

File metadata and controls

313 lines (220 loc) · 11.4 KB

📗 PRD - Atomic Task Matrix 產品需求文件

本文件採用 行為導向(BDD) + 使用者需求導向 結構,定義產品的核心價值、功能需求與驗收標準。


🧭 一、專案簡介

核心問題

使用者面臨「想做某件事但不知道如何開始」的拖延困境。大型任務(如「開始運動」)缺乏明確的第一步,導致遲遲無法啟動。同時,任務優先級混亂,不知道該先做哪件事。

解決方案

透過 艾森豪矩陣 提供視覺化的優先級分類,搭配 Gemini AI 原子習慣拆解,將大任務拆解成「穿上襪子」這樣的微小行動,消除心理阻力。所有資料即時同步到 Google Sheets,確保資料永久保存且便於分析。

核心價值主張

「完成比完美重要」—— 透過極簡化的起始動作,讓使用者立即行動而非持續拖延。


👥 二、目標使用者

使用者類型 需求或痛點 預期收益
個人使用者(主要) 任務太多不知從何開始,計畫總是無法執行 清楚知道該做什麼,從最小行動開始累積成就感
追求效率者 需要快速區分任務優先級 視覺化四象限立即判斷輕重緩急
習慣建立者 想養成習慣但起步困難 AI 拆解降低行動門檻,持續累積小勝利

: 當前版本僅供單一使用者使用,未來可擴充多使用者功能。


🎯 三、產品目標

主要目標

  1. 降低任務啟動阻力 - 透過 AI 拆解讓任何任務都有明確的「第一步」
  2. 提升任務完成率 - 四象限分類協助聚焦真正重要的事
  3. 培養執行習慣 - 小任務的完成累積正向回饋循環

衡量指標 (KPI)

指標 目標值 說明
任務完成率 ≥ 70% (已完成任務數 / 總建立任務數)
平均任務存活時間 ≤ 3 天 從建立到完成的平均天數,越短代表執行力越強
AI 拆解採納率 ≥ 80% 使用 AI 拆解功能後,實際執行子任務的比例
每週活躍度 ≥ 5 天 每週至少使用系統的天數

🧩 四、使用者故事 (User Stories)

採用 BDD (Given–When–Then) 格式

🎯 Story 1: 新增任務到待分類區

場景: 快速記錄新任務

  • Given 使用者打開系統且已連線到 Google Sheets
  • When 使用者在輸入框輸入「我要開始運動」並按下新增按鈕
  • Then 任務應出現在「待分類區」,並即時同步到 Google Sheets Tasks 分頁

業務規則:

  • 任務名稱不可為空
  • 新任務預設狀態為 uncategorized
  • 系統應顯示「新增成功」的視覺回饋

🔀 Story 2: 拖曳任務到艾森豪矩陣象限

場景: 任務優先級分類

  • Given 待分類區有任務「我要開始運動」
  • When 使用者將任務拖曳到「重要且緊急」象限
  • Then 任務應從待分類區消失,出現在目標象限,並更新 Google Sheets 狀態為 urgent_important

場景: 任務重新分類

  • Given 任務「我要開始運動」目前在「重要且緊急」象限
  • When 使用者將任務拖曳回「待分類區」
  • Then 任務應返回待分類區,狀態更新為 uncategorized

業務規則:

  • 拖曳過程有視覺化回饋(拖曳陰影、目標區域高亮)
  • 象限之間可互相拖曳
  • 任務被拖曳時有「鎖定」效果,避免誤觸

🤖 Story 3: AI 拆解任務

場景: 使用 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 狀態

✅ Story 4: 標記任務完成

場景: 完成任務並記錄

  • Given 使用者在「重要且緊急」象限有任務「穿上襪子」
  • When 使用者點擊任務上的「✓ 完成」按鈕
  • Then 任務應從畫面上消失
  • And Google Sheets 中該任務狀態更新為 completed
  • And 記錄完成時間 completed_at

業務規則:

  • 完成的任務不再顯示在任何象限
  • 完成資料保留在 Google Sheets 供統計使用
  • 完成時有簡短的動畫效果(淡出)

📊 Story 5: 查看每週統計

場景: 檢視任務執行績效

  • Given 使用者已使用系統一週以上
  • When 使用者打開統計面板
  • Then 系統應顯示:
    • 本週完成任務數
    • 本週平均任務存活時間(天數)
    • 完成率百分比

業務規則:

  • 統計資料每次開啟系統時自動計算
  • 資料來源為 Google Sheets Analytics 分頁
  • 平均存活時間 = Σ(完成時間 - 建立時間) / 完成任務數

🔌 Story 6: 連線狀態監控

場景: 系統啟動時檢查連線

  • Given 使用者開啟系統
  • When 系統初始化
  • Then 應嘗試連線到 Google Sheets API
  • And 顯示連線狀態:
    • 🟢 已連線 | 最後同步: 剛剛
    • 🔴 連線失敗 | 請檢查網路設定

場景: 同步過程中的狀態顯示

  • Given 使用者新增一個任務
  • When 系統正在同步到 Google Sheets
  • Then 連線燈號應顯示 🟡 連線中...
  • And 同步完成後恢復 🟢 已連線

業務規則:

  • 每次操作後檢查連線狀態
  • 連線失敗時阻止所有需要同步的操作
  • 顯示上次成功同步的時間戳記

⚙️ 五、功能需求 (Functional Requirements)

編號 功能名稱 說明 優先級 驗收準則
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: 次要功能,可後續迭代新增

🧱 六、非功能需求 (NFR)

類別 項目 指標或描述
效能 API 響應時間 Google Sheets API < 2 秒,Gemini API < 5 秒
效能 拖曳流暢度 60 FPS,無明顯延遲感
安全性 API 金鑰保護 config.js 不納入版本控制,使用 .gitignore
可用性 連線狀態可見性 使用者隨時知道系統連線狀態
可維護性 程式碼結構 單一 HTML 檔案,模組化 JavaScript 函式
相容性 瀏覽器支援 Chrome 90+, Firefox 88+, Safari 14+
可擴充性 架構設計 保留多使用者擴充空間

🧪 七、驗收測試 (Acceptance Criteria)

Story 測試案例 驗收條件
新增任務 輸入任務名稱後按新增 任務出現在待分類區,Google Sheets 有對應紀錄
拖曳分類 拖曳任務到「重要且緊急」 任務正確移動,Sheets 狀態為 urgent_important
拖曳分類 從象限拖回待分類區 任務返回待分類區,狀態為 uncategorized
AI 拆解 點擊「🤖 AI 拆解」 原任務消失,生成 3-5 個子任務,標記 parent_task_id
AI 拆解 API 失敗時 顯示錯誤訊息,原任務保持不變
標記完成 點擊「✓ 完成」按鈕 任務從畫面消失,Sheets 狀態為 completed
連線狀態 系統啟動 顯示 🟢/🔴 連線狀態
連線狀態 同步過程中 顯示 🟡 連線中...
每週統計 開啟統計面板 正確顯示本週完成數與平均存活時間

📅 八、里程碑 (Milestones)

編號 階段 內容 預計完成
M1 基礎架構 HTML 結構 + Tailwind 樣式 + Google Sheets API 連線 第 1 週
M2 核心功能 新增任務、拖曳分類、待分類區 第 2 週
M3 AI 整合 Gemini API 任務拆解、子任務關聯顯示 第 3 週
M4 統計與優化 完成率統計、連線狀態監控、錯誤處理 第 4 週
M5 測試與部署 手動測試檢查清單、部署到靜態託管 第 5 週

🧩 九、風險與假設 (Risks & Assumptions)

風險

類別 風險描述 影響程度 緩解措施
技術 Gemini API 響應時間過長 設定 5 秒 timeout,失敗時提供重試按鈕
技術 Google Sheets API 配額限制 單一使用者操作頻率不會超過配額
使用者 拖曳操作在行動裝置上體驗不佳 未來迭代加入觸控優化
資料 API 金鑰洩漏風險 使用 .gitignore 排除,提供範例設定檔

假設

  • 使用者有穩定的網路連線
  • 使用者理解艾森豪矩陣的四象限概念
  • 使用者願意等待 AI 拆解 3-5 秒
  • 使用者主要在桌面瀏覽器使用系統

📚 十、相關文件

文件 用途
README.md 專案架構與技術說明
SPEC.md API 與資料模型規格
PRD.md 產品需求文件(本檔)

🔄 十一、迭代計畫

Version 1.0 (MVP)

專注於核心功能:

  • ✅ 四象限拖曳分類
  • ✅ AI 任務拆解
  • ✅ Google Sheets 即時同步
  • ✅ 基礎統計(完成率)

Version 1.1 (未來增強)

  • 任務編輯與刪除功能
  • 更豐富的統計圖表
  • 任務標籤系統
  • 深色模式

Version 2.0 (多使用者)

  • 身份驗證系統
  • 多使用者資料隔離
  • 任務分享功能

📝 補充說明

設計哲學

本產品遵循「少即是多」的設計哲學:

  • 減少選擇疲勞: 只有四個象限,不需要複雜的標籤系統
  • 降低操作成本: 拖曳即分類,不需要多步驟表單
  • 即時回饋: 所有操作都有立即的視覺回饋
  • 聚焦執行: AI 拆解專注於「起始動作」,不是完整計畫

使用者體驗原則

  1. 零學習成本: 打開就能用,不需要教學
  2. 視覺化優先: 四象限一目了然,不需要文字說明
  3. 正向回饋: 完成任務有成就感,不是罪惡感
  4. 資料透明: 使用者隨時知道資料狀態(連線燈號)