Skip to content

API 文檔缺失深度評估

📅 評估日期: 2025-10-07 🎯 目的: 評估短期 vs 長期方案,制定 API 文檔完善策略


現況統計

實際 API 服務統計

  • 總服務檔案數: 29 個 (排除 base/ 和 ai/ 子目錄後)
  • ServiceFactory: 1 個核心工廠
  • 業務 API 服務: 22 個
  • AI 相關服務: 5 個 (ai/ 子目錄)

現有 API 文檔統計

  • 已文檔化: 4 個
    • business-health-analytics-api.md
    • campaign-type-api.md
    • inventory-operations.md
    • notification-system.md

文檔缺口統計

  • 未文檔化服務: 18 個核心業務 API
  • 覆蓋率: 18% (4/22)
  • 缺口率: 82% (18/22)

🔍 未文檔化 API 服務清單

🔥 P0 級別 - 核心業務 API (必須優先處理)

1. CustomerApiService - 客戶管理 API

  • 業務重要性: ⭐⭐⭐⭐⭐ (核心業務)
  • 方法複雜度: 高 (包含 RFM 分析、分頁、搜尋)
  • 使用頻率: 極高 (多個頁面依賴)
  • 關鍵方法:
    • getAll() - 客戶列表查詢 (支援分頁、搜尋、過濾)
    • getById() - 客戶詳細資訊
    • create() / update() / delete() - CRUD 操作
    • getCustomerOverview() - 客戶概覽統計
    • getCustomerRfmOverview() - RFM 分析概覽
  • 資料映射: CustomerDbCustomer / DbCustomerDetail
  • 特殊功能: RFM 分段、AOV 計算、軟刪除支援

2. OrderApiService - 訂單管理 API

  • 業務重要性: ⭐⭐⭐⭐⭐ (核心業務)
  • 方法複雜度: 極高 (包含訂單項目、付款、運送資訊)
  • 使用頻率: 極高 (訂單系統核心)
  • 關鍵方法:
    • getAll() - 訂單列表查詢 (支援複雜過濾)
    • getById() - 訂單詳情 (含訂單項目、用戶資訊)
    • create() / update() / delete() - 訂單生命週期管理
    • updateStatus() - 訂單狀態變更
    • getOrderItems() - 訂單項目查詢
    • getDailySalesData() - 日銷售數據 (7天、30天)
    • updateTrackingNumber() - 物流追蹤號更新
  • 資料映射: OrderDbOrder (含關聯 order_items, payments)
  • 特殊功能: 訂單狀態機、付款狀態同步、運送追蹤

3. ProductApiService - 產品管理 API

  • 業務重要性: ⭐⭐⭐⭐⭐ (核心業務)
  • 方法複雜度: 高 (含庫存管理、分類、翻譯)
  • 使用頻率: 極高 (產品系統核心)
  • 關鍵方法:
    • getAll() - 產品列表查詢
    • getById() - 產品詳情
    • create() / update() / delete() - 產品 CRUD
    • updateStock() - 庫存更新
    • getLowStockProducts() - 低庫存預警
    • getCategoryProducts() - 分類產品查詢
  • 資料映射: ProductDbProduct
  • 特殊功能: 庫存預警、多語言支援、分類關聯

4. DashboardApiService - 儀表板統計 API

  • 業務重要性: ⭐⭐⭐⭐⭐ (首頁核心)
  • 方法複雜度: 高 (多維度統計分析)
  • 使用頻率: 極高 (首頁載入必用)
  • 關鍵方法:
    • getOverviewStats() - 綜合概覽統計
    • getSalesData() - 銷售趨勢數據
    • getRecentOrders() - 最近訂單
    • getTopProducts() - 熱銷商品排行
    • getBusinessHealthMetrics() - 業務健康度指標
    • getSystemStabilityMetrics() - 系統穩定度 (含 Realtime 監控)
  • 資料映射: 多種統計類型 (BusinessHealthMetrics, SalesData)
  • 特殊功能: 7 維度業務健康雷達圖、系統穩定度計算

5. CampaignApiService - 活動管理 API

  • 業務重要性: ⭐⭐⭐⭐ (行銷核心)
  • 方法複雜度: 高 (含活動排程、預算、成效追蹤)
  • 使用頻率: 高 (行銷活動管理)
  • 關鍵方法:
    • getAll() - 活動列表
    • getById() - 活動詳情
    • create() / update() / delete() - 活動管理
    • updateStatus() - 活動狀態變更
    • getCampaignPerformance() - 活動成效分析
    • validateDateRange() - 活動期間驗證
  • 資料映射: CampaignDbCampaign
  • 特殊功能: 活動排程、預算控制、成效追蹤

🟡 P1 級別 - 重要業務 API (短期應處理)

6. CampaignAnalyticsApiService - 活動分析 API

  • 業務重要性: ⭐⭐⭐⭐ (分析核心)
  • 方法複雜度: 極高 (6大分析模組)
  • 使用頻率: 高 (活動分析頁面)
  • 關鍵分析模組:
    • 總覽分析 (Overview Analysis)
    • 歸因分析 (Attribution Analysis)
    • 協作分析 (Collaboration Analysis)
    • 重疊分析 (Overlap Analysis)
    • 趨勢分析 (Performance Trends)
    • 規則管理 (Attribution Rules)

7. UserApiService - 用戶管理 API

  • 業務重要性: ⭐⭐⭐⭐ (權限系統核心)
  • 方法複雜度: 中 (CRUD + 角色關聯)
  • 使用頻率: 高 (用戶管理頁面)

8. RoleApiService - 角色權限 API

  • 業務重要性: ⭐⭐⭐⭐ (權限系統核心)
  • 方法複雜度: 中
  • 使用頻率: 高 (權限管理)

9. ConversationApiService - 客服對話 API

  • 業務重要性: ⭐⭐⭐⭐ (客服系統核心)
  • 方法複雜度: 中高 (包含訊息管理)
  • 使用頻率: 高 (客服頁面)

🟢 P2 級別 - 分析與統計 API (中期處理)

10. OrderAnalyticsService - 訂單分析

11. ProductAnalyticsService - 產品分析

12. CustomerAnalyticsZeroExpansionService - 客戶零擴展分析

13. CustomerSegmentationService - 客戶分群

14. SupportAnalyticsApiService - 客服分析

🔵 P3 級別 - 輔助功能 API (長期處理)

15. CampaignScoringApiService - 活動評分

16. CampaignTypeApiService - 活動類型 (已有文檔 ✅)

17. GroupNotificationApiService - 群組通知

18. HolidayApiService - 假日管理

19. AgentApiService - Agent 管理

20. NotificationService - 通知服務 (已有 notification-system.md ✅)

21. BusinessHealthAnalyticsService - 業務健康分析 (已有文檔 ✅)


方案評估:短期 vs 長期

方案一:短期人工文檔化 (Manual Documentation)

執行策略

  1. 優先級分批處理

    • Phase 1: P0 核心 API (5個) - 1 週
    • Phase 2: P1 重要 API (4個) - 3 天
    • Phase 3: P2 分析 API (5個) - 5 天
    • Phase 4: P3 輔助 API (4個) - 2 天
  2. 標準化文檔模板

    markdown
    # [Service名稱] API 文檔
    
    ## 📋 概覽
    - 業務用途
    - 核心功能
    - 依賴關係
    
    ## 🔌 API 方法
    ### getAll() - 列表查詢
    ### getById() - 詳情查詢
    ### create() - 新增
    ### update() - 更新
    ### delete() - 刪除
    
    ## 📊 資料結構
    ### Entity 類型
    ### DbEntity 類型
    ### 映射邏輯
    
    ## 💡 使用範例
    ## ⚠️ 注意事項
    ## 🔗 相關文檔
  3. 工作量估算

    • 每個 P0 API: 2-3 小時 (複雜度高)
    • 每個 P1 API: 1.5-2 小時
    • 每個 P2 API: 1-1.5 小時
    • 每個 P3 API: 0.5-1 小時
    • 總時數: 約 30-40 小時

優點

  • 立即見效: 每個文檔完成後立刻可用
  • 內容深度: 人工撰寫可包含業務邏輯、最佳實踐、注意事項
  • 靈活性高: 可針對不同 API 特性調整文檔結構
  • 低技術風險: 無需開發自動化工具,風險可控
  • 維護簡單: 代碼變更時手動更新對應章節即可

缺點

  • 時間成本高: 30-40 小時人工撰寫時間
  • 一致性風險: 不同時間撰寫可能導致風格不一致
  • 維護負擔: 代碼變更時需手動同步更新文檔
  • 容易過時: 無自動化機制確保文檔與代碼一致性

ROI 分析

  • 短期投資: 30-40 小時 (一次性)
  • 長期維護: 每次 API 變更 10-30 分鐘 × 頻率
  • 價值產出:
    • 新團隊成員 onboarding 時間減少 60%
    • API 誤用導致的 bug 減少 40%
    • 前後端溝通效率提升 50%

🤖 方案二:長期自動化生成 (Automated Documentation)

執行策略

  1. 技術選型

    • 選項 A: TypeDoc + 自定義模板
    • 選項 B: API Extractor + API Documenter
    • 選項 C: 自定義 AST 分析 + Markdown 生成器
  2. 建議方案: TypeDoc + Custom Plugin

    bash
    # 安裝依賴
    npm install --save-dev typedoc typedoc-plugin-markdown
    
    # 配置 typedoc.json
    {
      "entryPoints": ["src/api/services"],
      "out": "docs/02-development/api/auto-generated",
      "plugin": ["typedoc-plugin-markdown"],
      "excludePrivate": true,
      "excludeInternal": true
    }
    
    # 執行生成
    npx typedoc
  3. 增強功能開發

    • 自定義 Plugin: 識別 BaseApiService 繼承關係
    • 範例提取: 從測試檔案自動提取使用範例
    • 業務標註: 支援 @businessLogic JSDoc 標籤
    • 依賴圖生成: 自動生成 Service 依賴關係圖
  4. 工作量估算

    • 初始設置: 4-6 小時 (TypeDoc 配置 + 基本測試)
    • 自定義 Plugin 開發: 8-12 小時 (識別繼承、範例提取)
    • CI/CD 整合: 2-3 小時 (自動化生成腳本)
    • 測試與調整: 3-5 小時 (驗證生成品質)
    • 總時數: 約 17-26 小時

優點

  • 長期效益: 一次投資,永久受益
  • 自動同步: 代碼變更時自動重新生成文檔
  • 完整覆蓋: 所有公開 API 自動文檔化,無遺漏
  • 一致性保證: 自動化確保文檔格式統一
  • 減少維護: 代碼即文檔,減少手動維護負擔
  • 可擴展: 新增 Service 時自動納入文檔系統

缺點

  • 初期投入大: 17-26 小時開發自動化工具
  • 內容深度不足: 自動生成缺乏業務邏輯說明和最佳實踐
  • 技術風險: Plugin 開發可能遇到技術難點
  • 學習成本: 團隊需要學習 JSDoc 標註規範
  • 依賴工具: 依賴 TypeDoc 生態系統,工具更新可能影響

ROI 分析

  • 短期投資: 17-26 小時 (一次性開發)
  • 長期維護: 幾乎零維護成本 (自動化)
  • 價值產出:
    • 完整 API 覆蓋率 100% (vs 人工 82%)
    • 維護成本降低 90%
    • 文檔永遠與代碼同步

混合方案:短期人工 + 長期自動化 (推薦) ✅ 已採用

📅 方案決定日期: 2025-10-07 🎯 策略: Supabase Dashboard (資料庫層) + 應用文檔 (業務邏輯層) 📊 Phase 1 完成: 5/22 核心服務 (18% → 27% 覆蓋率)

Supabase 自動文檔 vs 應用層文檔分工

🔵 Supabase Dashboard API 文檔(資料庫層)

  • 用途: 基礎 Schema 參考、CRUD 操作快速查詢
  • 涵蓋範圍:
    • customers / orders / products 等資料表的基本 CRUD
    • PostgREST 自動生成的 REST API
    • JavaScript/cURL 程式碼片段
  • 限制:
    • ❌ 無法記錄業務邏輯 (RFM 分析、健康度計算)
    • ❌ 無法記錄資料映射層 (mapDbToEntity)
    • ❌ 無法記錄複雜查詢和自訂方法

🟢 應用層 API 文檔(業務邏輯層)

  • 用途: 記錄 TypeScript 服務層的業務邏輯和使用方式
  • 涵蓋範圍:
    • CustomerApiService / OrderApiService 等封裝服務
    • 業務邏輯 (RFM 分析、歸因計算、狀態機)
    • 資料轉換和映射規則
    • 錯誤處理和最佳實踐
  • 交叉引用: 在應用文檔中明確引導何時查 Supabase Dashboard

執行策略

Phase 1: 核心 API 人工文檔 (Week 1)已完成

  • ✅ 手動撰寫 5 個 P0 級核心 API 完整文檔
    • CustomerApiService (RFM 分析、客戶生命週期)
    • OrderApiService (訂單狀態機、物流追蹤)
    • ProductApiService (庫存預警、分類管理)
    • DashboardApiService (7維度健康度、系統穩定度)
    • CampaignApiService (4層歸因、活動成效分析)
  • ✅ 建立標準化文檔模板供團隊參考
  • ✅ 覆蓋率提升: 18% → 27% (5/22 服務)
  • 實際投入: 10-12 小時

Phase 2: 剩餘 P0 級別服務 (Week 2) 🔄 進行中

  • 📋 記錄剩餘 4 個 P0 核心服務:
    • InventoryApiService (庫存操作、日誌追蹤)
    • NotificationApiService (通知觸發、模板管理)
    • UserApiService (用戶管理、權限控制)
    • RoleApiService (角色管理、RBAC)
  • 🎯 目標覆蓋率: 27% → 40% (9/22 服務)
  • 預估投入: 8-10 小時

Phase 3: TypeDoc 自動化 P1/P2 服務 (Week 3-4) 📅 待執行

  • 設置 TypeDoc 基礎配置
  • 開發自定義 Plugin 識別 BaseApiService 繼承
  • 自動生成 11 個 P1/P2 級別服務基礎文檔
  • 人工補充重要業務邏輯章節
  • 整合 Supabase Dashboard 交叉引用
  • 🎯 目標覆蓋率: 40% → 90% (20/22 服務)
  • 預估投入: 15-20 小時

Phase 4: 導航與最佳實踐 (Week 4) 📅 待執行

  • 建立 API 文檔導航索引
  • 撰寫「何時查 Supabase vs 應用文檔」指引
  • 建立常見使用模式和最佳實踐
  • 整合 CI/CD 自動生成流程
  • 🎯 目標覆蓋率: 90% → 100% (22/22 服務)
  • 預估投入: 5-8 小時

Phase 5: 維護與優化 (Long-term) 📅 長期維護

  • 代碼變更時自動觸發文檔重新生成
  • 定期 review 自動生成品質
  • 根據回饋持續優化 Plugin
  • 投入: 每月 1-2 小時

總投入與產出

總時間投入

  • 短期 (4週): 35-53 小時
  • 長期 (每月): 1-2 小時維護

價值產出

  • 覆蓋率: 100% (5個核心手動 + 18個自動)
  • 深度: 核心 API 有完整業務說明
  • 廣度: 所有 API 有基礎文檔
  • 可維護性: 自動化確保長期同步
  • ROI: 6個月後投資回本 (vs 純人工方案)

方案比較矩陣

評估維度短期人工長期自動化混合方案 (推薦)
初期時間成本30-40h17-26h35-53h
長期維護成本高 (每次手動)低 (自動化)極低 (自動+少量人工)
API 覆蓋率82% (18/22)100%100%
內容深度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ (核心深度+全面覆蓋)
一致性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
即時性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
技術風險
團隊學習成本中 (JSDoc規範)
擴展性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
ROI (6個月)極高
ROI (12個月)極高極高

最終推薦:混合方案

推薦理由

  1. 平衡短期與長期需求

    • 立即解決核心 API 文檔缺失問題 (P0 級)
    • 建立自動化機制確保長期維護性
  2. 最大化 ROI

    • 人工時間集中在高價值核心 API
    • 自動化覆蓋全部 API,避免遺漏
    • 6 個月後投資回本,12 個月後 ROI 極高
  3. 最佳實踐結合

    • 人工撰寫確保業務邏輯和最佳實踐傳承
    • 自動化確保技術細節準確性和一致性
  4. 風險分散

    • 短期人工方案降低自動化工具失敗風險
    • 自動化方案降低人工維護負擔

執行時程建議

Week 1: P0 核心 API 人工文檔 (5個)
    ├── CustomerApiService
    ├── OrderApiService
    ├── ProductApiService
    ├── DashboardApiService
    └── CampaignApiService

Week 2-3: 自動化工具開發
    ├── TypeDoc 基礎配置
    ├── 自定義 Plugin 開發
    ├── CI/CD 整合
    └── 測試與調整

Week 4: 自動生成 + 人工補充
    ├── 自動生成 18個 API 基礎文檔
    ├── 補充 P1 級 API 業務邏輯
    └── 驗證與優化

Long-term: 持續維護
    ├── 代碼變更自動觸發重新生成
    ├── 每月 review 文檔品質
    └── 持續優化 Plugin

後續行動項

立即執行 (本次 P2 任務)

  1. ✅ 完成此評估報告
  2. ✅ 更新 文檔健檢報告 反映 API 文檔缺口
  3. ✅ 標記 API 文檔為「高優先級技術債務」

Week 1 規劃

  1. 創建 API 文檔標準模板
  2. 手動撰寫 CustomerApiService 完整文檔 (試點)
  3. 根據試點調整模板
  4. 完成剩餘 4 個 P0 API 文檔

Week 2-3 規劃

  1. 研究 TypeDoc 配置選項
  2. 開發自定義 Plugin
  3. 整合 CI/CD 自動化
  4. 測試自動生成品質

Week 4 規劃

  1. 自動生成全部 API 基礎文檔
  2. 人工補充重要業務邏輯
  3. 團隊 review 與回饋
  4. 優化模板與 Plugin

結論: 採用混合方案,結合人工深度文檔與自動化廣度覆蓋,實現短期需求與長期效益的最佳平衡。