# 分析報告:On-Call Runbook 百科 MCP 伺服器
生成日期: 2025-10-13
狀態: 初版 (對齊 `spec.md` v最新)
## 目的
對規格 (FR-001..FR-020, SC-001..SC-008) 與任務 (tasks.md) 進行覆蓋度、重複、缺漏與風險檢視,提出補強建議。
## 1. 需求→任務 映射總覽
| FR | 說明(摘要) | 主要實作任務 | 主要測試任務 | 狀態 | 備註 |
|----|------------|--------------|--------------|------|------|
| FR-001 | 多關鍵詞檢索 TopK | T034 searchService, T037 search tool | T029/T041 integration | Covered | 需測 TopK 邊界 → 連結 FR-016 測試 |
| FR-002 | frontmatter 解析輸出 | T027 indexer, T025 fsio, T010 validation | T028 foundation integ, T063 惡意解析 | Covered | invalid 排除在 T028 |
| FR-003 | Stale 標示 >90 天 | T021 freshness, T034 searchService | T015 freshness unit, T030 stale integ | Covered | threshold 來自 config T026 |
| FR-004 | checklist 擷取 | T035 checklistService, T039 tool | T032 checklist unit, T041 flow | Covered | parsing 規則單元測試充分 |
| FR-005 | commands safe/risk 分離 | T036 commandExtractService, T040 tool | T033 commands unit, T041 flow | Covered | 與 FR-019/015 有交集 |
| FR-006 | 建議 SEV | (缺服務) 需新增 service + MCP 工具 | T068 severity unit | Gap (部分) | 新增 T068;需新增實作任務 (建議後續 T071/T072) |
| FR-007 | 衝突解決規則 | T048 answerService | T045 aggregate unit | Covered | 規則描述在 research/plan |
| FR-008 | 降級模式與摘要 | T047 llmAdapter, T048 answerService | T043/T044 integ | Covered | 無金鑰 summary=null |
| FR-009 | Path traversal 阻擋 | T025 fsio | T063 安全測試 | Covered | 需白名單測試細節 |
| FR-010 | UNKNOWN/ESCALATE 無匹配 | T034 searchService (no-match)、T048 answerService | T031 no-match integ, T043/044 | Covered | 統一訊息常量應放 constants T011 |
| FR-011 | invalid runbooks 記錄排除 | T027 indexer | T028 integration | Covered | meta.ignore 驗證 |
| FR-012 | 中英混合檢索 | T018 tokenize, T019 chunk, T034 searchService | T012 tokenize unit (涵蓋多語) | Covered | 停用詞/別名列表需文件化 (建議 T072) |
| FR-013 | handoff 模板 | T054 service, T056 tool | T051 unit, T053 integ | Covered | |
| FR-014 | postmortem 模板 | T055 service, T057 tool | T052 unit, T053 integ | Covered | |
| FR-015 | 風險指令附警示與回退提醒 | T036 commandExtract, T048 answerService | T033 unit, T041/T043/T044 integ | Covered | 回退提醒常量需測 |
| FR-016 | TopK 參數邊界驗證 | T037 search tool, T049 answer tool | (缺專門邊界測試) 建議新增 | Partial | 建議新增 T073 邊界測試 |
| FR-017 | meta warnings + 策略摘要 | T048 answerService | T045 aggregate unit, T043/044 integ | Covered | 確保 warnings collection 測試 |
| FR-018 | citations path+chunkIndex | T048 answerService | T046 citation unit, T043/044 integ | Covered | Phase 6 offset 擴充 T061 |
| FR-019 | 中央風險字典 ≥20 詞 | T022 risk-dictionary.json, T023 classify | T016 classify unit, T065 coverage | Covered | 需版本策略文件 T064 |
| FR-020 | 不持久化查詢日誌 | logger design T008, memory-only | T069 no-log-persist | Partial | 尚缺實作驗證任務:檢查無檔案生成 |
## 2. 缺漏與建議
1. FR-006: 目前無 severityService 與 MCP tool 任務;新增:
- T071 `src/services/severityService.mjs` (規則評估)
- T072 `src/mcp/tools/severity.mjs` (rb.severity) 並文件化別名/關鍵詞規則
2. FR-016: TopK 邊界測試需專門覆蓋:新增 T073 `tests/unit/tools/topk-boundary.spec.mjs`
3. FR-020: 建議在 logger 測試中檢查 process 工作目錄無新增 log 檔案;若將來引入環境變數啟用持久化需 gating。
4. SC 覆蓋:
- SC-002(性能)僅有基準腳本 T059,缺失明確 P95 驗證邏輯,可在 benchmark 加入結果判斷(新增 T074 驗證閾值腳本)。
- SC-004(風險指令遺漏率)需測試語料標註集;T065 可產出報告,建議定義閾值檢查(新增 T075 coverage assert)。
## 3. 重複 / 歧義
- 規格原本雙語模板殘留已清除,避免 FR 重複版本。
- FR-005 / FR-015 / FR-019 範圍交疊:已在表格透過分類說明,建議在文件中保持"分類 (FR-005)" vs "呈現與警示 (FR-015)" vs "字典資產 (FR-019)" 注釋(可於 README 後續補充)。
## 4. 風險評估
| 類型 | 項目 | 風險 | 緩解 |
|------|------|------|------|
| 功能覆蓋 | Severity 未實作 | 中 | 新增 T071/T072/T068 |
| 邊界 | TopK 無專測 | 低 | 新增 T073 |
| 安全 | Path traversal 規則過於簡單 | 低 | T063 增加 Windows 驅動器測試 (e.g. C:) |
| 性能 | 大 corpus >300 線性退化 | 中 | T059 報告 + 後續倒排索引提案(未納入 MVP) |
| 採用 | 風險字典更新流程不清 | 低 | T064 文檔化流程 + 版本欄位 |
| 可測性 | 缺性能自動閾值斷言 | 中 | T074 增加自動失敗條件 |
## 5. 後續新增任務(建議)
- T071 建立 `src/services/severityService.mjs`
- T072 建立 `src/mcp/tools/severity.mjs` + README 使用範例補充
- T073 TopK 邊界測試
- T074 基準結果自動驗證(拋錯若 P95 > 500ms)
- T075 風險字典 coverage assert(遺漏率計算 <5% 否則 fail)
## 6. 結論
目前 20 個功能需求中 2 個(FR-006、FR-016)僅部分覆蓋;FR-020 覆蓋度提升中。新增建議任務後預期可達 100% 映射。請在合併至主分支前補齊新增任務並更新 tasks.md。
---
(本檔案由分析步驟人工/半自動生成,可於後續迭代)