@zeyue0329/xiaoma-cli 1.0.37 → 1.0.39
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/.idea/workspace.xml +27 -26
- package/JAVA-BACKEND-COMMANDS-REFERENCE.md +62 -52
- package/JAVA-BACKEND-ITERATION-GUIDE.md +125 -18
- package/README.md +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +35 -5
- package/dist/agents/architect.txt +217 -31
- package/dist/agents/automation-orchestrator.txt +4 -4
- package/dist/agents/dev.txt +3 -3
- package/dist/agents/full-requirement-orchestrator.txt +11 -11
- package/dist/agents/qa.txt +102 -102
- package/dist/agents/sm.txt +6 -6
- package/dist/agents/ux-expert.txt +6 -1
- package/dist/agents/workflow-executor.txt +879 -0
- package/dist/agents/xiaoma-master.txt +258 -37
- package/dist/teams/team-all.txt +1223 -445
- package/dist/teams/team-fullstack-with-database.txt +384 -446
- package/dist/teams/team-fullstack.txt +258 -37
- package/dist/teams/team-ide-minimal.txt +111 -111
- package/dist/teams/team-no-ui.txt +252 -36
- package/docs/architecture-sharding-modification.md +623 -0
- package/docs/automated-requirements-analysis-outputs.md +896 -0
- package/package.json +1 -1
- package/tools/builders/web-builder.js +292 -142
- package/tools/bump-all-versions.js +50 -32
- package/tools/cli.js +52 -47
- package/tools/flattener/aggregate.js +30 -12
- package/tools/flattener/binary.js +46 -43
- package/tools/flattener/discovery.js +23 -15
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +122 -121
- package/tools/flattener/main.js +249 -144
- package/tools/flattener/projectRoot.js +74 -69
- package/tools/flattener/prompts.js +12 -10
- package/tools/flattener/stats.helpers.js +90 -61
- package/tools/flattener/stats.js +1 -1
- package/tools/flattener/test-matrix.js +225 -170
- package/tools/flattener/xml.js +31 -23
- package/tools/installer/bin/xiaoma.js +199 -153
- package/tools/installer/lib/config-loader.js +76 -47
- package/tools/installer/lib/file-manager.js +101 -44
- package/tools/installer/lib/ide-base-setup.js +49 -39
- package/tools/installer/lib/ide-setup.js +694 -380
- package/tools/installer/lib/installer.js +802 -469
- package/tools/installer/lib/memory-profiler.js +22 -12
- package/tools/installer/lib/module-manager.js +16 -14
- package/tools/installer/lib/resource-locator.js +61 -35
- package/tools/lib/dependency-resolver.js +34 -23
- package/tools/lib/yaml-utils.js +7 -2
- package/tools/preview-release-notes.js +33 -25
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +16 -7
- package/tools/upgraders/v3-to-v4-upgrader.js +244 -163
- package/tools/version-bump.js +24 -18
- package/tools/xiaoma-npx-wrapper.js +15 -10
- package/tools/yaml-format.js +60 -36
- package/xiaoma-core/agent-teams/team-fullstack-with-database.yaml +0 -1
- package/xiaoma-core/agents/automated-fix-validator.yaml +2 -1
- package/xiaoma-core/agents/automated-quality-validator.yaml +10 -5
- package/xiaoma-core/agents/automation-orchestrator.md +4 -4
- package/xiaoma-core/agents/dev.md +4 -4
- package/xiaoma-core/agents/enhanced-workflow-orchestrator.yaml +2 -1
- package/xiaoma-core/agents/full-requirement-orchestrator.md +11 -11
- package/xiaoma-core/agents/global-requirements-auditor.yaml +11 -3
- package/xiaoma-core/agents/intelligent-template-adapter.yaml +19 -5
- package/xiaoma-core/agents/master-execution-engine.yaml +19 -5
- package/xiaoma-core/agents/workflow-executor.md +8 -4
- package/xiaoma-core/agents/xiaoma-master.md +1 -1
- package/xiaoma-core/data/test-levels-framework.md +12 -12
- package/xiaoma-core/tasks/analyze-existing-database.md +1 -1
- package/xiaoma-core/tasks/apply-qa-fixes.md +3 -3
- package/xiaoma-core/tasks/batch-story-generation.md +22 -22
- package/xiaoma-core/tasks/create-enhanced-story-with-database.md +6 -6
- package/xiaoma-core/tasks/nfr-assess.md +6 -6
- package/xiaoma-core/tasks/project-integration-testing.md +42 -42
- package/xiaoma-core/tasks/qa-gate.md +23 -23
- package/xiaoma-core/tasks/review-story.md +18 -18
- package/xiaoma-core/tasks/risk-profile.md +25 -25
- package/xiaoma-core/tasks/serial-development-orchestration.md +51 -51
- package/xiaoma-core/tasks/test-design.md +9 -9
- package/xiaoma-core/tasks/trace-requirements.md +21 -21
- package/xiaoma-core/templates/competitor-analysis-tmpl.yaml +35 -5
- package/xiaoma-core/templates/front-end-architecture-tmpl.yaml +77 -11
- package/xiaoma-core/templates/front-end-spec-tmpl.yaml +6 -1
- package/xiaoma-core/templates/fullstack-architecture-tmpl.yaml +140 -20
- package/xiaoma-core/templates/global-qa-monitoring-tmpl.yaml +2 -1
- package/xiaoma-core/templates/requirements-coverage-audit.yaml +2 -1
- package/xiaoma-core/workflows/automated-requirements-analysis.yaml +283 -6
- package/dist/agents/database-architect.txt +0 -322
|
@@ -8,10 +8,10 @@ Perform a comprehensive test architecture review with quality gate decision. Thi
|
|
|
8
8
|
|
|
9
9
|
```yaml
|
|
10
10
|
required:
|
|
11
|
-
- story_id:
|
|
12
|
-
- story_path:
|
|
13
|
-
- story_title:
|
|
14
|
-
- story_slug:
|
|
11
|
+
- story_id: "{epic}.{story}" # e.g., "1.3"
|
|
12
|
+
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml
|
|
13
|
+
- story_title: "{title}" # If missing, derive from story file H1
|
|
14
|
+
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Prerequisites
|
|
@@ -193,19 +193,19 @@ Gate file structure:
|
|
|
193
193
|
|
|
194
194
|
```yaml
|
|
195
195
|
schema: 1
|
|
196
|
-
story:
|
|
197
|
-
story_title:
|
|
196
|
+
story: "{epic}.{story}"
|
|
197
|
+
story_title: "{story title}"
|
|
198
198
|
gate: PASS|CONCERNS|FAIL|WAIVED
|
|
199
|
-
status_reason:
|
|
200
|
-
reviewer:
|
|
201
|
-
updated:
|
|
199
|
+
status_reason: "1-2 sentence explanation of gate decision"
|
|
200
|
+
reviewer: "Quinn (Test Architect)"
|
|
201
|
+
updated: "{ISO-8601 timestamp}"
|
|
202
202
|
|
|
203
203
|
top_issues: [] # Empty if no issues
|
|
204
204
|
waiver: { active: false } # Set active: true only if WAIVED
|
|
205
205
|
|
|
206
206
|
# Extended fields (optional but recommended):
|
|
207
207
|
quality_score: 0-100 # 100 - (20*FAILs) - (10*CONCERNS) or use technical-preferences.md weights
|
|
208
|
-
expires:
|
|
208
|
+
expires: "{ISO-8601 timestamp}" # Typically 2 weeks from review
|
|
209
209
|
|
|
210
210
|
evidence:
|
|
211
211
|
tests_reviewed: { count }
|
|
@@ -217,24 +217,24 @@ evidence:
|
|
|
217
217
|
nfr_validation:
|
|
218
218
|
security:
|
|
219
219
|
status: PASS|CONCERNS|FAIL
|
|
220
|
-
notes:
|
|
220
|
+
notes: "Specific findings"
|
|
221
221
|
performance:
|
|
222
222
|
status: PASS|CONCERNS|FAIL
|
|
223
|
-
notes:
|
|
223
|
+
notes: "Specific findings"
|
|
224
224
|
reliability:
|
|
225
225
|
status: PASS|CONCERNS|FAIL
|
|
226
|
-
notes:
|
|
226
|
+
notes: "Specific findings"
|
|
227
227
|
maintainability:
|
|
228
228
|
status: PASS|CONCERNS|FAIL
|
|
229
|
-
notes:
|
|
229
|
+
notes: "Specific findings"
|
|
230
230
|
|
|
231
231
|
recommendations:
|
|
232
232
|
immediate: # Must fix before production
|
|
233
|
-
- action:
|
|
234
|
-
refs: [
|
|
233
|
+
- action: "Add rate limiting"
|
|
234
|
+
refs: ["api/auth/login.ts"]
|
|
235
235
|
future: # Can be addressed later
|
|
236
|
-
- action:
|
|
237
|
-
refs: [
|
|
236
|
+
- action: "Consider caching"
|
|
237
|
+
refs: ["services/data.ts"]
|
|
238
238
|
```
|
|
239
239
|
|
|
240
240
|
### Gate Decision Criteria
|
|
@@ -8,10 +8,10 @@ Generate a comprehensive risk assessment matrix for a story implementation using
|
|
|
8
8
|
|
|
9
9
|
```yaml
|
|
10
10
|
required:
|
|
11
|
-
- story_id:
|
|
12
|
-
- story_path:
|
|
13
|
-
- story_title:
|
|
14
|
-
- story_slug:
|
|
11
|
+
- story_id: "{epic}.{story}" # e.g., "1.3"
|
|
12
|
+
- story_path: "docs/stories/{epic}.{story}.*.md"
|
|
13
|
+
- story_title: "{title}" # If missing, derive from story file H1
|
|
14
|
+
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Purpose
|
|
@@ -81,14 +81,14 @@ For each category, identify specific risks:
|
|
|
81
81
|
|
|
82
82
|
```yaml
|
|
83
83
|
risk:
|
|
84
|
-
id:
|
|
84
|
+
id: "SEC-001" # Use prefixes: SEC, PERF, DATA, BUS, OPS, TECH
|
|
85
85
|
category: security
|
|
86
|
-
title:
|
|
87
|
-
description:
|
|
86
|
+
title: "Insufficient input validation on user forms"
|
|
87
|
+
description: "Form inputs not properly sanitized could lead to XSS attacks"
|
|
88
88
|
affected_components:
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
detection_method:
|
|
89
|
+
- "UserRegistrationForm"
|
|
90
|
+
- "ProfileUpdateForm"
|
|
91
|
+
detection_method: "Code review revealed missing validation"
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
### 2. Risk Assessment
|
|
@@ -135,20 +135,20 @@ For each identified risk, provide mitigation:
|
|
|
135
135
|
|
|
136
136
|
```yaml
|
|
137
137
|
mitigation:
|
|
138
|
-
risk_id:
|
|
139
|
-
strategy:
|
|
138
|
+
risk_id: "SEC-001"
|
|
139
|
+
strategy: "preventive" # preventive|detective|corrective
|
|
140
140
|
actions:
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
141
|
+
- "Implement input validation library (e.g., validator.js)"
|
|
142
|
+
- "Add CSP headers to prevent XSS execution"
|
|
143
|
+
- "Sanitize all user inputs before storage"
|
|
144
|
+
- "Escape all outputs in templates"
|
|
145
145
|
testing_requirements:
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
residual_risk:
|
|
150
|
-
owner:
|
|
151
|
-
timeline:
|
|
146
|
+
- "Security testing with OWASP ZAP"
|
|
147
|
+
- "Manual penetration testing of forms"
|
|
148
|
+
- "Unit tests for validation functions"
|
|
149
|
+
residual_risk: "Low - Some zero-day vulnerabilities may remain"
|
|
150
|
+
owner: "dev"
|
|
151
|
+
timeline: "Before deployment"
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
## Outputs
|
|
@@ -174,12 +174,12 @@ risk_summary:
|
|
|
174
174
|
highest:
|
|
175
175
|
id: SEC-001
|
|
176
176
|
score: 9
|
|
177
|
-
title:
|
|
177
|
+
title: "XSS on profile form"
|
|
178
178
|
recommendations:
|
|
179
179
|
must_fix:
|
|
180
|
-
-
|
|
180
|
+
- "Add input sanitization & CSP"
|
|
181
181
|
monitor:
|
|
182
|
-
-
|
|
182
|
+
- "Add security alerts for auth endpoints"
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
### Output 2: Markdown Report
|
|
@@ -56,15 +56,15 @@ pipeline_design:
|
|
|
56
56
|
pipeline_count: 1 # 单一串行流水线
|
|
57
57
|
|
|
58
58
|
serial_pipeline:
|
|
59
|
-
focus:
|
|
60
|
-
execution_policy:
|
|
61
|
-
completion_requirement:
|
|
59
|
+
focus: "严格串行执行所有故事"
|
|
60
|
+
execution_policy: "one_task_at_a_time"
|
|
61
|
+
completion_requirement: "100%_before_next"
|
|
62
62
|
|
|
63
63
|
story_execution_order:
|
|
64
|
-
priority_1_foundation: [
|
|
65
|
-
priority_2_core: [
|
|
66
|
-
priority_3_features: [
|
|
67
|
-
priority_4_support: [
|
|
64
|
+
priority_1_foundation: ["用户认证", "权限管理", "基础数据模型"]
|
|
65
|
+
priority_2_core: ["主要业务流程", "核心数据操作"]
|
|
66
|
+
priority_3_features: ["扩展功能", "用户体验优化"]
|
|
67
|
+
priority_4_support: ["监控", "配置", "工具功能"]
|
|
68
68
|
|
|
69
69
|
quality_gates:
|
|
70
70
|
strict_validation:
|
|
@@ -80,28 +80,28 @@ pipeline_design:
|
|
|
80
80
|
synchronization_design:
|
|
81
81
|
sync_points:
|
|
82
82
|
foundation_completion:
|
|
83
|
-
trigger:
|
|
84
|
-
validation:
|
|
85
|
-
quality_gate:
|
|
86
|
-
next_stage:
|
|
83
|
+
trigger: "基础故事100%完成"
|
|
84
|
+
validation: "基础API和数据模型完全就绪"
|
|
85
|
+
quality_gate: "通过所有测试和质量检查"
|
|
86
|
+
next_stage: "核心业务开发启动"
|
|
87
87
|
|
|
88
88
|
core_business_completion:
|
|
89
|
-
trigger:
|
|
90
|
-
validation:
|
|
91
|
-
quality_gate:
|
|
92
|
-
next_stage:
|
|
89
|
+
trigger: "核心业务故事100%完成"
|
|
90
|
+
validation: "主要业务流程完全就绪"
|
|
91
|
+
quality_gate: "通过所有集成测试"
|
|
92
|
+
next_stage: "特性功能开发启动"
|
|
93
93
|
|
|
94
94
|
features_completion:
|
|
95
|
-
trigger:
|
|
96
|
-
validation:
|
|
97
|
-
quality_gate:
|
|
98
|
-
next_stage:
|
|
95
|
+
trigger: "特性功能故事100%完成"
|
|
96
|
+
validation: "所有特性功能完全就绪"
|
|
97
|
+
quality_gate: "通过端到端测试"
|
|
98
|
+
next_stage: "优化支撑功能启动"
|
|
99
99
|
|
|
100
100
|
final_completion:
|
|
101
|
-
trigger:
|
|
102
|
-
validation:
|
|
103
|
-
quality_gate:
|
|
104
|
-
next_stage:
|
|
101
|
+
trigger: "所有故事100%完成"
|
|
102
|
+
validation: "完整产品就绪"
|
|
103
|
+
quality_gate: "通过最终验收测试"
|
|
104
|
+
next_stage: "项目交付准备"
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
### 第4步: 质量门控实施
|
|
@@ -114,31 +114,31 @@ quality_gates:
|
|
|
114
114
|
|
|
115
115
|
gate_1_foundation:
|
|
116
116
|
requirements:
|
|
117
|
-
- code_coverage:
|
|
118
|
-
- unit_tests:
|
|
119
|
-
- integration_tests:
|
|
120
|
-
- code_quality:
|
|
117
|
+
- code_coverage: ">=95%"
|
|
118
|
+
- unit_tests: "all_passing"
|
|
119
|
+
- integration_tests: "all_passing"
|
|
120
|
+
- code_quality: "A_grade"
|
|
121
121
|
|
|
122
122
|
gate_2_core:
|
|
123
123
|
requirements:
|
|
124
|
-
- api_tests:
|
|
125
|
-
- business_logic_tests:
|
|
126
|
-
- database_tests:
|
|
127
|
-
- performance_tests:
|
|
124
|
+
- api_tests: "all_passing"
|
|
125
|
+
- business_logic_tests: "all_passing"
|
|
126
|
+
- database_tests: "all_passing"
|
|
127
|
+
- performance_tests: "baseline_met"
|
|
128
128
|
|
|
129
129
|
gate_3_features:
|
|
130
130
|
requirements:
|
|
131
|
-
- feature_tests:
|
|
132
|
-
- ui_tests:
|
|
133
|
-
- cross_browser_tests:
|
|
134
|
-
- accessibility_tests:
|
|
131
|
+
- feature_tests: "all_passing"
|
|
132
|
+
- ui_tests: "all_passing"
|
|
133
|
+
- cross_browser_tests: "all_passing"
|
|
134
|
+
- accessibility_tests: "all_passing"
|
|
135
135
|
|
|
136
136
|
gate_4_final:
|
|
137
137
|
requirements:
|
|
138
|
-
- end_to_end_tests:
|
|
139
|
-
- security_scan:
|
|
140
|
-
- performance_benchmark:
|
|
141
|
-
- user_acceptance:
|
|
138
|
+
- end_to_end_tests: "all_passing"
|
|
139
|
+
- security_scan: "no_critical_issues"
|
|
140
|
+
- performance_benchmark: "meets_requirements"
|
|
141
|
+
- user_acceptance: "approved"
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
### 第5步: 执行监控和控制
|
|
@@ -153,7 +153,7 @@ execution_control:
|
|
|
153
153
|
- blocking_issues: 阻塞问题
|
|
154
154
|
|
|
155
155
|
progress_reporting:
|
|
156
|
-
frequency:
|
|
156
|
+
frequency: "continuous"
|
|
157
157
|
metrics:
|
|
158
158
|
- story_completion_status: 故事完成状态
|
|
159
159
|
- quality_gate_status: 质量门控状态
|
|
@@ -265,7 +265,7 @@ ${final_validation_results}
|
|
|
265
265
|
triggers:
|
|
266
266
|
primary:
|
|
267
267
|
condition: story_backlog_ready
|
|
268
|
-
trigger:
|
|
268
|
+
trigger: "*orchestrate-serial-development"
|
|
269
269
|
|
|
270
270
|
dependencies:
|
|
271
271
|
required_inputs:
|
|
@@ -289,10 +289,10 @@ success_criteria:
|
|
|
289
289
|
- deliverable_ready: 交付物就绪
|
|
290
290
|
|
|
291
291
|
quality:
|
|
292
|
-
- code_coverage:
|
|
293
|
-
- test_pass_rate:
|
|
294
|
-
- defect_density:
|
|
295
|
-
- performance_baseline:
|
|
292
|
+
- code_coverage: ">=95%"
|
|
293
|
+
- test_pass_rate: "100%"
|
|
294
|
+
- defect_density: "<=0.1 per KLOC"
|
|
295
|
+
- performance_baseline: "met"
|
|
296
296
|
|
|
297
297
|
process:
|
|
298
298
|
- strict_sequence_followed: 严格按序执行
|
|
@@ -319,16 +319,16 @@ error_handling:
|
|
|
319
319
|
|
|
320
320
|
quality_failures:
|
|
321
321
|
test_failures:
|
|
322
|
-
action:
|
|
323
|
-
escalation:
|
|
322
|
+
action: "stop_and_fix"
|
|
323
|
+
escalation: "immediate"
|
|
324
324
|
|
|
325
325
|
coverage_below_threshold:
|
|
326
|
-
action:
|
|
327
|
-
requirement:
|
|
326
|
+
action: "stop_and_improve"
|
|
327
|
+
requirement: "meet_coverage_target"
|
|
328
328
|
|
|
329
329
|
integration_failures:
|
|
330
|
-
action:
|
|
331
|
-
validation:
|
|
330
|
+
action: "rollback_and_debug"
|
|
331
|
+
validation: "complete_retest"
|
|
332
332
|
```
|
|
333
333
|
|
|
334
334
|
## Integration Points
|
|
@@ -8,10 +8,10 @@ Create comprehensive test scenarios with appropriate test level recommendations
|
|
|
8
8
|
|
|
9
9
|
```yaml
|
|
10
10
|
required:
|
|
11
|
-
- story_id:
|
|
12
|
-
- story_path:
|
|
13
|
-
- story_title:
|
|
14
|
-
- story_slug:
|
|
11
|
+
- story_id: "{epic}.{story}" # e.g., "1.3"
|
|
12
|
+
- story_path: "{devStoryLocation}/{epic}.{story}.*.md" # Path from core-config.yaml
|
|
13
|
+
- story_title: "{title}" # If missing, derive from story file H1
|
|
14
|
+
- story_slug: "{slug}" # If missing, derive from title (lowercase, hyphenated)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Purpose
|
|
@@ -64,13 +64,13 @@ For each identified test need, create:
|
|
|
64
64
|
|
|
65
65
|
```yaml
|
|
66
66
|
test_scenario:
|
|
67
|
-
id:
|
|
68
|
-
requirement:
|
|
67
|
+
id: "{epic}.{story}-{LEVEL}-{SEQ}"
|
|
68
|
+
requirement: "AC reference"
|
|
69
69
|
priority: P0|P1|P2|P3
|
|
70
70
|
level: unit|integration|e2e
|
|
71
|
-
description:
|
|
72
|
-
justification:
|
|
73
|
-
mitigates_risks: [
|
|
71
|
+
description: "What is being tested"
|
|
72
|
+
justification: "Why this level was chosen"
|
|
73
|
+
mitigates_risks: ["RISK-001"] # If risk profile exists
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
### 5. Validate Coverage
|
|
@@ -33,21 +33,21 @@ Identify all testable requirements from:
|
|
|
33
33
|
For each requirement, document which tests validate it. Use Given-When-Then to describe what the test validates (not how it's written):
|
|
34
34
|
|
|
35
35
|
```yaml
|
|
36
|
-
requirement:
|
|
36
|
+
requirement: "AC1: User can login with valid credentials"
|
|
37
37
|
test_mappings:
|
|
38
|
-
- test_file:
|
|
39
|
-
test_case:
|
|
38
|
+
- test_file: "auth/login.test.ts"
|
|
39
|
+
test_case: "should successfully login with valid email and password"
|
|
40
40
|
# Given-When-Then describes WHAT the test validates, not HOW it's coded
|
|
41
|
-
given:
|
|
42
|
-
when:
|
|
43
|
-
then:
|
|
41
|
+
given: "A registered user with valid credentials"
|
|
42
|
+
when: "They submit the login form"
|
|
43
|
+
then: "They are redirected to dashboard and session is created"
|
|
44
44
|
coverage: full
|
|
45
45
|
|
|
46
|
-
- test_file:
|
|
47
|
-
test_case:
|
|
48
|
-
given:
|
|
49
|
-
when:
|
|
50
|
-
then:
|
|
46
|
+
- test_file: "e2e/auth-flow.test.ts"
|
|
47
|
+
test_case: "complete login flow"
|
|
48
|
+
given: "User on login page"
|
|
49
|
+
when: "Entering valid credentials and submitting"
|
|
50
|
+
then: "Dashboard loads with user data"
|
|
51
51
|
coverage: integration
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -69,19 +69,19 @@ Document any gaps found:
|
|
|
69
69
|
|
|
70
70
|
```yaml
|
|
71
71
|
coverage_gaps:
|
|
72
|
-
- requirement:
|
|
73
|
-
gap:
|
|
72
|
+
- requirement: "AC3: Password reset email sent within 60 seconds"
|
|
73
|
+
gap: "No test for email delivery timing"
|
|
74
74
|
severity: medium
|
|
75
75
|
suggested_test:
|
|
76
76
|
type: integration
|
|
77
|
-
description:
|
|
77
|
+
description: "Test email service SLA compliance"
|
|
78
78
|
|
|
79
|
-
- requirement:
|
|
80
|
-
gap:
|
|
79
|
+
- requirement: "AC5: Support 1000 concurrent users"
|
|
80
|
+
gap: "No load testing implemented"
|
|
81
81
|
severity: high
|
|
82
82
|
suggested_test:
|
|
83
83
|
type: performance
|
|
84
|
-
description:
|
|
84
|
+
description: "Load test with 1000 concurrent connections"
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
## Outputs
|
|
@@ -97,11 +97,11 @@ trace:
|
|
|
97
97
|
full: Y
|
|
98
98
|
partial: Z
|
|
99
99
|
none: W
|
|
100
|
-
planning_ref:
|
|
100
|
+
planning_ref: "qa.qaLocation/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md"
|
|
101
101
|
uncovered:
|
|
102
|
-
- ac:
|
|
103
|
-
reason:
|
|
104
|
-
notes:
|
|
102
|
+
- ac: "AC3"
|
|
103
|
+
reason: "No test found for password reset timing"
|
|
104
|
+
notes: "See qa.qaLocation/assessments/{epic}.{story}-trace-{YYYYMMDD}.md"
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
### Output 2: Traceability Report
|
|
@@ -152,11 +152,29 @@ sections:
|
|
|
152
152
|
rows:
|
|
153
153
|
- category: "核心功能"
|
|
154
154
|
items:
|
|
155
|
-
- [
|
|
156
|
-
|
|
155
|
+
- [
|
|
156
|
+
"功能A",
|
|
157
|
+
"{{status}}",
|
|
158
|
+
"{{status}}",
|
|
159
|
+
"{{status}}",
|
|
160
|
+
"{{status}}",
|
|
161
|
+
]
|
|
162
|
+
- [
|
|
163
|
+
"功能B",
|
|
164
|
+
"{{status}}",
|
|
165
|
+
"{{status}}",
|
|
166
|
+
"{{status}}",
|
|
167
|
+
"{{status}}",
|
|
168
|
+
]
|
|
157
169
|
- category: "用户体验"
|
|
158
170
|
items:
|
|
159
|
-
- [
|
|
171
|
+
- [
|
|
172
|
+
"移动应用",
|
|
173
|
+
"{{rating}}",
|
|
174
|
+
"{{rating}}",
|
|
175
|
+
"{{rating}}",
|
|
176
|
+
"{{rating}}",
|
|
177
|
+
]
|
|
160
178
|
- ["上手时间", "{{time}}", "{{time}}", "{{time}}", "{{time}}"]
|
|
161
179
|
- category: "集成与生态系统"
|
|
162
180
|
items:
|
|
@@ -167,11 +185,23 @@ sections:
|
|
|
167
185
|
"{{availability}}",
|
|
168
186
|
"{{availability}}",
|
|
169
187
|
]
|
|
170
|
-
- [
|
|
188
|
+
- [
|
|
189
|
+
"第三方集成",
|
|
190
|
+
"{{number}}",
|
|
191
|
+
"{{number}}",
|
|
192
|
+
"{{number}}",
|
|
193
|
+
"{{number}}",
|
|
194
|
+
]
|
|
171
195
|
- category: "定价与计划"
|
|
172
196
|
items:
|
|
173
197
|
- ["起步价", "{{price}}", "{{price}}", "{{price}}", "{{price}}"]
|
|
174
|
-
- [
|
|
198
|
+
- [
|
|
199
|
+
"免费套餐",
|
|
200
|
+
"{{yes_no}}",
|
|
201
|
+
"{{yes_no}}",
|
|
202
|
+
"{{yes_no}}",
|
|
203
|
+
"{{yes_no}}",
|
|
204
|
+
]
|
|
175
205
|
- id: swot-comparison
|
|
176
206
|
title: SWOT 对比
|
|
177
207
|
instruction: 为你的解决方案与主要竞争对手创建 SWOT 分析
|
|
@@ -73,17 +73,83 @@ sections:
|
|
|
73
73
|
columns: [类别, 技术, 版本, 用途, 选型理由]
|
|
74
74
|
instruction: 根据所选框架和项目需求,填写适当的技术选型。
|
|
75
75
|
rows:
|
|
76
|
-
- [
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
- [
|
|
77
|
+
"框架",
|
|
78
|
+
"{{framework}}",
|
|
79
|
+
"{{version}}",
|
|
80
|
+
"{{purpose}}",
|
|
81
|
+
"{{why_chosen}}",
|
|
82
|
+
]
|
|
83
|
+
- [
|
|
84
|
+
"UI 库",
|
|
85
|
+
"{{ui_library}}",
|
|
86
|
+
"{{version}}",
|
|
87
|
+
"{{purpose}}",
|
|
88
|
+
"{{why_chosen}}",
|
|
89
|
+
]
|
|
90
|
+
- [
|
|
91
|
+
"状态管理",
|
|
92
|
+
"{{state_management}}",
|
|
93
|
+
"{{version}}",
|
|
94
|
+
"{{purpose}}",
|
|
95
|
+
"{{why_chosen}}",
|
|
96
|
+
]
|
|
97
|
+
- [
|
|
98
|
+
"路由",
|
|
99
|
+
"{{routing_library}}",
|
|
100
|
+
"{{version}}",
|
|
101
|
+
"{{purpose}}",
|
|
102
|
+
"{{why_chosen}}",
|
|
103
|
+
]
|
|
104
|
+
- [
|
|
105
|
+
"构建工具",
|
|
106
|
+
"{{build_tool}}",
|
|
107
|
+
"{{version}}",
|
|
108
|
+
"{{purpose}}",
|
|
109
|
+
"{{why_chosen}}",
|
|
110
|
+
]
|
|
111
|
+
- [
|
|
112
|
+
"样式方案",
|
|
113
|
+
"{{styling_solution}}",
|
|
114
|
+
"{{version}}",
|
|
115
|
+
"{{purpose}}",
|
|
116
|
+
"{{why_chosen}}",
|
|
117
|
+
]
|
|
118
|
+
- [
|
|
119
|
+
"测试",
|
|
120
|
+
"{{test_framework}}",
|
|
121
|
+
"{{version}}",
|
|
122
|
+
"{{purpose}}",
|
|
123
|
+
"{{why_chosen}}",
|
|
124
|
+
]
|
|
125
|
+
- [
|
|
126
|
+
"组件库",
|
|
127
|
+
"{{component_lib}}",
|
|
128
|
+
"{{version}}",
|
|
129
|
+
"{{purpose}}",
|
|
130
|
+
"{{why_chosen}}",
|
|
131
|
+
]
|
|
132
|
+
- [
|
|
133
|
+
"表单处理",
|
|
134
|
+
"{{form_library}}",
|
|
135
|
+
"{{version}}",
|
|
136
|
+
"{{purpose}}",
|
|
137
|
+
"{{why_chosen}}",
|
|
138
|
+
]
|
|
139
|
+
- [
|
|
140
|
+
"动画",
|
|
141
|
+
"{{animation_lib}}",
|
|
142
|
+
"{{version}}",
|
|
143
|
+
"{{purpose}}",
|
|
144
|
+
"{{why_chosen}}",
|
|
145
|
+
]
|
|
146
|
+
- [
|
|
147
|
+
"开发工具",
|
|
148
|
+
"{{dev_tools}}",
|
|
149
|
+
"{{version}}",
|
|
150
|
+
"{{purpose}}",
|
|
151
|
+
"{{why_chosen}}",
|
|
152
|
+
]
|
|
87
153
|
|
|
88
154
|
- id: project-structure
|
|
89
155
|
title: 项目结构
|
|
@@ -279,7 +279,12 @@ sections:
|
|
|
279
279
|
rows:
|
|
280
280
|
- ["移动端", "{{mobile_min}}", "{{mobile_max}}", "{{mobile_devices}}"]
|
|
281
281
|
- ["平板", "{{tablet_min}}", "{{tablet_max}}", "{{tablet_devices}}"]
|
|
282
|
-
- [
|
|
282
|
+
- [
|
|
283
|
+
"桌面端",
|
|
284
|
+
"{{desktop_min}}",
|
|
285
|
+
"{{desktop_max}}",
|
|
286
|
+
"{{desktop_devices}}",
|
|
287
|
+
]
|
|
283
288
|
- ["宽屏", "{{wide_min}}", "-", "{{wide_devices}}"]
|
|
284
289
|
- id: adaptation-patterns
|
|
285
290
|
title: 适配模式
|