# ADR-051: Context7 依賴升級顧問整合 | 項目 | 內容 | |------|------| | **狀態** | 📋 已批准,待實作 | | **日期** | 2026-04-01 | | **決策者** | 首席架構師 + 統帥 | | **觸發** | MCP 整合長期計畫 | ## 背景 AWOOOI monorepo 依賴多個快速迭代的框架,手動追蹤升級耗時且容易遺漏重要的安全修補或 Breaking Changes: | 套件 | 當前版本 | 最新版本 | 差距 | |------|----------|----------|------| | FastAPI | `>=0.115.0` | `0.128.0` | 13 個小版本 | | Next.js | `14.1.0` | `15.1.11` | 1 個主版本 | | Pydantic | `>=2.5.0` | v2 最新 | 需確認 | | @sentry/nextjs | `^10.45.0` | 需確認 | 需確認 | | lewooogo-brain | 內部套件 | - | 依發布追蹤 | **核心問題**: 1. **安全漏洞**:CVE 修補若不及時,可能已有已知漏洞在生產環境 2. **技術債累積**:次版本差距越大,升級時 Breaking Changes 越難處理 3. **文件落後**:框架升級後,Claude Code 若依賴訓練資料,可能給出過時的 API 建議 ## 決策 建立**每月依賴審查流程**,在每月 1 日,由 Claude Code 使用 **Context7 MCP** 查詢各主要依賴的最新版本、Breaking Changes 與官方遷移指南,生成升級評估報告,並建立追蹤 Issue 排入技術債計畫。 ## 審查流程 ### 觸發時機 - **定期**:每月 1 日(由統帥手動觸發或 Schedule Agent) - **臨時**:收到 CVE 通知、框架發布重大版本(如 Next.js 16) - **被動**:CI 出現 deprecation warning 時 ### 執行步驟 ``` Step 1: 使用 Context7 查詢各依賴最新文件 → resolve-library-id: "fastapi", "nextjs", "pydantic", "sentry" → query-docs: "latest version", "changelog", "migration guide" Step 2: 比對當前版本(讀 apps/api/requirements.txt + apps/web/package.json) Step 3: 評估 Breaking Changes 風險 → 主版本升級 → 🔴 高風險,需完整測試 → 次版本升級 → 🟡 中風險,需讀 changelog → Patch 升級 → 🟢 低風險,通常可直接升 Step 4: 生成升級評估報告(輸出至 docs/adr/upgrade-report-YYYY-MM.md) Step 5: 建立 GitHub Issue(含升級計畫 + 預估工時) 排入 Phase S+N 技術債看板 ``` ## 升級優先順序 ### 🔴 P1:安全修補(立即執行) **觸發條件**:任何 CVE CVSS ≥ 7.0,或套件官方發布安全公告 **處理流程**: 1. 當日確認修補版本 2. 本地測試通過後,當日發 PR 3. 直接合入 main,不等月度審查 4. 同步更新 LOGBOOK.md **已知高風險套件**: - `cryptography` (Python) — 頻繁 CVE - `next` (Node) — SSR 相關安全漏洞 - `pydantic` — 資料驗證繞過風險 ### 🟡 P2:主要功能改善(月度計畫) **範例**: | 升級 | 主要改善 | 預估工時 | |------|----------|----------| | Next.js 14 → 15 | App Router 效能優化、Turbopack 穩定 | 2-4 天 | | FastAPI 0.115 → 0.128 | dependency injection 改善、OpenAPI 更新 | 0.5 天 | **Next.js 15 升級注意事項**(預查): - `async` Server Components 預設行為變更 - `cookies()`、`headers()` 改為 async API - Turbopack 成為預設(需測試 build 輸出) - 需執行 `npx @next/codemod@latest upgrade` ### 🟢 P3:小版本 / Patch(批次更新) 每季度批次更新,使用 `npm update` + `pip install -U` 後執行完整測試套件。 ## 報告格式 ```markdown # 依賴升級報告 2026-04 生成時間:2026-04-01 00:00 +08 工具:Context7 MCP + Claude Code ## 摘要 | 優先級 | 套件數 | 行動 | |--------|--------|------| | 🔴 P1 (安全) | 0 | 無 CVE | | 🟡 P2 (功能) | 2 | 建立 Issue | | 🟢 P3 (patch) | 5 | 排入季度批次 | ## P2 升級建議 ### Next.js 15.1.11 - 當前版本:14.1.0 - Breaking Changes:[列出] - 遷移指南:[Context7 查詢結果] - 預估工時:2-4 天 - 建議 Phase:Phase S+3 ... ``` ## 技術約束 1. **Context7 MCP 使用限制**:每次查詢消耗 token,月度審查批次執行,不頻繁觸發 2. **升級前必讀**:`feedback_read_comments_first.md` — 涉及 `requirements.txt` 和 `package.json` 的修改 3. **禁止直接 push**:所有版本升級必須經過 PR + CI 測試,遵守 `feedback_build_from_git_only.md` 4. **Next.js 升級特別注意**:`apps/web/` 的升級需確認 `NEXT_PUBLIC_*` build-time 變數仍正常(`feedback_docker_nextjs_api_url.md`) ## 當前待處理升級清單 | 套件 | 當前 | 目標 | 優先級 | 預計執行 | |------|------|------|--------|----------| | FastAPI | `>=0.115.0` | `0.128.0` | 🟡 P2 | Phase S+1 | | Next.js | `14.1.0` | `15.1.11` | 🟡 P2 | Phase S+2 | | @sentry/nextjs | `^10.45.0` | 需 Context7 確認 | 🟢 P3 | 季度批次 | | Pydantic | `>=2.5.0` | 需 Context7 確認 | 🟢 P3 | 季度批次 | ## 首次執行指令(由 Claude Code 執行) ```bash # 1. 確認當前版本 cat /Users/ogt/awoooi/apps/api/requirements.txt | grep -E "fastapi|pydantic|sentry" cat /Users/ogt/awoooi/apps/web/package.json | grep -E "next|sentry" # 2. 使用 Context7 查詢(Claude Code 手動執行) # → resolve-library-id: fastapi # → query-docs: "0.128 changelog breaking changes" # → 依此類推 # 3. 生成報告並建立 Issue ``` ## 影響 | 面向 | 影響 | |------|------| | **安全** | P1 CVE 修補時間從「被動發現」縮短為「月內主動處理」 | | **技術債** | 避免版本差距累積超過 1 個主版本 | | **CI 穩定性** | 及時升級避免 deprecation warning 轉成 error | | **開發體驗** | Claude Code 可查最新 API 文件,減少過時建議 | ## 相關文件 - [feedback_stable_mainstream_practices.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_stable_mainstream_practices.md) - [feedback_build_from_git_only.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_build_from_git_only.md) - [feedback_docker_nextjs_api_url.md](~/.claude/projects/-Users-ogt-awoooi/memory/feedback_docker_nextjs_api_url.md) - [project_phase_r_refactoring.md](~/.claude/projects/-Users-ogt-awoooi/memory/project_phase_r_refactoring.md) - Context7 官方文件:https://context7.com/docs