jsharness 1.0.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/.harness/README.md +199 -0
- package/.harness/agents/code-reviewer/contract.yaml +64 -0
- package/.harness/agents/developer/contract.yaml +72 -0
- package/.harness/agents/gate-controller/contract.yaml +64 -0
- package/.harness/agents/project-manager/contract.yaml +77 -0
- package/.harness/agents/prompt-templates.md +352 -0
- package/.harness/agents/requirements-analyst/contract.yaml +64 -0
- package/.harness/agents/solution-designer/contract.yaml +75 -0
- package/.harness/agents/tester/contract.yaml +92 -0
- package/.harness/config/models.yaml +67 -0
- package/.harness/dev-map/backend/api-definition.md +131 -0
- package/.harness/dev-map/backend/auth-security.md +131 -0
- package/.harness/dev-map/backend/conventions-java.md +471 -0
- package/.harness/dev-map/backend/conventions.md +192 -0
- package/.harness/dev-map/backend/database.md +106 -0
- package/.harness/dev-map/backend/structure.md +140 -0
- package/.harness/dev-map/decisions.md +275 -0
- package/.harness/dev-map/frontend/api-integration.md +139 -0
- package/.harness/dev-map/frontend/components.md +178 -0
- package/.harness/dev-map/frontend/conventions.md +416 -0
- package/.harness/dev-map/frontend/state-management.md +170 -0
- package/.harness/dev-map/frontend/structure.md +103 -0
- package/.harness/dev-map/overview.md +267 -0
- package/.harness/docs/integration-test-plan.md +248 -0
- package/.harness/docs/team-guidelines/README.md +161 -0
- package/.harness/docs/team-guidelines/arch-team.md +811 -0
- package/.harness/docs/team-guidelines/collaboration.md +556 -0
- package/.harness/docs/team-guidelines/pm-team.md +337 -0
- package/.harness/docs/team-guidelines/qa-team.md +562 -0
- package/.harness/docs/team-guidelines/rd-team.md +714 -0
- package/.harness/docs/training-materials.md +280 -0
- package/.harness/gate/baseline.js +220 -0
- package/.harness/gate/checks/build-gates-frontend.js +152 -0
- package/.harness/gate/checks/build-gates-java.js +155 -0
- package/.harness/gate/checks/build-gates.js +119 -0
- package/.harness/gate/checks/engineering-consistency.js +138 -0
- package/.harness/gate/checks/security-quality.js +129 -0
- package/.harness/gate/checks/static-compliance.js +313 -0
- package/.harness/gate/checks/test-compliance.js +114 -0
- package/.harness/gate/index.js +315 -0
- package/.harness/mcp/config.yaml +435 -0
- package/.harness/rules/global/coding-standard.md +232 -0
- package/.harness/rules/global/commit-convention.md +165 -0
- package/.harness/rules/global/process-discipline.md +192 -0
- package/.harness/rules/global/security-baseline.md +306 -0
- package/.harness/rules/project/frontend-vue3.md +293 -0
- package/.harness/rules/project/java-backend.md +460 -0
- package/.harness/rules/project/web-specific.md +231 -0
- package/.harness/skills/build.md +192 -0
- package/.harness/skills/code-review.md +251 -0
- package/.harness/skills/docker-build.md +227 -0
- package/.harness/skills/docs-update.md +164 -0
- package/.harness/skills/java-build.md +261 -0
- package/.harness/skills/lint-check.md +482 -0
- package/.harness/skills/task-board-maintenance.md +105 -0
- package/.harness/skills/test-api.md +461 -0
- package/.harness/skills/test-e2e.md +431 -0
- package/.harness/skills/test-unit.md +649 -0
- package/.harness/skills/vue-frontend-build.md +344 -0
- package/.harness/specs/quality-feedback/implementation-guide.md +350 -0
- package/.harness/task-board.md +121 -0
- package/.harness/workflow/definition.yaml +504 -0
- package/.harness/workflow/validate.js +320 -0
- package/.harness/workflow/variants.yaml +253 -0
- package/README.md +237 -0
- package/bin/jsharness.js +53 -0
- package/lib/index.mjs +778 -0
- package/package.json +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# TaskBoard — 项目任务态势看板
|
|
2
|
+
|
|
3
|
+
> **维护者**: PM Agent
|
|
4
|
+
> **更新频率**: 每次状态变更时立即更新
|
|
5
|
+
> **最后更新**: 2026-05-20 22:13 (初始化)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📌 进行中任务
|
|
10
|
+
|
|
11
|
+
| 任务ID | 标题 | 当前阶段 | 负责Agent | 文档目录 | 上次更新 | 预计完成 |
|
|
12
|
+
|--------|------|----------|-----------|----------|----------|----------|
|
|
13
|
+
| *(暂无)* | - | - | - | - | - | - |
|
|
14
|
+
|
|
15
|
+
## 📋 待开始任务
|
|
16
|
+
|
|
17
|
+
| 任务ID | 标题 | 优先级 | 来源 | 关联Issue/PR | 流程变体 |
|
|
18
|
+
|--------|------|--------|------|-------------|----------|
|
|
19
|
+
| *(暂无)* | - | - | - | - | - |
|
|
20
|
+
|
|
21
|
+
### 待分配需求池
|
|
22
|
+
|
|
23
|
+
| 来源渠道 | 需求描述 | 接收时间 | 状态 |
|
|
24
|
+
|----------|----------|----------|------|
|
|
25
|
+
| *(待填充)* | - | - | 待路由 |
|
|
26
|
+
|
|
27
|
+
## ✅ 已完成任务(本月)
|
|
28
|
+
|
|
29
|
+
| 任务ID | 标题 | 交付结论 | 归档日期 | 实际周期 |
|
|
30
|
+
|--------|------|----------|----------|----------|
|
|
31
|
+
| *(暂无)* | - | - | - | - |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 📊 度量指标区域
|
|
36
|
+
|
|
37
|
+
### 本周概览(自动计算)
|
|
38
|
+
|
|
39
|
+
| 指标 | 值 | 目标 | 状态 |
|
|
40
|
+
|------|-----|------|------|
|
|
41
|
+
| 新增需求 | 0 | - | - |
|
|
42
|
+
| 完成交付 | 0 | ≥3 | - |
|
|
43
|
+
| 平均交付周期(天) | - | ≤7 | - |
|
|
44
|
+
| 打回率 | 0% | <15% | - |
|
|
45
|
+
| 各阶段阻塞数 | 0 | =0 | - |
|
|
46
|
+
| 流程违规次数 | 0 | =0 | - |
|
|
47
|
+
|
|
48
|
+
### 各阶段当前负载
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
需求分析: [░░░░░] 0 个
|
|
52
|
+
方案设计: [░░░░░] 0 个
|
|
53
|
+
闸门评估: [░░░░░] 0 个
|
|
54
|
+
开发实现: [░░░░░] 0 个
|
|
55
|
+
代码审查: [░░░░░] 0 个
|
|
56
|
+
测试验证: [░░░░░] 0 个
|
|
57
|
+
交付归档: [░░░░░] 0 个
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🔄 TaskBoard 维护 Skill
|
|
63
|
+
|
|
64
|
+
### 新任务注册流程
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
触发条件: PM 收到新需求
|
|
68
|
+
步骤:
|
|
69
|
+
1. 分配唯一 Task ID(格式:TASK-YYYYMMDD-NNN)
|
|
70
|
+
2. 判断流程变体(标准/Bug修复/热修复/微型)
|
|
71
|
+
3. 在「待开始任务」表中注册
|
|
72
|
+
4. 更新度量指标中的"新增需求"
|
|
73
|
+
5. 如果有相关 Issue,关联到对应列
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 状态变更规则
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
┌───────────┐ 需求分析完成 ┌──────────────┐
|
|
80
|
+
│ 待开始 │ ──────────────→ │ 进行中 │
|
|
81
|
+
│ │ │ │
|
|
82
|
+
│ │ ←────────────── │ │
|
|
83
|
+
│ │ 打回重做 │ │
|
|
84
|
+
└───────────┘ └──────┬───────┘
|
|
85
|
+
│ 测试通过
|
|
86
|
+
┌──────▼───────┐
|
|
87
|
+
│ 已完成 │
|
|
88
|
+
│ │
|
|
89
|
+
└──────────────┘
|
|
90
|
+
|
|
91
|
+
每次状态变更必须:
|
|
92
|
+
1. 更新表格中该行的位置
|
|
93
|
+
2. 更新"上次更新"时间戳
|
|
94
|
+
3. 记录变更原因(简短)
|
|
95
|
+
4. 同步更新度量指标
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 交付归档流程
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
触发条件: 测试验证 PASS
|
|
102
|
+
步骤:
|
|
103
|
+
1. 将任务从「进行中」移至「已完成」
|
|
104
|
+
2. 记录交付结论(PASS/CONDITIONAL_PASS + 说明)
|
|
105
|
+
3. 记录实际交付周期(从进入开发到完成的天数)
|
|
106
|
+
4. 归档所有阶段文档链接
|
|
107
|
+
5. 更新度量指标:
|
|
108
|
+
- 完成交付 +1
|
|
109
|
+
- 平均交付周期 重算
|
|
110
|
+
- 如有打回 → 打回率 重算
|
|
111
|
+
6. 通知相关利益方
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## ⚠️ 注意事项
|
|
117
|
+
|
|
118
|
+
1. **TaskBoard 是单一数据源** — 所有任务的状态以此为准,不与其他工具冲突
|
|
119
|
+
2. **PM 对准确性负责** — 过期或错误的信息会影响整个团队效率
|
|
120
|
+
3. **定期 Review** — 每周一 PM Agent 清理过期条目和异常数据
|
|
121
|
+
4. **与外部系统同步** — 可选地与 Jira/GitLab Issues 保持同步
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
# Harness 主流程状态机定义
|
|
2
|
+
|
|
3
|
+
## 流程概览
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
stateDiagram-v2
|
|
7
|
+
[*] --> 需求分析: PM路由新需求
|
|
8
|
+
|
|
9
|
+
需求分析 --> 方案设计: 需求文档✅
|
|
10
|
+
需求分析 --> 需求分析: 打回重做
|
|
11
|
+
需求分析 --> [*]: 取消
|
|
12
|
+
|
|
13
|
+
方案设计 --> 闸门评估: 设计文档✅
|
|
14
|
+
方案设计 --> 方案设计: 打回重做
|
|
15
|
+
方案设计 --> 需求分析: 需要澄清需求(变更请求)
|
|
16
|
+
|
|
17
|
+
闸门评估 --> 开发实现: PASS放行
|
|
18
|
+
闸门评估 --> 方案设计: BLOCK/需要修改方案
|
|
19
|
+
闸门评估 --> 需求分析: HOLD/需求问题
|
|
20
|
+
闸门评估 --> [*]: BLOCK且无法解决/取消
|
|
21
|
+
|
|
22
|
+
开发实现 --> 代码审查: PR创建+自检通过✅
|
|
23
|
+
开发实现 --> 开发实现: 自检未通过
|
|
24
|
+
开发实现 --> 方案设计: 发现设计与实际不符
|
|
25
|
+
|
|
26
|
+
代码审查 --> 测试验证: PASS/条件PASS通过✅
|
|
27
|
+
代码审查 --> 开发实现: FAIL打回修改
|
|
28
|
+
代码审查 --> 闸门评估: 安全红线问题升级
|
|
29
|
+
|
|
30
|
+
测试验证 --> 交付归档: 全部测试PASS✅
|
|
31
|
+
测试验证 --> 开发实现: 缺陷修复(P1/P2)
|
|
32
|
+
测试验证 --> 方案设计: 设计缺陷导致无法验收
|
|
33
|
+
测试验证 --> 闸门评估: 安全漏洞阻断
|
|
34
|
+
|
|
35
|
+
交付归档 --> [*]: 完成
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 七个阶段完整定义
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
workflow:
|
|
42
|
+
name: "产研测标准流程"
|
|
43
|
+
version: "1.0.0"
|
|
44
|
+
description: "面向 Web 全栈应用的标准七阶段开发工作流"
|
|
45
|
+
|
|
46
|
+
stages:
|
|
47
|
+
- id: requirements-analysis
|
|
48
|
+
name: "需求分析"
|
|
49
|
+
order: 1
|
|
50
|
+
agent: requirements-analyst
|
|
51
|
+
model_tier: standard
|
|
52
|
+
max_turns: 10
|
|
53
|
+
|
|
54
|
+
inputs:
|
|
55
|
+
- name: "原始需求"
|
|
56
|
+
source: "pm_routing"
|
|
57
|
+
format: "natural_language / issue"
|
|
58
|
+
required: true
|
|
59
|
+
- name: "TaskBoard 状态"
|
|
60
|
+
source: "task_board"
|
|
61
|
+
format: "markdown"
|
|
62
|
+
required: true
|
|
63
|
+
- name: "dev-map 参考文档"
|
|
64
|
+
source: "dev_map"
|
|
65
|
+
format: "markdown"
|
|
66
|
+
required: true
|
|
67
|
+
|
|
68
|
+
outputs:
|
|
69
|
+
- name: "需求文档"
|
|
70
|
+
format: "markdown"
|
|
71
|
+
template: ".harness/templates/requirements.md"
|
|
72
|
+
required: true
|
|
73
|
+
- name: "验收标准列表"
|
|
74
|
+
format: "markdown"
|
|
75
|
+
required: true
|
|
76
|
+
- name: "用户故事集"
|
|
77
|
+
format: "markdown"
|
|
78
|
+
required: false
|
|
79
|
+
|
|
80
|
+
transitions:
|
|
81
|
+
- to: solution-design
|
|
82
|
+
trigger: "需求文档审核通过"
|
|
83
|
+
guard: "所有必需产出物齐全 + 验收标准可测"
|
|
84
|
+
- to: self
|
|
85
|
+
trigger: "打回重做"
|
|
86
|
+
condition: "需求不清晰 / 遗漏关键信息"
|
|
87
|
+
- to: cancelled
|
|
88
|
+
trigger: "取消需求"
|
|
89
|
+
|
|
90
|
+
rules_referenced:
|
|
91
|
+
- "rules/global/process-discipline.md" # 下游不得改上游
|
|
92
|
+
|
|
93
|
+
- id: solution-design
|
|
94
|
+
name: "方案设计"
|
|
95
|
+
order: 2
|
|
96
|
+
agent: solution-designer
|
|
97
|
+
model_tier: standard
|
|
98
|
+
max_turns: 15
|
|
99
|
+
|
|
100
|
+
inputs:
|
|
101
|
+
- name: "需求文档"
|
|
102
|
+
source: "requirements_analysis.outputs.需求文档"
|
|
103
|
+
required: true
|
|
104
|
+
- name: "验收标准"
|
|
105
|
+
source: "requirements_analysis.outputs.验收标准列表"
|
|
106
|
+
required: true
|
|
107
|
+
- name: "dev-map 架构参考"
|
|
108
|
+
source: "dev_map"
|
|
109
|
+
required: true
|
|
110
|
+
- name: "ADR 历史决策"
|
|
111
|
+
source: "dev-map/decisions.md"
|
|
112
|
+
required: false
|
|
113
|
+
|
|
114
|
+
outputs:
|
|
115
|
+
- name: "技术设计文档"
|
|
116
|
+
format: "markdown"
|
|
117
|
+
required: true
|
|
118
|
+
- name: "API 定义"
|
|
119
|
+
format: "yaml (OpenAPI)"
|
|
120
|
+
required: true
|
|
121
|
+
- name: "数据模型"
|
|
122
|
+
format: "markdown"
|
|
123
|
+
required: true
|
|
124
|
+
- name: "技术决策记录(如有新决策)"
|
|
125
|
+
format: "markdown (ADR)"
|
|
126
|
+
required: false
|
|
127
|
+
|
|
128
|
+
transitions:
|
|
129
|
+
- to: gate-evaluation
|
|
130
|
+
trigger: "设计方案完成"
|
|
131
|
+
guard: "所有必需产出物齐全"
|
|
132
|
+
- to: self
|
|
133
|
+
trigger: "打回重做"
|
|
134
|
+
condition: "方案不完整 / 不符合需求"
|
|
135
|
+
- to: requirements-analysis
|
|
136
|
+
trigger: "变更请求 — 需求澄清"
|
|
137
|
+
type: "upstream_request"
|
|
138
|
+
|
|
139
|
+
rules_referenced:
|
|
140
|
+
- "rules/global/coding-standard.md"
|
|
141
|
+
|
|
142
|
+
- id: gate-evaluation
|
|
143
|
+
name: "闸门评估"
|
|
144
|
+
order: 3
|
|
145
|
+
agent: gate-controller
|
|
146
|
+
model_tier: strong
|
|
147
|
+
max_turns: 8
|
|
148
|
+
|
|
149
|
+
inputs:
|
|
150
|
+
- name: "需求文档"
|
|
151
|
+
from: "requirements_analysis"
|
|
152
|
+
required: true
|
|
153
|
+
- name: "技术设计文档"
|
|
154
|
+
from: "solution_design"
|
|
155
|
+
required: true
|
|
156
|
+
- name: "Gate 快速检查结果"
|
|
157
|
+
source: "gate_scripts"
|
|
158
|
+
format: "json"
|
|
159
|
+
required: false
|
|
160
|
+
- name: "资源可用情况"
|
|
161
|
+
source: "human_input"
|
|
162
|
+
format: "text"
|
|
163
|
+
required: false
|
|
164
|
+
|
|
165
|
+
outputs:
|
|
166
|
+
- name: "可行性报告"
|
|
167
|
+
format: "markdown"
|
|
168
|
+
required: true
|
|
169
|
+
- name: "风险清单"
|
|
170
|
+
format: "markdown"
|
|
171
|
+
required: true
|
|
172
|
+
- name: "裁决决定"
|
|
173
|
+
format: "json { decision: PASS|BLOCK|HOLD, reason }"
|
|
174
|
+
required: true
|
|
175
|
+
|
|
176
|
+
decisions:
|
|
177
|
+
- outcome: PASS
|
|
178
|
+
to: development
|
|
179
|
+
condition: "无阻塞风险 + 所有中高风险有缓解措施"
|
|
180
|
+
- outcome: BLOCK-to-design
|
|
181
|
+
to: solution-design
|
|
182
|
+
condition: "方案层面的问题可修正"
|
|
183
|
+
- outcome: BLOCK-cancel
|
|
184
|
+
to: cancelled
|
|
185
|
+
condition: "根本不可行或资源永远不足"
|
|
186
|
+
- outcome: HOLD
|
|
187
|
+
to: self
|
|
188
|
+
condition: "需等待外部条件(POC/审批/资源)"
|
|
189
|
+
- outcome: BLOCK-to-requirements
|
|
190
|
+
to: requirements-analysis
|
|
191
|
+
condition: "需求层面的根本性问题"
|
|
192
|
+
|
|
193
|
+
rules_referenced:
|
|
194
|
+
- "rules/global/security-baseline.md"
|
|
195
|
+
- "rules/global/process-discipline.md"
|
|
196
|
+
|
|
197
|
+
- id: development
|
|
198
|
+
name: "开发实现"
|
|
199
|
+
order: 4
|
|
200
|
+
agent: developer
|
|
201
|
+
model_tier: standard
|
|
202
|
+
max_turns: 20
|
|
203
|
+
|
|
204
|
+
inputs:
|
|
205
|
+
- name: "技术设计文档"
|
|
206
|
+
from: "solution_design"
|
|
207
|
+
required: true
|
|
208
|
+
- name: "API 定义"
|
|
209
|
+
from: "solution_design"
|
|
210
|
+
required: true
|
|
211
|
+
- name: "Rule 规则集"
|
|
212
|
+
source: "harness_rules"
|
|
213
|
+
required: true
|
|
214
|
+
- name: "Skill 动作集"
|
|
215
|
+
source: "harness_skills"
|
|
216
|
+
required: true
|
|
217
|
+
- name: "dev-map 结构参考"
|
|
218
|
+
source: "dev_map"
|
|
219
|
+
required: true
|
|
220
|
+
|
|
221
|
+
outputs:
|
|
222
|
+
- name: "实现代码"
|
|
223
|
+
format: "source code (ts/tsx/js/jsx/java)"
|
|
224
|
+
location: "src/"
|
|
225
|
+
required: true
|
|
226
|
+
- name: "单元测试"
|
|
227
|
+
format: "source code (.test.*)"
|
|
228
|
+
location: "src/"
|
|
229
|
+
required: true
|
|
230
|
+
- name: "Git Commit 历史"
|
|
231
|
+
source: "git_log"
|
|
232
|
+
required: true
|
|
233
|
+
- name: "dev-map 更新"
|
|
234
|
+
format: "markdown"
|
|
235
|
+
location: "dev-map/"
|
|
236
|
+
condition: "有结构性变化时"
|
|
237
|
+
- name: "自检报告"
|
|
238
|
+
format: "markdown"
|
|
239
|
+
required: true
|
|
240
|
+
- name: "PR/MR"
|
|
241
|
+
source: "git_platform"
|
|
242
|
+
required: true
|
|
243
|
+
|
|
244
|
+
internal_steps:
|
|
245
|
+
- step: 1
|
|
246
|
+
action: "阅读设计文档 + dev-map"
|
|
247
|
+
skill: null
|
|
248
|
+
- step: 2
|
|
249
|
+
action: "实现核心逻辑"
|
|
250
|
+
skill: null
|
|
251
|
+
- step: 3
|
|
252
|
+
action: "编写/更新单元测试"
|
|
253
|
+
skill: "test-unit"
|
|
254
|
+
- step: 4
|
|
255
|
+
action: "运行构建 Skill(按技术栈选择)"
|
|
256
|
+
# 条件引用:检测 pom.xml → java-build;检测 package.json → vue-frontend-build
|
|
257
|
+
# 详见 skills/build.md(已废弃,保留为路由参考)
|
|
258
|
+
skill: "java-build | vue-frontend-build"
|
|
259
|
+
gate: "编译失败 → 返回 Step 2"
|
|
260
|
+
- step: 5
|
|
261
|
+
action: "运行 Test Unit Skill"
|
|
262
|
+
skill: "test-unit"
|
|
263
|
+
gate: "测试失败 → 返回 Step 2/3"
|
|
264
|
+
- step: 6
|
|
265
|
+
action: "运行 Lint Check Skill"
|
|
266
|
+
skill: "lint-check"
|
|
267
|
+
gate: "Lint 失败 → 自动修复后重新检查"
|
|
268
|
+
- step: 7
|
|
269
|
+
action: "更新 dev-map"
|
|
270
|
+
skill: "docs-update"
|
|
271
|
+
- step: 8
|
|
272
|
+
action: "规范 Commit + 创建 PR/MR"
|
|
273
|
+
gate: "Commit 格式不符合 → 修正后提交"
|
|
274
|
+
|
|
275
|
+
transitions:
|
|
276
|
+
- to: code-review
|
|
277
|
+
trigger: "PR 创建 + 三步自检全部通过"
|
|
278
|
+
- to: self
|
|
279
|
+
trigger: "自检任一步失败"
|
|
280
|
+
auto_retry: 3
|
|
281
|
+
- to: solution-design
|
|
282
|
+
trigger: "发现设计与实际情况严重不符"
|
|
283
|
+
type: "escalation"
|
|
284
|
+
|
|
285
|
+
rules_referenced:
|
|
286
|
+
- "rules/global/coding-standard.md"
|
|
287
|
+
- "rules/global/security-baseline.md"
|
|
288
|
+
- "rules/global/commit-convention.md"
|
|
289
|
+
- "rules/project/java-backend.md" # Java 后端项目级规范
|
|
290
|
+
- "rules/project/frontend-vue3.md" # Vue3 前端项目级规范
|
|
291
|
+
|
|
292
|
+
- id: code-review
|
|
293
|
+
name: "代码审查"
|
|
294
|
+
order: 5
|
|
295
|
+
agent: code-reviewer
|
|
296
|
+
model_tier: strong
|
|
297
|
+
max_turns: 12
|
|
298
|
+
|
|
299
|
+
inputs:
|
|
300
|
+
- name: "PR/MR Diff"
|
|
301
|
+
source: "git_diff"
|
|
302
|
+
required: true
|
|
303
|
+
- name: "技术设计文档"
|
|
304
|
+
from: "solution_design"
|
|
305
|
+
required: true
|
|
306
|
+
- name: "自检报告"
|
|
307
|
+
from: "development"
|
|
308
|
+
required: true
|
|
309
|
+
- name: "Gate 快速扫描"
|
|
310
|
+
source: "gate_scripts"
|
|
311
|
+
required: false
|
|
312
|
+
- name: "Code Review Checklist"
|
|
313
|
+
source: "skills/code-review.md"
|
|
314
|
+
required: true
|
|
315
|
+
|
|
316
|
+
outputs:
|
|
317
|
+
- name: "审查报告"
|
|
318
|
+
format: "markdown"
|
|
319
|
+
required: true
|
|
320
|
+
- name: "裁决决定"
|
|
321
|
+
format: "enum { PASS | CONDITIONAL_PASS | FAIL }"
|
|
322
|
+
required: true
|
|
323
|
+
|
|
324
|
+
decisions:
|
|
325
|
+
- outcome: PASS
|
|
326
|
+
to: testing
|
|
327
|
+
condition: "总分 ≥ 90% 且无安全问题和必修问题"
|
|
328
|
+
- outcome: CONDITIONAL_PASS
|
|
329
|
+
to: testing
|
|
330
|
+
condition: "总分 ≥ 80% 且必修问题已在 PR 中标记并确认会修"
|
|
331
|
+
- outcome: FAIL
|
|
332
|
+
to: development
|
|
333
|
+
condition: "安全红线 / A<60% / 无测试 / 覆盖率回归>5%"
|
|
334
|
+
require_fix: true
|
|
335
|
+
- outcome: ESCALATE
|
|
336
|
+
to: gate-evaluation
|
|
337
|
+
condition: "发现架构级安全问题"
|
|
338
|
+
type: "security_escalation"
|
|
339
|
+
|
|
340
|
+
review_dimensions:
|
|
341
|
+
- id: quality
|
|
342
|
+
name: "代码质量"
|
|
343
|
+
weight: 30
|
|
344
|
+
checks: ["A1-A6"]
|
|
345
|
+
- id: compliance
|
|
346
|
+
name: "规范遵循"
|
|
347
|
+
weight: 15
|
|
348
|
+
checks: ["B1-B5"]
|
|
349
|
+
- id: security
|
|
350
|
+
name: "安全与风险"
|
|
351
|
+
weight: 25
|
|
352
|
+
checks: ["C1-C5"]
|
|
353
|
+
- id: performance
|
|
354
|
+
name: "性能考量"
|
|
355
|
+
weight: 10
|
|
356
|
+
checks: ["D1-D4"]
|
|
357
|
+
- id: testing
|
|
358
|
+
name: "测试覆盖"
|
|
359
|
+
weight: 20
|
|
360
|
+
checks: ["E1-E3"]
|
|
361
|
+
|
|
362
|
+
- id: testing
|
|
363
|
+
name: "测试验证"
|
|
364
|
+
order: 6
|
|
365
|
+
agent: tester
|
|
366
|
+
model_tier: strong
|
|
367
|
+
max_turns: 15
|
|
368
|
+
|
|
369
|
+
inputs:
|
|
370
|
+
- name: "需求文档"
|
|
371
|
+
from: "requirements_analysis"
|
|
372
|
+
required: true
|
|
373
|
+
- name: "技术设计文档"
|
|
374
|
+
from: "solution_design"
|
|
375
|
+
required: true
|
|
376
|
+
- name: "实现代码"
|
|
377
|
+
from: "development"
|
|
378
|
+
required: true
|
|
379
|
+
- name: "验收标准"
|
|
380
|
+
from: "requirements_analysis"
|
|
381
|
+
required: true
|
|
382
|
+
- name: "审查报告"
|
|
383
|
+
from: "code_review"
|
|
384
|
+
required: true
|
|
385
|
+
- name: "Skill 测试动作集"
|
|
386
|
+
source: "skills/test-*.md"
|
|
387
|
+
required: true
|
|
388
|
+
|
|
389
|
+
outputs:
|
|
390
|
+
- name: "测试计划"
|
|
391
|
+
format: "markdown"
|
|
392
|
+
required: true
|
|
393
|
+
- name: "测试报告"
|
|
394
|
+
format: "markdown"
|
|
395
|
+
required: true
|
|
396
|
+
- name: "缺陷列表"
|
|
397
|
+
format: "markdown"
|
|
398
|
+
required: true
|
|
399
|
+
- name: "回归风险评估"
|
|
400
|
+
format: "markdown"
|
|
401
|
+
required: true
|
|
402
|
+
- name: "Gate 验证结果"
|
|
403
|
+
format: "json"
|
|
404
|
+
required: true
|
|
405
|
+
|
|
406
|
+
test_types:
|
|
407
|
+
- name: "unit_tests"
|
|
408
|
+
skill: "test-unit"
|
|
409
|
+
executor: "ci_pipeline"
|
|
410
|
+
required: true
|
|
411
|
+
# 前端: Vitest/Jest + coverage ≥80% | 后端: JUnit5/Mockito + JaCoCo ≥80%
|
|
412
|
+
threshold: "coverage >= baseline (前端 Vitest / 后端 JaCoCo)"
|
|
413
|
+
- name: "api_integration"
|
|
414
|
+
skill: "test-api"
|
|
415
|
+
executor: "tester_agent"
|
|
416
|
+
required: true
|
|
417
|
+
# 前端: Pactum | 后端: REST Assured (MockMvc) / Newman
|
|
418
|
+
threshold: "no breaking changes (前端 Pactum / 后端 REST Assured)"
|
|
419
|
+
- name: "e2e_critical_path"
|
|
420
|
+
skill: "test-e2e"
|
|
421
|
+
executor: "tester_agent"
|
|
422
|
+
required: true
|
|
423
|
+
threshold: "all critical paths pass"
|
|
424
|
+
- name: "security_scan"
|
|
425
|
+
skill: "lint-check"
|
|
426
|
+
executor: "gate_scripts"
|
|
427
|
+
required: true
|
|
428
|
+
threshold: "no HIGH/CRITICAL vulnerabilities"
|
|
429
|
+
- name: "performance_test"
|
|
430
|
+
executor: "tester_agent"
|
|
431
|
+
required: false
|
|
432
|
+
condition: "涉及性能 NFR 时"
|
|
433
|
+
- name: "regression_test"
|
|
434
|
+
executor: "tester_agent"
|
|
435
|
+
required: true
|
|
436
|
+
threshold: "no P0/P1 regressions"
|
|
437
|
+
|
|
438
|
+
decisions:
|
|
439
|
+
- outcome: PASS
|
|
440
|
+
to: delivery
|
|
441
|
+
condition: "P0=P1=0 + 核心 E2E 通过 + 无回归 + 覆盖率达标"
|
|
442
|
+
- output: FIX_AND_RETEST
|
|
443
|
+
to: development
|
|
444
|
+
condition: "发现 P1/P2 缺陷"
|
|
445
|
+
with_defects: true
|
|
446
|
+
- output: DESIGN_ISSUE
|
|
447
|
+
to: solution-design
|
|
448
|
+
condition: "设计缺陷导致功能无法验收"
|
|
449
|
+
type: "upstream_request"
|
|
450
|
+
- output: SECURITY_BLOCK
|
|
451
|
+
to: gate-evaluation
|
|
452
|
+
condition: "发现安全漏洞"
|
|
453
|
+
type: "security_escalation"
|
|
454
|
+
|
|
455
|
+
- id: delivery
|
|
456
|
+
name: "交付归档"
|
|
457
|
+
order: 7
|
|
458
|
+
agent: project-manager
|
|
459
|
+
model_tier: lite
|
|
460
|
+
max_turns: 5
|
|
461
|
+
|
|
462
|
+
inputs:
|
|
463
|
+
- name: "所有阶段产物"
|
|
464
|
+
from: "all_stages"
|
|
465
|
+
- name: "测试报告"
|
|
466
|
+
from: "testing"
|
|
467
|
+
required: true
|
|
468
|
+
- name: "Gate 完整验证结果"
|
|
469
|
+
from: "gate_scripts"
|
|
470
|
+
required: true
|
|
471
|
+
|
|
472
|
+
outputs:
|
|
473
|
+
- name: "交付摘要"
|
|
474
|
+
format: "markdown"
|
|
475
|
+
required: true
|
|
476
|
+
- name: "TaskBoard 归档更新"
|
|
477
|
+
source: "task-board"
|
|
478
|
+
required: true
|
|
479
|
+
- name: "度量数据记录"
|
|
480
|
+
source: "metrics_store"
|
|
481
|
+
required: true
|
|
482
|
+
|
|
483
|
+
actions:
|
|
484
|
+
- "汇总全链路交付物"
|
|
485
|
+
- "更新 TaskBoard 为已完成"
|
|
486
|
+
- "记录度量指标(周期时间、各阶段耗时、打回次数等)"
|
|
487
|
+
- "通知相关利益方"
|
|
488
|
+
- "归档所有阶段文档到交付目录"
|
|
489
|
+
|
|
490
|
+
transitions:
|
|
491
|
+
- to: completed
|
|
492
|
+
trigger: "所有归档完成"
|
|
493
|
+
|
|
494
|
+
# === 回退规则全局声明 ===
|
|
495
|
+
rollback_policy:
|
|
496
|
+
max_rollbacks_per_stage: 3 # 每阶段最大回退次数
|
|
497
|
+
total_max_rollbacks: 10 # 整个流程最大总回退次数
|
|
498
|
+
escalation_threshold: 2 # 同一阶段连续回退 N 次触发人工介入
|
|
499
|
+
|
|
500
|
+
# === 全局规则引用 ===
|
|
501
|
+
global_rules:
|
|
502
|
+
- "rules/global/process-discipline.md"
|
|
503
|
+
- "rules/global/coding-standard.md"
|
|
504
|
+
- "rules/global/security-baseline.md"
|