feat: 增加最小工单依赖规则 (#8)

This commit is contained in:
QiuSW
2026-08-10 00:30:31 +08:00
parent d1136c2bc5
commit a59e3b5374
6 changed files with 58 additions and 10 deletions
+6
View File
@@ -5,6 +5,12 @@
- 所属 MVP / 版本:#
- 阶段:
## 依赖与并行
- 前置工单:无 / #编号
- 是否允许与前置工单并行:是 / 否
- 原因:
## 要解决什么
<!-- 描述现状和目标。缺陷需要写清复现步骤、实际结果和期望结果。 -->
+5 -4
View File
@@ -33,10 +33,11 @@
2. 给出目标、非目标、方案、影响范围、风险、回退方式、验证方法和文档影响。
3. 方案没有得到用户明确确认前,只做只读诊断和方案整理,不实施正式代码。
4. 方案确认后,先建立单元任务工单,再修改代码。
5. 开始实施前检查分支和工作区,明确哪些现有改动不属于本任务。
6. 严格按工单范围实现;新发现的问题先记录,不顺手混入当前任务。
7. 执行与风险相称的测试,把关键结果和未验证部分更新到工单。
8. 长期文档必须先修改 Wiki、读取确认,再运行 `python dev_scripts/sync_wiki_docs.py` 导出本地镜像;不得直接编辑 `docs/` 后反向覆盖 Wiki。
5. 建立新工单不要求其他工单已经完成;开始实施前检查工单声明的前置工单。真实依赖未满足时保持“待实施”,允许并行时必须写明原因。
6. 开始实施前检查分支和工作区,明确哪些现有改动不属于本任务。
7. 严格按工单范围实现;新发现的问题先记录,不顺手混入当前任务。
8. 执行与风险相称的测试,把关键结果和未验证部分更新到工单。实施过程中出现计划外、当前无法解除的问题时才标记“阻塞”。
9. 长期文档必须先修改 Wiki、读取确认,再运行 `python dev_scripts/sync_wiki_docs.py` 导出本地镜像;不得直接编辑 `docs/` 后反向覆盖 Wiki。
Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明确授权,不得默认绕过建单。
+4
View File
@@ -161,6 +161,10 @@ def check_task_template(errors: list[str], root: Path = ROOT) -> None:
return
content = path.read_text(encoding="utf-8")
required = (
"## 依赖与并行",
"- 前置工单:无 / #编号",
"- 是否允许与前置工单并行:是 / 否",
"- 原因:",
"## 文档影响",
"- [ ] 不影响长期文档,原因:",
"- [ ] 更新架构与代码地图",
+19 -2
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Development-Workflow
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Development-Workflow.-
wiki_revision: d00ceed847becc95439296f618bd8a461c0a4c0f
synchronized_at: 2026-08-08T01:36:38Z
wiki_revision: dcef8c85c6c99d4ff2ce4678736092479b505794
synchronized_at: 2026-08-09T16:28:05Z
<!-- gitea-wiki-mirror:end -->
# 开发工作流
@@ -37,6 +37,23 @@ synchronized_at: 2026-08-08T01:36:38Z
每个单元任务都应目标单一,能够独立测试、提交和回退。
#### 依赖与并行
建立新工单不要求其他工单已经完成,也不按工单编号限制实施顺序。每个单元任务必须声明:
- 前置工单,没有时填写“无”;
- 是否允许与未完成的前置工单并行;
- 判断可以或不可以并行的原因。
开始修改前,Agent 检查工单声明的前置工单:
- 没有前置工单,或前置工单已经完成,可以进入“进行中”;
- 前置工单未完成且存在实际依赖时,不得开始实施,工单保持“待实施”;
- 与前置工单没有实施冲突、允许并行时,可以进入“进行中”,但必须在工单写明原因;
- 已经进入实施后出现计划外、当前无法解除的问题,才使用“阻塞”。
依赖不改变单元任务边界。依赖满足后,该任务仍须拥有独立的范围、提交、测试和回退方式。
### 3. 实施
Agent 检查分支和工作区,只修改工单范围内的文件。发现新问题时先记录到工单;如果不影响当前验收,则另建工单,不扩大当前任务。
+6 -4
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Business-Rules-and-Glossary
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Business-Rules-and-Glossary.-
wiki_revision: 7534fd60157096dab2c6f06214acfff84d1a5370
synchronized_at: 2026-08-08T00:58:06Z
wiki_revision: 82bb04c1bf6a703568218664a652b5192055f072
synchronized_at: 2026-08-09T16:28:11Z
<!-- gitea-wiki-mirror:end -->
# 业务规则与术语
@@ -30,9 +30,9 @@ synchronized_at: 2026-08-08T00:58:06Z
| 状态 | 含义 | 可以进入下一状态的条件 |
|---|---|---|
| 待确认 | 目标或方案仍需用户选择 | 用户明确确认方案 |
| 待实施 | 方案已确认,尚未修改 | 工作区和范围检查完成 |
| 待实施 | 方案已确认但尚未修改,或真实前置依赖尚未满足 | 前置依赖已满足或明确允许并行,且工作区和范围检查完成 |
| 进行中 | 正在实现、测试或同步文档 | 验收标准逐项检查完成 |
| 阻塞 | 满足规则定义的持续阻塞条件 | 阻塞解除并更新工单 |
| 阻塞 | 实施过程中出现计划外、当前无法解除的问题 | 阻塞解除并更新工单 |
| 待验收 | 代码、测试、归档和证据已完成 | 用户明确验收 |
| 已完成 | 用户已验收并完成父任务同步 | 无 |
@@ -40,6 +40,8 @@ synchronized_at: 2026-08-08T00:58:06Z
- 没有确认方案和单元任务工单,不修改产品行为。
- 一个单元任务只解决一个可独立验证和回退的问题。
- 建立后续工单不要求已有工单全部完成;实施前必须检查工单声明的前置依赖。
- 前置工单未完成且存在实际依赖时保持“待实施”;允许并行时必须写明原因。
- 需求、接口、数据、安全边界或验收标准变化时先更新工单。
- 长期文档必须先修改 Wiki,再导出本地镜像。
- 测试结果必须真实;未执行的验证必须明确记录。
+18
View File
@@ -57,6 +57,24 @@ class TaskTemplateTests(unittest.TestCase):
check_task_template(errors)
self.assertEqual(errors, [])
def test_task_template_requires_dependency_fields(self) -> None:
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
template = root / ".gitea" / "issue_template" / "task.md"
template.parent.mkdir(parents=True)
template.write_text(
"## 文档影响\n"
"- [ ] 不影响长期文档,原因:\n"
"- [ ] 更新架构与代码地图\n"
"- [ ] 更新业务规则与术语\n"
"- [ ] 更新常见修改或故障排查\n",
encoding="utf-8",
)
errors: list[str] = []
check_task_template(errors, root)
self.assertIn("单元任务模板缺少:## 依赖与并行", errors)
self.assertIn("单元任务模板缺少:- 前置工单:无 / #编号", errors)
class AgentRuleTests(unittest.TestCase):
def test_agent_efficiency_sections_are_required(self) -> None: