@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.
Files changed (89) hide show
  1. package/.idea/workspace.xml +27 -26
  2. package/JAVA-BACKEND-COMMANDS-REFERENCE.md +62 -52
  3. package/JAVA-BACKEND-ITERATION-GUIDE.md +125 -18
  4. package/README.md +1 -1
  5. package/common/utils/bmad-doc-template.md +5 -5
  6. package/dist/agents/analyst.txt +35 -5
  7. package/dist/agents/architect.txt +217 -31
  8. package/dist/agents/automation-orchestrator.txt +4 -4
  9. package/dist/agents/dev.txt +3 -3
  10. package/dist/agents/full-requirement-orchestrator.txt +11 -11
  11. package/dist/agents/qa.txt +102 -102
  12. package/dist/agents/sm.txt +6 -6
  13. package/dist/agents/ux-expert.txt +6 -1
  14. package/dist/agents/workflow-executor.txt +879 -0
  15. package/dist/agents/xiaoma-master.txt +258 -37
  16. package/dist/teams/team-all.txt +1223 -445
  17. package/dist/teams/team-fullstack-with-database.txt +384 -446
  18. package/dist/teams/team-fullstack.txt +258 -37
  19. package/dist/teams/team-ide-minimal.txt +111 -111
  20. package/dist/teams/team-no-ui.txt +252 -36
  21. package/docs/architecture-sharding-modification.md +623 -0
  22. package/docs/automated-requirements-analysis-outputs.md +896 -0
  23. package/package.json +1 -1
  24. package/tools/builders/web-builder.js +292 -142
  25. package/tools/bump-all-versions.js +50 -32
  26. package/tools/cli.js +52 -47
  27. package/tools/flattener/aggregate.js +30 -12
  28. package/tools/flattener/binary.js +46 -43
  29. package/tools/flattener/discovery.js +23 -15
  30. package/tools/flattener/files.js +6 -6
  31. package/tools/flattener/ignoreRules.js +122 -121
  32. package/tools/flattener/main.js +249 -144
  33. package/tools/flattener/projectRoot.js +74 -69
  34. package/tools/flattener/prompts.js +12 -10
  35. package/tools/flattener/stats.helpers.js +90 -61
  36. package/tools/flattener/stats.js +1 -1
  37. package/tools/flattener/test-matrix.js +225 -170
  38. package/tools/flattener/xml.js +31 -23
  39. package/tools/installer/bin/xiaoma.js +199 -153
  40. package/tools/installer/lib/config-loader.js +76 -47
  41. package/tools/installer/lib/file-manager.js +101 -44
  42. package/tools/installer/lib/ide-base-setup.js +49 -39
  43. package/tools/installer/lib/ide-setup.js +694 -380
  44. package/tools/installer/lib/installer.js +802 -469
  45. package/tools/installer/lib/memory-profiler.js +22 -12
  46. package/tools/installer/lib/module-manager.js +16 -14
  47. package/tools/installer/lib/resource-locator.js +61 -35
  48. package/tools/lib/dependency-resolver.js +34 -23
  49. package/tools/lib/yaml-utils.js +7 -2
  50. package/tools/preview-release-notes.js +33 -25
  51. package/tools/shared/bannerArt.js +3 -3
  52. package/tools/sync-installer-version.js +16 -7
  53. package/tools/upgraders/v3-to-v4-upgrader.js +244 -163
  54. package/tools/version-bump.js +24 -18
  55. package/tools/xiaoma-npx-wrapper.js +15 -10
  56. package/tools/yaml-format.js +60 -36
  57. package/xiaoma-core/agent-teams/team-fullstack-with-database.yaml +0 -1
  58. package/xiaoma-core/agents/automated-fix-validator.yaml +2 -1
  59. package/xiaoma-core/agents/automated-quality-validator.yaml +10 -5
  60. package/xiaoma-core/agents/automation-orchestrator.md +4 -4
  61. package/xiaoma-core/agents/dev.md +4 -4
  62. package/xiaoma-core/agents/enhanced-workflow-orchestrator.yaml +2 -1
  63. package/xiaoma-core/agents/full-requirement-orchestrator.md +11 -11
  64. package/xiaoma-core/agents/global-requirements-auditor.yaml +11 -3
  65. package/xiaoma-core/agents/intelligent-template-adapter.yaml +19 -5
  66. package/xiaoma-core/agents/master-execution-engine.yaml +19 -5
  67. package/xiaoma-core/agents/workflow-executor.md +8 -4
  68. package/xiaoma-core/agents/xiaoma-master.md +1 -1
  69. package/xiaoma-core/data/test-levels-framework.md +12 -12
  70. package/xiaoma-core/tasks/analyze-existing-database.md +1 -1
  71. package/xiaoma-core/tasks/apply-qa-fixes.md +3 -3
  72. package/xiaoma-core/tasks/batch-story-generation.md +22 -22
  73. package/xiaoma-core/tasks/create-enhanced-story-with-database.md +6 -6
  74. package/xiaoma-core/tasks/nfr-assess.md +6 -6
  75. package/xiaoma-core/tasks/project-integration-testing.md +42 -42
  76. package/xiaoma-core/tasks/qa-gate.md +23 -23
  77. package/xiaoma-core/tasks/review-story.md +18 -18
  78. package/xiaoma-core/tasks/risk-profile.md +25 -25
  79. package/xiaoma-core/tasks/serial-development-orchestration.md +51 -51
  80. package/xiaoma-core/tasks/test-design.md +9 -9
  81. package/xiaoma-core/tasks/trace-requirements.md +21 -21
  82. package/xiaoma-core/templates/competitor-analysis-tmpl.yaml +35 -5
  83. package/xiaoma-core/templates/front-end-architecture-tmpl.yaml +77 -11
  84. package/xiaoma-core/templates/front-end-spec-tmpl.yaml +6 -1
  85. package/xiaoma-core/templates/fullstack-architecture-tmpl.yaml +140 -20
  86. package/xiaoma-core/templates/global-qa-monitoring-tmpl.yaml +2 -1
  87. package/xiaoma-core/templates/requirements-coverage-audit.yaml +2 -1
  88. package/xiaoma-core/workflows/automated-requirements-analysis.yaml +283 -6
  89. 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: '{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)
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: '{epic}.{story}'
197
- story_title: '{story title}'
196
+ story: "{epic}.{story}"
197
+ story_title: "{story title}"
198
198
  gate: PASS|CONCERNS|FAIL|WAIVED
199
- status_reason: '1-2 sentence explanation of gate decision'
200
- reviewer: 'Quinn (Test Architect)'
201
- updated: '{ISO-8601 timestamp}'
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: '{ISO-8601 timestamp}' # Typically 2 weeks from review
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: 'Specific findings'
220
+ notes: "Specific findings"
221
221
  performance:
222
222
  status: PASS|CONCERNS|FAIL
223
- notes: 'Specific findings'
223
+ notes: "Specific findings"
224
224
  reliability:
225
225
  status: PASS|CONCERNS|FAIL
226
- notes: 'Specific findings'
226
+ notes: "Specific findings"
227
227
  maintainability:
228
228
  status: PASS|CONCERNS|FAIL
229
- notes: 'Specific findings'
229
+ notes: "Specific findings"
230
230
 
231
231
  recommendations:
232
232
  immediate: # Must fix before production
233
- - action: 'Add rate limiting'
234
- refs: ['api/auth/login.ts']
233
+ - action: "Add rate limiting"
234
+ refs: ["api/auth/login.ts"]
235
235
  future: # Can be addressed later
236
- - action: 'Consider caching'
237
- refs: ['services/data.ts']
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: '{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)
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: 'SEC-001' # Use prefixes: SEC, PERF, DATA, BUS, OPS, TECH
84
+ id: "SEC-001" # Use prefixes: SEC, PERF, DATA, BUS, OPS, TECH
85
85
  category: security
86
- title: 'Insufficient input validation on user forms'
87
- description: 'Form inputs not properly sanitized could lead to XSS attacks'
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
- - 'UserRegistrationForm'
90
- - 'ProfileUpdateForm'
91
- detection_method: 'Code review revealed missing validation'
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: 'SEC-001'
139
- strategy: 'preventive' # preventive|detective|corrective
138
+ risk_id: "SEC-001"
139
+ strategy: "preventive" # preventive|detective|corrective
140
140
  actions:
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'
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
- - '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'
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: 'XSS on profile form'
177
+ title: "XSS on profile form"
178
178
  recommendations:
179
179
  must_fix:
180
- - 'Add input sanitization & CSP'
180
+ - "Add input sanitization & CSP"
181
181
  monitor:
182
- - 'Add security alerts for auth endpoints'
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: 'one_task_at_a_time'
61
- completion_requirement: '100%_before_next'
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: '基础故事100%完成'
84
- validation: '基础API和数据模型完全就绪'
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: '核心业务故事100%完成'
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: '特性功能故事100%完成'
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: '所有故事100%完成'
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: '>=95%'
118
- - unit_tests: 'all_passing'
119
- - integration_tests: 'all_passing'
120
- - code_quality: 'A_grade'
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: 'all_passing'
125
- - business_logic_tests: 'all_passing'
126
- - database_tests: 'all_passing'
127
- - performance_tests: 'baseline_met'
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: 'all_passing'
132
- - ui_tests: 'all_passing'
133
- - cross_browser_tests: 'all_passing'
134
- - accessibility_tests: 'all_passing'
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: 'all_passing'
139
- - security_scan: 'no_critical_issues'
140
- - performance_benchmark: 'meets_requirements'
141
- - user_acceptance: 'approved'
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: 'continuous'
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: '*orchestrate-serial-development'
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: '>=95%'
293
- - test_pass_rate: '100%'
294
- - defect_density: '<=0.1 per KLOC'
295
- - performance_baseline: 'met'
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: 'stop_and_fix'
323
- escalation: 'immediate'
322
+ action: "stop_and_fix"
323
+ escalation: "immediate"
324
324
 
325
325
  coverage_below_threshold:
326
- action: 'stop_and_improve'
327
- requirement: 'meet_coverage_target'
326
+ action: "stop_and_improve"
327
+ requirement: "meet_coverage_target"
328
328
 
329
329
  integration_failures:
330
- action: 'rollback_and_debug'
331
- validation: 'complete_retest'
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: '{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)
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: '{epic}.{story}-{LEVEL}-{SEQ}'
68
- requirement: 'AC reference'
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: 'What is being tested'
72
- justification: 'Why this level was chosen'
73
- mitigates_risks: ['RISK-001'] # If risk profile exists
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: 'AC1: User can login with valid credentials'
36
+ requirement: "AC1: User can login with valid credentials"
37
37
  test_mappings:
38
- - test_file: 'auth/login.test.ts'
39
- test_case: 'should successfully login with valid email and password'
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: 'A registered user with valid credentials'
42
- when: 'They submit the login form'
43
- then: 'They are redirected to dashboard and session is created'
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: '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'
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: 'AC3: Password reset email sent within 60 seconds'
73
- gap: 'No test for email delivery timing'
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: 'Test email service SLA compliance'
77
+ description: "Test email service SLA compliance"
78
78
 
79
- - requirement: 'AC5: Support 1000 concurrent users'
80
- gap: 'No load testing implemented'
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: 'Load test with 1000 concurrent connections'
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: 'qa.qaLocation/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md'
100
+ planning_ref: "qa.qaLocation/assessments/{epic}.{story}-test-design-{YYYYMMDD}.md"
101
101
  uncovered:
102
- - ac: 'AC3'
103
- reason: 'No test found for password reset timing'
104
- notes: 'See qa.qaLocation/assessments/{epic}.{story}-trace-{YYYYMMDD}.md'
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
- - ["功能A", "{{status}}", "{{status}}", "{{status}}", "{{status}}"]
156
- - ["功能B", "{{status}}", "{{status}}", "{{status}}", "{{status}}"]
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
- - ["移动应用", "{{rating}}", "{{rating}}", "{{rating}}", "{{rating}}"]
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
- - ["第三方集成", "{{number}}", "{{number}}", "{{number}}", "{{number}}"]
188
+ - [
189
+ "第三方集成",
190
+ "{{number}}",
191
+ "{{number}}",
192
+ "{{number}}",
193
+ "{{number}}",
194
+ ]
171
195
  - category: "定价与计划"
172
196
  items:
173
197
  - ["起步价", "{{price}}", "{{price}}", "{{price}}", "{{price}}"]
174
- - ["免费套餐", "{{yes_no}}", "{{yes_no}}", "{{yes_no}}", "{{yes_no}}"]
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
- - ["框架", "{{framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
77
- - ["UI 库", "{{ui_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
78
- - ["状态管理", "{{state_management}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
79
- - ["路由", "{{routing_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
80
- - ["构建工具", "{{build_tool}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
81
- - ["样式方案", "{{styling_solution}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
82
- - ["测试", "{{test_framework}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
83
- - ["组件库", "{{component_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
84
- - ["表单处理", "{{form_library}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
85
- - ["动画", "{{animation_lib}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
86
- - ["开发工具", "{{dev_tools}}", "{{version}}", "{{purpose}}", "{{why_chosen}}"]
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
- - ["桌面端", "{{desktop_min}}", "{{desktop_max}}", "{{desktop_devices}}"]
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: 适配模式