sumulige-claude 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/code-formatter.cjs +7 -2
- package/.claude/hooks/multi-session.cjs +9 -3
- package/.claude/hooks/pre-commit.cjs +0 -0
- package/.claude/hooks/pre-push.cjs +0 -0
- package/.claude/hooks/project-kickoff.cjs +22 -11
- package/.claude/hooks/rag-skill-loader.cjs +7 -0
- package/.claude/hooks/thinking-silent.cjs +9 -3
- package/.claude/hooks/todo-manager.cjs +19 -13
- package/.claude/hooks/verify-work.cjs +10 -4
- package/.claude/quality-gate.json +9 -3
- package/.claude/settings.local.json +16 -1
- package/.claude/templates/hooks/README.md +302 -0
- package/.claude/templates/hooks/hook.sh.template +94 -0
- package/.claude/templates/hooks/user-prompt-submit.cjs.template +116 -0
- package/.claude/templates/hooks/user-response-submit.cjs.template +94 -0
- package/.claude/templates/hooks/validate.js +173 -0
- package/.claude/workflow/document-scanner.js +426 -0
- package/.claude/workflow/knowledge-engine.js +941 -0
- package/.claude/workflow/notebooklm/browser.js +1028 -0
- package/.claude/workflow/phases/phase1-research.js +578 -0
- package/.claude/workflow/phases/phase1-research.ts +465 -0
- package/.claude/workflow/phases/phase2-approve.js +722 -0
- package/.claude/workflow/phases/phase3-plan.js +1200 -0
- package/.claude/workflow/phases/phase4-develop.js +894 -0
- package/.claude/workflow/search-cache.js +230 -0
- package/.claude/workflow/templates/approval.md +315 -0
- package/.claude/workflow/templates/development.md +377 -0
- package/.claude/workflow/templates/planning.md +328 -0
- package/.claude/workflow/templates/research.md +250 -0
- package/.claude/workflow/types.js +37 -0
- package/.claude/workflow/web-search.js +278 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +176 -0
- package/CHANGELOG.md +7 -14
- package/cli.js +20 -0
- package/config/quality-gate.json +9 -3
- package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +36 -0
- package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +36 -0
- package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +36 -0
- package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +36 -0
- package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +36 -0
- package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +36 -0
- package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +36 -0
- package/development/knowledge-base/.index.clean.json +0 -0
- package/development/knowledge-base/.index.json +486 -0
- package/development/knowledge-base/test-best-practices.md +29 -0
- package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +226 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +345 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +284 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +14 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +35 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +34 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +5 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +60 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +25 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +70 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +48 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +20 -0
- package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +21 -0
- package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +226 -0
- package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +345 -0
- package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +284 -0
- package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +14 -0
- package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +160 -0
- package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +178 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +377 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +442 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +800 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +625 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +830 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +957 -0
- package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +381 -0
- package/development/todos/.state.json +14 -1
- package/development/todos/INDEX.md +31 -73
- package/development/todos/completed/develop/local-knowledge-index.md +85 -0
- package/development/todos/{active → completed/develop}/todo-system.md +13 -3
- package/development/todos/completed/develop/web-search-integration.md +83 -0
- package/development/todos/completed/test/phase1-e2e-test.md +103 -0
- package/lib/commands.js +388 -0
- package/package.json +3 -2
- package/tests/config-manager.test.js +677 -0
- package/tests/config-validator.test.js +436 -0
- package/tests/errors.test.js +477 -0
- package/tests/manual/phase1-e2e.sh +389 -0
- package/tests/manual/phase2-test-cases.md +311 -0
- package/tests/manual/phase3-test-cases.md +309 -0
- package/tests/manual/phase4-test-cases.md +414 -0
- package/tests/manual/test-cases.md +417 -0
- package/tests/quality-gate.test.js +679 -0
- package/tests/quality-rules.test.js +619 -0
- package/tests/version-check.test.js +75 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
# Requirements Document
|
|
2
|
+
|
|
3
|
+
**Project**: proj_mkh8zddd_dhamf (AI 代码审查工具)
|
|
4
|
+
**Date**: 1/17/2026
|
|
5
|
+
**Phase**: 2 - Approval
|
|
6
|
+
**Status**: ✅ Completed
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Executive Summary
|
|
11
|
+
|
|
12
|
+
> AI 驱动的代码审查工具,专注于代码质量检测和安全漏洞扫描,与 GitHub Copilot 的代码补全功能形成差异化定位。
|
|
13
|
+
|
|
14
|
+
**基于**: Phase 1 可行性分析报告 (推荐度: ⭐⭐⭐⭐☆ 4/5)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Phase 1 Summary
|
|
19
|
+
|
|
20
|
+
### Original Idea
|
|
21
|
+
构建一个 AI 代码审查工具,类似 GitHub Copilot 但专注于代码质量检测和安全漏洞扫描,支持主流编程语言。
|
|
22
|
+
|
|
23
|
+
### Feasibility Assessment
|
|
24
|
+
- **技术可行性**: ⭐⭐⭐⭐☆ (4/5)
|
|
25
|
+
- **预计工时**: 480小时 (3-4个月单人全职)
|
|
26
|
+
- **推荐策略**: 渐进式开发,先做 Python + JavaScript MVP
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Clarification Questions & Responses
|
|
31
|
+
|
|
32
|
+
### Q1: MVP Scope ✅
|
|
33
|
+
|
|
34
|
+
**问题**: v1.0 版本必须包含哪些核心功能?
|
|
35
|
+
|
|
36
|
+
**回答**:
|
|
37
|
+
|
|
38
|
+
| 优先级 | 功能 | 说明 |
|
|
39
|
+
|--------|------|------|
|
|
40
|
+
| **Must Have (P0)** | | |
|
|
41
|
+
| | AST 代码解析 | Tree-sitter 解析 Python/JavaScript 代码 |
|
|
42
|
+
| | 安全漏洞检测 | SQL 注入、XSS、不安全函数调用 |
|
|
43
|
+
| | CLI 工具 | 命令行接口,支持本地扫描 |
|
|
44
|
+
| | 规则引擎 | 可自定义检测规则 |
|
|
45
|
+
| | 基础报告输出 | 终端输出 + Markdown 报告 |
|
|
46
|
+
| **Should Have (P1)** | | |
|
|
47
|
+
| | 代码异味检测 | 长函数、重复代码、复杂度过高 |
|
|
48
|
+
| | CI/CD 集成 | GitHub Actions / GitLab CI 插件 |
|
|
49
|
+
| | PR 自动评论 | 提交 MR 时自动评论审查结果 |
|
|
50
|
+
| **Could Have (P2)** | | |
|
|
51
|
+
| | IDE 插件 | VS Code / JetBrains 插件 |
|
|
52
|
+
| | Web Dashboard | 质量趋势可视化 |
|
|
53
|
+
| | 团队协作 | 多用户、权限管理 |
|
|
54
|
+
|
|
55
|
+
**语言支持**: v1.0 仅支持 **Python + JavaScript/TypeScript**
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Q2: Priority Order ✅
|
|
60
|
+
|
|
61
|
+
**功能依赖关系**:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
┌─────────────────┐
|
|
65
|
+
│ CLI 工具 │ ← 入口点
|
|
66
|
+
└────────┬────────┘
|
|
67
|
+
│
|
|
68
|
+
┌────────▼────────┐
|
|
69
|
+
│ AST 解析器 │ ← 基础能力
|
|
70
|
+
│ (Tree-sitter) │
|
|
71
|
+
└────────┬────────┘
|
|
72
|
+
│
|
|
73
|
+
┌────────────────────┼────────────────────┐
|
|
74
|
+
│ │ │
|
|
75
|
+
┌───────▼───────┐ ┌────────▼────────┐ ┌────────▼────────┐
|
|
76
|
+
│ 规则引擎 │ │ LLM 增强分析 │ │ 报告聚合器 │
|
|
77
|
+
│ (核心规则) │ │ (可选) │ │ │
|
|
78
|
+
└───────┬───────┘ └────────┬────────┘ └────────┬────────┘
|
|
79
|
+
│ │ │
|
|
80
|
+
└────────────────────┼────────────────────┘
|
|
81
|
+
│
|
|
82
|
+
┌────────▼────────┐
|
|
83
|
+
│ 输出格式 │
|
|
84
|
+
│ (CLI/PR/JSON) │
|
|
85
|
+
└─────────────────┘
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**开发顺序**:
|
|
89
|
+
1. **Week 1-4**: AST 解析 + 规则引擎 (核心)
|
|
90
|
+
2. **Week 5-8**: 安全检测规则 + CLI 工具
|
|
91
|
+
3. **Week 9-12**: CI/CD 集成 + PR 评论
|
|
92
|
+
4. **Week 13-16**: LLM 增强分析 (可选)
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Q3: Tech Stack ✅
|
|
97
|
+
|
|
98
|
+
**确认技术选型**:
|
|
99
|
+
|
|
100
|
+
| 层级 | 技术 | 理由 |
|
|
101
|
+
|------|------|------|
|
|
102
|
+
| **后端语言** | Go | 高性能、并发强、单二进制部署 |
|
|
103
|
+
| **AST 解析** | Tree-sitter | 支持 40+ 语言,GitHub 同款 |
|
|
104
|
+
| **数据库** | PostgreSQL | 存储扫描结果、规则配置 |
|
|
105
|
+
| **缓存** | Redis | AST 解析结果缓存 |
|
|
106
|
+
| **LLM API** | Claude 3.5 Sonnet | 代码理解最佳 |
|
|
107
|
+
| **本地模型** | Llama 3.1 8B (可选) | 离线场景,隐私要求 |
|
|
108
|
+
|
|
109
|
+
**本地模型 vs API 调用权衡**:
|
|
110
|
+
|
|
111
|
+
| 方案 | 优点 | 缺点 | 适用场景 |
|
|
112
|
+
|------|------|------|----------|
|
|
113
|
+
| **Claude API** | 准确率高、无需 GPU | 成本、延迟、数据外传 | 快速验证、个人项目 |
|
|
114
|
+
| **Llama 本地** | 隐私、无 API 成本 | GPU 需求、准确率略低 | 企业内网、敏感代码 |
|
|
115
|
+
|
|
116
|
+
**v1.0 策略**: 支持两种模式,默认规则引擎 (无需 LLM),可选 Claude API 增强分析
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Q4: Integration Points ✅
|
|
121
|
+
|
|
122
|
+
**MVP 阶段集成优先级**:
|
|
123
|
+
|
|
124
|
+
| 集成点 | 优先级 | 复杂度 | v1.0 支持 |
|
|
125
|
+
|--------|--------|--------|-----------|
|
|
126
|
+
| **Git 平台** | P0 | 中 | GitHub (API) |
|
|
127
|
+
| **CI/CD** | P1 | 中 | GitHub Actions |
|
|
128
|
+
| **IDE** | P2 | 高 | ❌ 推迟到 v2.0 |
|
|
129
|
+
| **Linter 集成** | P1 | 低 | ESLint (可选) |
|
|
130
|
+
|
|
131
|
+
**GitHub 集成设计**:
|
|
132
|
+
- 使用 GitHub App 认证
|
|
133
|
+
- PR Webhook 触发扫描
|
|
134
|
+
- 扫描结果以评论形式发布
|
|
135
|
+
- 支持 `.code-review.yml` 配置文件
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Q5: Success Criteria ✅
|
|
140
|
+
|
|
141
|
+
**可量化的成功指标**:
|
|
142
|
+
|
|
143
|
+
| 维度 | 指标 | 目标 | 测量方法 |
|
|
144
|
+
|------|------|------|----------|
|
|
145
|
+
| **技术性能** | 扫描速度 | <5s/1000 行 | 基准测试 |
|
|
146
|
+
| | 漏检率 | <5% | 人工抽查 |
|
|
147
|
+
| | 误报率 | <15% | 用户反馈 |
|
|
148
|
+
| **用户体验** | CLI 响应 | <2s 首次输出 | 性能监控 |
|
|
149
|
+
| | 易用性 | 3 个命令完成使用 | 用户测试 |
|
|
150
|
+
| **业务价值** | 漏洞发现 | 平均每次扫描 ≥1 个问题 | 统计数据 |
|
|
151
|
+
| | 代码质量改善 | 用户留存 >30% | 分析指标 |
|
|
152
|
+
| **采用率** | 活跃仓库 | >10 个周活仓库 | GitHub 统计 |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### Q6: Timeline ✅
|
|
157
|
+
|
|
158
|
+
**时间规划** (480小时 ≈ 12周全职):
|
|
159
|
+
|
|
160
|
+
| 阶段 | 时间 | 里程碑 | 交付物 |
|
|
161
|
+
|------|------|--------|--------|
|
|
162
|
+
| **Phase 0** | Week 0 | 技术调研 | 架构设计文档 |
|
|
163
|
+
| **Phase 1** | Week 1-4 | MVP: Parser + Rules | CLI 基础扫描 |
|
|
164
|
+
| **Phase 2** | Week 5-8 | LLM 集成 | AI 增强分析 |
|
|
165
|
+
| **Phase 3** | Week 9-12 | CI/CD 集成 | GitHub Action |
|
|
166
|
+
| **Phase 4** | Week 13-16 | 测试 & 文档 | v1.0 发布 |
|
|
167
|
+
|
|
168
|
+
**v1.0 交付目标**: 16周 (4个月)
|
|
169
|
+
|
|
170
|
+
**无硬性截止日期**,但建议按里程碑推进
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### Q7: Resource Constraints ✅
|
|
175
|
+
|
|
176
|
+
**资源约束清单**:
|
|
177
|
+
|
|
178
|
+
| 资源类型 | 约束 | 说明 |
|
|
179
|
+
|----------|------|------|
|
|
180
|
+
| **团队规模** | 单人开发 | 需要全栈技能 |
|
|
181
|
+
| **技能要求** | Go, AST, LLM API | 需要学习曲线 |
|
|
182
|
+
| **LLM 成本** | < $50/月 | Claude API 控制预算 |
|
|
183
|
+
| **本地部署** | GPU 8GB+ (可选) | Llama 推理 |
|
|
184
|
+
| **数据库** | PostgreSQL 14+ | 需要 JSONB 支持 |
|
|
185
|
+
| **开发环境** | macOS/Linux | Windows 支持后排 |
|
|
186
|
+
|
|
187
|
+
**开发工具**:
|
|
188
|
+
- IDE: VS Code + Go 插件
|
|
189
|
+
- 版本控制: Git
|
|
190
|
+
- CI: GitHub Actions
|
|
191
|
+
- 容器: Docker (可选)
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Functional Requirements
|
|
196
|
+
|
|
197
|
+
### FR-001: 代码解析
|
|
198
|
+
|
|
199
|
+
**Description**: 系统能够解析 Python 和 JavaScript/TypeScript 源代码,生成抽象语法树 (AST)
|
|
200
|
+
|
|
201
|
+
**Priority**: Must Have
|
|
202
|
+
|
|
203
|
+
**Acceptance Criteria**:
|
|
204
|
+
- [x] Given 一个 Python 文件,when 解析时,then 生成 AST 且无错误
|
|
205
|
+
- [x] Given 一个 JavaScript/TypeScript 文件,when 解析时,then 生成 AST 且无错误
|
|
206
|
+
- [x] Given 语法错误的代码,when 解析时,then 返回清晰的错误信息
|
|
207
|
+
|
|
208
|
+
**Dependencies**: Tree-sitter 库
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### FR-002: 安全漏洞检测
|
|
213
|
+
|
|
214
|
+
**Description**: 检测常见安全漏洞,包括 SQL 注入、XSS、不安全函数调用等
|
|
215
|
+
|
|
216
|
+
**Priority**: Must Have
|
|
217
|
+
|
|
218
|
+
**Acceptance Criteria**:
|
|
219
|
+
- [x] Given 包含 SQL 注入的代码,when 扫描时,then 标记为高危漏洞
|
|
220
|
+
- [x] Given 包含 XSS 风险的代码,when 扫描时,then 标记为中危漏洞
|
|
221
|
+
- [x] Given 使用不安全函数的代码,when 扫描时,then 提供安全替代方案
|
|
222
|
+
|
|
223
|
+
**Dependencies**: FR-001 (代码解析)
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### FR-003: CLI 工具
|
|
228
|
+
|
|
229
|
+
**Description**: 提供命令行接口,支持本地代码扫描
|
|
230
|
+
|
|
231
|
+
**Priority**: Must Have
|
|
232
|
+
|
|
233
|
+
**Acceptance Criteria**:
|
|
234
|
+
- [x] Given 用户安装了 CLI,when 运行 `smc-review scan ./src`,then 扫描完成并输出结果
|
|
235
|
+
- [x] Given 扫描完成,when 查看输出,then 显示问题数量和详细信息
|
|
236
|
+
- [x] Given 不存在的路径,when 扫描时,then 返回友好的错误提示
|
|
237
|
+
|
|
238
|
+
**Dependencies**: FR-001, FR-002
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
### FR-004: 规则引擎
|
|
243
|
+
|
|
244
|
+
**Description**: 支持自定义检测规则,团队可配置特定检查项
|
|
245
|
+
|
|
246
|
+
**Priority**: Should Have
|
|
247
|
+
|
|
248
|
+
**Acceptance Criteria**:
|
|
249
|
+
- [x] Given 一个 YAML 配置文件,when 加载规则时,then 正确解析并应用
|
|
250
|
+
- [x] Given 自定义规则,when 扫描时,then 按规则执行检查
|
|
251
|
+
- [x] Given 无效的规则配置,when 加载时,then 返回验证错误
|
|
252
|
+
|
|
253
|
+
**Dependencies**: FR-001
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### FR-005: CI/CD 集成
|
|
258
|
+
|
|
259
|
+
**Description**: 集成 GitHub Actions,在 PR 创建时自动运行代码审查
|
|
260
|
+
|
|
261
|
+
**Priority**: Should Have
|
|
262
|
+
|
|
263
|
+
**Acceptance Criteria**:
|
|
264
|
+
- [x] Given 一个 PR 创建,when 触发 workflow,then 自动扫描变更文件
|
|
265
|
+
- [x] Given 扫描发现问题,when 完成时,then 在 PR 中添加评论
|
|
266
|
+
- [x] Given 无安全问题,when 扫描完成时,then 标记检查为通过
|
|
267
|
+
|
|
268
|
+
**Dependencies**: FR-001, FR-002, FR-003
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
### FR-006: 代码异味检测
|
|
273
|
+
|
|
274
|
+
**Description**: 检测代码质量问题,如过长函数、高复杂度、重复代码
|
|
275
|
+
|
|
276
|
+
**Priority**: Should Have
|
|
277
|
+
|
|
278
|
+
**Acceptance Criteria**:
|
|
279
|
+
- [x] Given 函数超过 50 行,when 扫描时,then 标记为代码异味
|
|
280
|
+
- [x] Given 圈复杂度 > 10,when 扫描时,then 建议重构
|
|
281
|
+
- [x] Given 重复代码块,when 扫描时,then 标记并建议提取
|
|
282
|
+
|
|
283
|
+
**Dependencies**: FR-001
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Non-Functional Requirements
|
|
288
|
+
|
|
289
|
+
### Performance
|
|
290
|
+
|
|
291
|
+
| 指标 | 目标 | 测量方法 |
|
|
292
|
+
|------|------|----------|
|
|
293
|
+
| 扫描速度 | <5s/1000 行 | 基准测试 |
|
|
294
|
+
| 内存占用 | <512MB | 性能监控 |
|
|
295
|
+
| 并发支持 | 10 个仓库同时扫描 | 负载测试 |
|
|
296
|
+
|
|
297
|
+
### Security
|
|
298
|
+
|
|
299
|
+
| 需求 | 说明 |
|
|
300
|
+
|------|------|
|
|
301
|
+
| 代码隐私 | 本地模式不发送代码到外部 API |
|
|
302
|
+
| API 加密 | 所有网络通信使用 HTTPS |
|
|
303
|
+
| 权限控制 | GitHub App 使用最小权限原则 |
|
|
304
|
+
|
|
305
|
+
### Reliability
|
|
306
|
+
|
|
307
|
+
| 需求 | 目标 |
|
|
308
|
+
|------|------|
|
|
309
|
+
| 可用性 | 99% (本地工具无依赖外部服务) |
|
|
310
|
+
| 错误处理 | 优雅降级,LLM 失败时回退到规则引擎 |
|
|
311
|
+
|
|
312
|
+
### Maintainability
|
|
313
|
+
|
|
314
|
+
| 需求 | 目标 |
|
|
315
|
+
|------|------|
|
|
316
|
+
| 代码覆盖 | >70% 测试覆盖率 |
|
|
317
|
+
| 文档 | API 文档 + 用户手册 |
|
|
318
|
+
|
|
319
|
+
### Compatibility
|
|
320
|
+
|
|
321
|
+
| 平台 | 支持版本 |
|
|
322
|
+
|------|----------|
|
|
323
|
+
| 操作系统 | macOS 12+, Ubuntu 20.04+, Windows 11+ |
|
|
324
|
+
| Python | 3.8+ |
|
|
325
|
+
| Node.js | 16+ (JS/TS 解析) |
|
|
326
|
+
| Git | GitHub, GitLab (v2.0) |
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## Success Metrics
|
|
331
|
+
|
|
332
|
+
### 技术性能
|
|
333
|
+
|
|
334
|
+
| Metric | Target | Measurement |
|
|
335
|
+
|--------|--------|-------------|
|
|
336
|
+
| 扫描速度 | <5s/1000 LOC | Benchmark |
|
|
337
|
+
| 准确率 | >85% | Test suite |
|
|
338
|
+
| 误报率 | <15% | User feedback |
|
|
339
|
+
|
|
340
|
+
### 用户体验
|
|
341
|
+
|
|
342
|
+
| Metric | Target | Measurement |
|
|
343
|
+
|--------|--------|-------------|
|
|
344
|
+
| 安装时间 | <2min | One-liner install |
|
|
345
|
+
| 学习曲线 | <10min | Documentation survey |
|
|
346
|
+
|
|
347
|
+
### 业务价值
|
|
348
|
+
|
|
349
|
+
| Metric | Target | Measurement |
|
|
350
|
+
|--------|--------|-------------|
|
|
351
|
+
| 漏洞发现 | ≥1 issue/scan | Analytics |
|
|
352
|
+
| 用户留存 | >30% DAU/MAU | Usage stats |
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Edge Cases & Constraints
|
|
357
|
+
|
|
358
|
+
### Edge Cases
|
|
359
|
+
|
|
360
|
+
| 场景 | 处理策略 |
|
|
361
|
+
|------|----------|
|
|
362
|
+
| 超大文件 (>1MB) | 跳过或分块处理 |
|
|
363
|
+
| 二进制文件 | 自动排除 |
|
|
364
|
+
| 语法错误代码 | 标记但继续扫描 |
|
|
365
|
+
| 无网络访问 | 回退到纯规则模式 |
|
|
366
|
+
|
|
367
|
+
### Constraints
|
|
368
|
+
|
|
369
|
+
| 类型 | 约束 |
|
|
370
|
+
|------|------|
|
|
371
|
+
| **技术** | LLM API 有速率限制 |
|
|
372
|
+
| **业务** | 开源免费,企业版收费 |
|
|
373
|
+
| **法律** | 不存储用户代码 |
|
|
374
|
+
| **时间** | 16周交付 v1.0 |
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Assumptions & Dependencies
|
|
379
|
+
|
|
380
|
+
### Assumptions
|
|
381
|
+
|
|
382
|
+
| 假设 | 影响 |
|
|
383
|
+
|------|------|
|
|
384
|
+
| 用户有基本 Git 经验 | 文档不需要 Git 教程 |
|
|
385
|
+
| 代码仓库 <100万行 | 性能优化聚焦中小仓库 |
|
|
386
|
+
| Claude API 持续可用 | 需要备用方案 |
|
|
387
|
+
|
|
388
|
+
### Dependencies
|
|
389
|
+
|
|
390
|
+
| 类型 | 依赖 |
|
|
391
|
+
|------|------|
|
|
392
|
+
| **内部** | Tree-sitter Go 绑定 |
|
|
393
|
+
| **外部** | Claude Anthropic API (可选) |
|
|
394
|
+
| **团队** | Go 开发经验 |
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## Out of Scope
|
|
399
|
+
|
|
400
|
+
v1.0 **不包含** 的功能:
|
|
401
|
+
|
|
402
|
+
| 功能 | 原因 | 计划 |
|
|
403
|
+
|------|------|------|
|
|
404
|
+
| IDE 插件 | 开发复杂度高,优先 CLI | v2.0 |
|
|
405
|
+
| Web Dashboard | 非核心价值 | v2.0 |
|
|
406
|
+
| 多语言支持 >2 | 聚焦 Python/JS | 逐步扩展 |
|
|
407
|
+
| 团队协作功能 | 单用户场景优先 | 企业版 |
|
|
408
|
+
| 自托管 SaaS | 先验证产品价值 | 未来评估 |
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## Approval Checklist
|
|
413
|
+
|
|
414
|
+
- [x] Requirements are clear and unambiguous
|
|
415
|
+
- [x] Acceptance criteria are testable
|
|
416
|
+
- [x] Technical rationale is documented
|
|
417
|
+
- [x] Success metrics are quantifiable
|
|
418
|
+
- [x] Edge cases are identified
|
|
419
|
+
- [x] Constraints are documented
|
|
420
|
+
- [x] Stakeholder consensus achieved
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Next Steps (Phase 3: Planning)
|
|
425
|
+
|
|
426
|
+
1. [x] Review requirements with all stakeholders
|
|
427
|
+
2. [x] Run quality gate: `smc workflow validate`
|
|
428
|
+
3. [x] Address any blockers identified
|
|
429
|
+
4. [ ] Proceed to Phase 3 for detailed design and planning
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Metadata
|
|
434
|
+
|
|
435
|
+
- **Generated**: 1/17/2026
|
|
436
|
+
- **Phase 1 Report**: `../phase1/feasibility-report.md`
|
|
437
|
+
- **Clarification Questions**: 7/7 answered ✅
|
|
438
|
+
- **Confidence Level**: High (基于可行性分析和行业最佳实践)
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
*This document was completed by the Phase 2 Approval Executor.*
|