chore: 简化单人开发工作流 (#48)
This commit is contained in:
@@ -98,6 +98,16 @@
|
||||
|
||||
<!-- 写出可复制的命令;需要真机、生产环境或人工检查时明确说明。 -->
|
||||
|
||||
## 完成证据
|
||||
|
||||
<!-- 待验收时集中填写;单次任务结果以本工单为事实来源,不要求另建 Wiki 任务归档。 -->
|
||||
|
||||
- 最终差异:
|
||||
- 测试结果:
|
||||
- 未验证部分:
|
||||
- 提交哈希:
|
||||
- 长期 Wiki 页面与 revision(无长期文档影响时填“无”):
|
||||
|
||||
## 风险和回退
|
||||
|
||||
<!-- 普通低风险任务可删除本节;涉及接口、迁移、安全或不可逆操作时必填。 -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Agent 开发规则
|
||||
|
||||
本仓库采用 DevHarness 工作流:Gitea 工单是任务过程的事实来源,Gitea Wiki 是长期开发文档和任务归档的事实来源,Git 是代码与版本绑定资料的变更记录。`docs/` 默认保存核心 Wiki 的只读镜像,`docs/task/` 只保存人工按需导出的任务归档快照。人负责确认方案与验收,Agent 负责检查、实现、测试和留下证据。
|
||||
本仓库采用 DevHarness 工作流:Gitea 工单是单次任务需求、过程、实现、测试和验收的事实来源,Gitea Wiki 只保存长期开发文档,Git 是代码与版本绑定资料的变更记录。`docs/` 默认保存核心 Wiki 的只读镜像,`docs/task/` 只保留历史兼容或人工明确要求的任务快照。人负责确认方案与验收,Agent 负责检查、实现、测试和留下证据。
|
||||
|
||||
开始工作前先阅读任务涉及目录中的 `AGENTS.md`。目录越深的规则越具体,但不得削弱上级安全规则。
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
| 运行单元测试 | `python -m unittest discover -s tests -v` |
|
||||
| 导出核心 Wiki 镜像 | `python dev_scripts/harness.py sync` |
|
||||
| 检查核心 Wiki 镜像 | `python dev_scripts/harness.py sync --check` |
|
||||
| 创建任务归档 | `python dev_scripts/harness.py archive 123 "修复登录超时"` |
|
||||
| 增量导出任务归档 | `python dev_scripts/harness.py export` |
|
||||
| 全量导出任务归档 | `python dev_scripts/harness.py export --all` |
|
||||
| 创建历史任务快照(按需) | `python dev_scripts/harness.py archive 123 "修复登录超时"` |
|
||||
| 增量导出历史快照(按需) | `python dev_scripts/harness.py export` |
|
||||
| 全量导出历史快照(按需) | `python dev_scripts/harness.py export --all` |
|
||||
|
||||
## 1. 永久规则
|
||||
|
||||
@@ -33,17 +33,19 @@
|
||||
|
||||
## 2. 哪些改动需要工单
|
||||
|
||||
新功能、缺陷修复、重构以及任何用户可感知或改变程序行为的修改,必须先建立单元任务工单。
|
||||
以下改动必须先建立单元任务工单:新功能、数据库迁移、API 或运行时配置契约、权限与安全、并发与删除、发布与不可逆操作、跨模块行为、重构、重大 UI/交互/导航,以及无法确定风险或行为影响的修改。
|
||||
|
||||
以下小改动可以直接提交,不要求工单和任务归档:
|
||||
以下修改同时满足范围明确、容易回退且不涉及上述必须建单项时,可以直接提交:
|
||||
|
||||
- 只改错别字、注释或文档措辞;
|
||||
- 只做格式化、导入排序或不跨文件的内部变量改名;
|
||||
- 补充类型标注或文档字符串且不改变行为;
|
||||
- 删除已经确认无人使用的死代码。
|
||||
- 删除已经确认无人使用的死代码;
|
||||
- 只修改测试且不改变产品行为;
|
||||
- 单文件低风险缺陷,只恢复已有明确行为,且不改变接口、数据库、状态、权限、安全、并发、流程、布局或可访问性;
|
||||
- 只修改用户看到的界面显示文案,并且满足本文件“工单与设计证据双门禁”的全部豁免条件。
|
||||
|
||||
除严格符合界面显示文案豁免的修改外,只要涉及接口、数据库、状态、权限、安全、并发、用户界面,或者无法确定是否改变行为,就必须建工单。代码组件名、类名、变量、国际化键、API 字段和数据库字段不是显示文案,不适用豁免。
|
||||
直接提交仍须保留无关工作区改动、执行受影响的最小验证并写清提交说明。有任何不确定就建单。代码组件名、类名、变量、国际化键、API 字段和数据库字段不是显示文案,不适用文案豁免。
|
||||
|
||||
## 3. 需求到实施
|
||||
|
||||
@@ -54,8 +56,8 @@
|
||||
5. 建立新工单不要求其他工单已经完成;开始实施前检查工单声明的前置工单。真实依赖未满足时保持“待实施”,允许并行时必须写明原因。
|
||||
6. 开始实施前检查分支和工作区,明确哪些现有改动不属于本任务。
|
||||
7. 严格按工单范围实现;新发现的问题先记录,不顺手混入当前任务。
|
||||
8. 执行与风险相称的测试,把关键结果和未验证部分更新到工单。实施过程中出现计划外、当前无法解除的问题时才标记“阻塞”。
|
||||
9. 长期核心文档必须先修改 Wiki、读取确认,再运行 `python dev_scripts/harness.py sync` 导出本地镜像;任务归档默认只更新 Wiki,不自动导出本地。不得直接编辑镜像后反向覆盖 Wiki。
|
||||
8. 执行与风险相称的测试。开始实施时更新一次工单;只有方案、范围、根因、风险或阻塞发生重要变化时追加记录;完成后集中回写最终差异、测试、未验证项和提交证据。
|
||||
9. 只有长期事实变化时才更新核心文档:先修改 Wiki、读取确认,再运行一次 `sync` 和一次 `sync --check`。无长期文档影响时不运行 Wiki 同步,不得直接编辑镜像后反向覆盖 Wiki。
|
||||
|
||||
Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明确授权,不得默认绕过建单。
|
||||
|
||||
@@ -86,16 +88,16 @@ Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明
|
||||
|
||||
- `只分析`:只读检查并给出方案;不建单、不修改,停在等待确认。
|
||||
- `建工单`:根据已确认方案创建单元任务工单;建单后停止,不修改代码。
|
||||
- `执行工单 #N`:检查工单和依赖,实施、测试、提交、归档、推送并回写证据;停在“待验收”。
|
||||
- `执行工单 #N`:检查工单和依赖,实施、测试、提交、推送并集中回写证据;仅在长期文档变化时同步 Wiki;停在“待验收”。
|
||||
- `建工单并做`:依次建单和执行,`建工单,做`、`建工单,做` 含义相同;停在“待验收”。
|
||||
- `继续工单 #N`:核对工单、Git 和 Wiki 证据,从首个未完成步骤继续,不重复仍然有效的检查。
|
||||
- `检查工单 #N`:只读核对范围、验收、测试和证据并输出报告;不自动修复。
|
||||
- `同步文档`:读取 Wiki、导出核心 `docs/` 并检查一致性,不处理任务归档;不修改 Wiki、不自动提交。
|
||||
- `导出任务归档`:人工触发 `python dev_scripts/harness.py export`,只导出新增或 revision 已变化的任务归档;不删除本地文件、不自动提交。
|
||||
- `导出全部任务归档`:人工触发 `python dev_scripts/harness.py export --all`,读取并导出全部线上任务归档;不删除本地文件、不自动提交。
|
||||
- `#N 验收通过`:仅在用户明确验收后,更新 Wiki 归档、同步必要的核心文档、推送、同步父工单并关闭任务;不自动导出任务归档。
|
||||
- `导出任务归档`:历史兼容指令;用户明确要求时运行 `python dev_scripts/harness.py export`,只导出新增或 revision 已变化的 Wiki 任务快照;不删除本地文件、不自动提交。
|
||||
- `导出全部任务归档`:历史兼容指令;用户明确要求时运行 `python dev_scripts/harness.py export --all`,读取并导出全部线上任务快照;不删除本地文件、不自动提交。
|
||||
- `#N 验收通过`:仅在用户明确验收后,在工单记录验收结论,按需推送尚未推送的提交、同步父工单并关闭任务;不创建任务归档,不重复同步无变化的 Wiki。
|
||||
|
||||
方案未确认或前置依赖未满足时,实施类指令必须停在对应门禁;除 `#N 验收通过` 外,快捷指令不得关闭待验收工单。任务归档导出必须由用户明确提出,其他指令不得隐式执行。Gitea 工单不导出全文,`docs/task/` 只是可能不完整的 Wiki 任务归档快照。详细语义见 [开发工作流](docs/01-workflow.md)。
|
||||
方案未确认或前置依赖未满足时,实施类指令必须停在对应门禁;除 `#N 验收通过` 外,快捷指令不得关闭待验收工单。历史任务快照的创建和导出必须由用户明确提出,其他指令不得隐式执行。Gitea 工单不导出全文,`docs/task/` 只是可能不完整的历史快照。详细语义见 [开发工作流](docs/01-workflow.md)。
|
||||
|
||||
### 需求记录与流转
|
||||
|
||||
@@ -103,13 +105,13 @@ Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明
|
||||
- 工单中的目标、非目标、已确认方案、验收标准和文档影响构成确认后的正式任务需求。
|
||||
- 影响范围、接口、数据、风险或验收的需求变化必须记录日期、内容、原因和用户确认;会改变已确认结果时先更新工单并等待再次确认。
|
||||
- 不复制完整聊天,不保存 Agent 内部推理,不写入密码、令牌、个人数据或生产数据;包含敏感信息的原话必须删除敏感部分或改写为脱敏摘要。
|
||||
- 长期有效的产品需求、业务规则和系统边界进入对应 Wiki 主题页并导出核心 `docs/`;完成结果进入 Wiki 任务归档,仅在用户明确要求时导出 `docs/task/`。Gitea 工单全文不导出到仓库。
|
||||
- 长期有效的产品需求、业务规则和系统边界进入对应 Wiki 主题页并导出核心 `docs/`;完成结果、测试、提交和验收留在 Gitea 工单。`docs/task/` 只在用户明确要求历史快照时使用,Gitea 工单全文不导出到仓库。
|
||||
|
||||
详细记录边界见 [开发工作流](docs/01-workflow.md) 与 [业务规则和术语](docs/03-business-rules-and-glossary.md)。
|
||||
|
||||
### 效率与范围控制
|
||||
|
||||
本节只用于减少无关工作和重复检查,不得削弱安全规则、已确认方案、工单范围、必要测试、Wiki 同步、Git 提交和验收归档要求。
|
||||
本节只用于减少无关工作和重复检查,不得削弱安全规则、已确认方案、工单范围、必要测试、按需 Wiki 同步、Git 提交和人工验收要求。
|
||||
|
||||
#### 严格控制范围
|
||||
|
||||
@@ -161,19 +163,19 @@ Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明
|
||||
- 实现提交信息引用工单号,例如:`fix: 修复登录超时 (#123)`。
|
||||
- 不为流程制造空提交。
|
||||
- 优先运行项目档案中记录的格式检查、静态检查、单元测试和必要的集成测试。
|
||||
- 不能验证的真机、生产、迁移或并发行为必须写入工单和归档。
|
||||
- 不能验证的真机、生产、迁移或并发行为必须写入工单。
|
||||
|
||||
## 7. 完成、验收和归档
|
||||
## 7. 完成、验收和关闭
|
||||
|
||||
1. 逐项完成验收、测试和实现提交,并把最终方案、差异、结果、提交及遗留问题写回工单。
|
||||
2. 工单保持“待验收”,用户没有明确验收通过前不得关闭。
|
||||
3. 运行 `python dev_scripts/harness.py archive <编号> "<短标题>"`,只创建 Wiki 任务归档,不登记或导出本地镜像。
|
||||
4. 读取确认 Wiki,运行 `python dev_scripts/harness.py sync --check` 检查核心镜像,并把任务归档页面、revision 和提交哈希写回工单。只有用户明确提出时才增量或全量导出任务归档。
|
||||
5. 用户验收通过后关闭单元工单,并同步更新 MVP 和 Epic。
|
||||
3. 只有长期文档发生变化时,读取确认 Wiki,运行一次 `sync` 和一次 `sync --check`,并把页面 revision 写回工单;无长期文档影响时跳过。
|
||||
4. 用户验收通过后,在工单记录验收结论,关闭单元工单,并同步更新 MVP 和 Epic;不重复抄写已有证据或同步无变化的 Wiki。
|
||||
5. `archive`、`export` 和 `export --all` 仅作为历史兼容能力,在用户明确要求专项快照时使用,不属于标准完成流程。
|
||||
|
||||
MVP 内所有单元任务通过后才能做 MVP 集成验收;MVP 通过后才能关闭 MVP。Epic 的全部范围完成后才能关闭 Epic。
|
||||
|
||||
详细归档顺序和字段见 [开发工作流](docs/01-workflow.md)。
|
||||
详细完成顺序和证据边界见 [开发工作流](docs/01-workflow.md)。
|
||||
|
||||
## 8. 可维护性
|
||||
|
||||
@@ -196,7 +198,7 @@ MVP 内所有单元任务通过后才能做 MVP 集成验收;MVP 通过后才
|
||||
- 启动、测试、部署、排错命令,模块入口、目录职责、主要调用路径,配置、API、数据结构、状态、业务规则、安全边界、日志位置发生变化时,必须更新对应 Wiki。
|
||||
- 部署命令变化时,有常驻服务的项目更新自己的 `Deployment-and-Operations` 页面(由 [部署文档模板](docs/templates/deployment.md) 复制建立);没有常驻服务的项目记录为无部署文档影响,不创建空的部署页。
|
||||
- 普通内部重构只有在入口、行为、配置和验证方式均未改变时,才可以记录为不影响长期文档。
|
||||
- 必需核心页面及结构以 `python dev_scripts/harness.py check --strict` 和 [新项目文档初始化](docs/07-new-project-documentation-setup.md) 为准;稳定文档与任务归档的分工见 [开发工作流](docs/01-workflow.md)。
|
||||
- 必需核心页面及结构以 `python dev_scripts/harness.py check --strict` 和 [新项目文档初始化](docs/07-new-project-documentation-setup.md) 为准;稳定文档、工单和历史快照的分工见 [开发工作流](docs/01-workflow.md)。
|
||||
|
||||
## 9. 引导提交例外
|
||||
|
||||
@@ -210,7 +212,7 @@ MVP 内所有单元任务通过后才能做 MVP 集成验收;MVP 通过后才
|
||||
|
||||
- 长期开发文档以 Gitea Wiki 为事实来源,`docs/` 默认保存显式映射生成的核心只读镜像;`docs/task/` 是人工按需快照,可能不完整或不是最新状态。
|
||||
- 核心 Wiki 与镜像的固定顺序是:修改 Wiki → 读取确认 → 导出核心 `docs` → 校验差异 → 提交镜像。
|
||||
- 任务归档默认只保存在 Wiki;`导出任务归档` 或 `导出全部任务归档` 必须由用户明确提出,且不得自动传播删除或重命名。
|
||||
- 新任务默认不创建 Wiki 任务归档;既有归档与 `docs/task/` 作为历史兼容内容保留。创建或导出任务快照必须由用户明确提出,且不得自动传播删除或重命名。
|
||||
- 同步配置只允许写入 `docs/` 下的 Markdown;发现镜像有未提交修改时必须停止。
|
||||
- Gitea 凭据只通过进程环境或 MCP 安全配置提供,不得写入仓库。
|
||||
- `dev_scripts/` 只存放 DevHarness 自身工具;业务项目的通用脚本必须使用独立目录,不得混放。
|
||||
|
||||
@@ -28,7 +28,7 @@ MVP-0 的范围、非目标和验收口径见 [产品需求总览](docs/09-produ
|
||||
python dev_scripts/harness.py sync --verify
|
||||
```
|
||||
|
||||
新仓库在 Gitea 尚未建立前允许一次不关联工单的引导提交。远端和工单系统配置完成后,所有改变程序行为的工作都必须先有单元任务工单。
|
||||
新仓库在 Gitea 尚未建立前允许一次不关联工单的引导提交。远端和工单系统配置完成后,新功能、接口/配置契约、数据库、高风险、跨模块和重大 UI 工作必须先有单元任务工单;明确的低风险修改边界见开发工作流。
|
||||
|
||||
## 文档入口
|
||||
|
||||
@@ -42,7 +42,7 @@ MVP-0 的范围、非目标和验收口径见 [产品需求总览](docs/09-produ
|
||||
| 简单修改怎么做、什么时候必须停 | [docs/05-common-changes.md](docs/05-common-changes.md) |
|
||||
| 报错了先查什么 | [docs/06-troubleshooting.md](docs/06-troubleshooting.md) |
|
||||
| 怎样部署、检查、备份和回退 | [docs/10-deployment-and-operations.md](docs/10-deployment-and-operations.md) |
|
||||
| 建单、实施、验收、归档流程 | [docs/01-workflow.md](docs/01-workflow.md) |
|
||||
| 建单、实施、验收、关闭流程 | [docs/01-workflow.md](docs/01-workflow.md) |
|
||||
|
||||
`docs/` 是 Wiki 的只读镜像,不是编辑入口。修改长期文档的顺序见 [项目档案](docs/00-project-profile.md) 的“文档状态”。
|
||||
|
||||
@@ -53,10 +53,10 @@ AGENTS.md Agent 的通用工作规则
|
||||
CLAUDE.md Claude Code 的规则入口
|
||||
.gitea/issue_template/ Epic、MVP、单元任务工单模板
|
||||
docs/ 核心长期文档(Wiki 初始化后转为只读镜像)
|
||||
docs/task/ 人工按需导出的 Wiki 任务归档快照
|
||||
docs/task/ 历史兼容或人工明确要求的 Wiki 任务快照
|
||||
prototypes/ 按工单和版本保存的本地 HTML 审核快照
|
||||
wiki-docs.json 核心 Wiki 页面到本地镜像的显式映射
|
||||
dev_scripts/harness.py check / sync / archive / export 单一入口
|
||||
dev_scripts/harness.py check / sync 入口,兼容 archive / export
|
||||
tests/ Harness 工具自动化测试
|
||||
```
|
||||
|
||||
|
||||
+15
-8
@@ -1,10 +1,10 @@
|
||||
"""DevHarness 单一命令行入口。
|
||||
|
||||
子命令:
|
||||
check 检查必需文件、核心文档和任务归档结构
|
||||
check 检查必需文件、核心文档和已有历史任务快照结构
|
||||
sync 从 Gitea Wiki 单向导出或校验核心 docs 镜像
|
||||
archive 在 Gitea Wiki 创建任务归档
|
||||
export 人工按需把 Wiki 任务归档导出到 docs/task
|
||||
archive 按用户明确要求在 Gitea Wiki 创建历史任务快照
|
||||
export 按用户明确要求把 Wiki 历史任务快照导出到 docs/task
|
||||
|
||||
各子命令的实现逻辑取自原来的 check_harness.py、sync_wiki_docs.py、
|
||||
new_task_archive.py 和 export_task_archives.py,行为未改变。
|
||||
@@ -85,7 +85,7 @@ CORE_DOCUMENT_REQUIREMENTS = {
|
||||
"## 面向初级维护者的修改边界",
|
||||
"## 每个任务的文档影响",
|
||||
"## 需求记录与流转",
|
||||
"## 稳定文档与任务归档",
|
||||
"## 稳定文档与历史任务快照",
|
||||
"## 自然语言快捷指令",
|
||||
"## 效率与范围控制",
|
||||
"### 严格控制范围",
|
||||
@@ -306,6 +306,12 @@ def check_task_template(errors: list[str], root: Path = ROOT) -> None:
|
||||
"- [ ] 更新已有交付文档,受众与页面:",
|
||||
"- [ ] 新增交付文档,受众与页面:",
|
||||
"- [ ] 需要目标岗位或客户代表验证:是 / 否;验证方式:",
|
||||
"## 完成证据",
|
||||
"- 最终差异:",
|
||||
"- 测试结果:",
|
||||
"- 未验证部分:",
|
||||
"- 提交哈希:",
|
||||
"- 长期 Wiki 页面与 revision(无长期文档影响时填“无”):",
|
||||
)
|
||||
for section in missing_sections(content, required):
|
||||
errors.append(f"单元任务模板缺少:{section}")
|
||||
@@ -325,7 +331,7 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
|
||||
"单元任务是唯一正式实施单位",
|
||||
"高风险修改必须停止",
|
||||
"用户没有明确验收通过前不得关闭",
|
||||
"长期核心文档必须先修改 Wiki",
|
||||
"只有长期事实变化时才更新核心文档",
|
||||
"### 新项目 Wiki 初始化门禁",
|
||||
"`Home` 不存在时必须先创建 `Home`",
|
||||
"不得把模板自带的本地 `docs/` 当作新项目 Wiki 已初始化的证据",
|
||||
@@ -350,6 +356,7 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
|
||||
"不得臆造用户原话",
|
||||
"不复制完整聊天",
|
||||
"Gitea 工单全文不导出到仓库",
|
||||
"新任务默认不创建 Wiki 任务归档",
|
||||
)
|
||||
for section in missing_sections(content, required):
|
||||
errors.append(f"AGENTS.md 缺少:{section}")
|
||||
@@ -675,7 +682,7 @@ def run_export(args: argparse.Namespace) -> int:
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="DevHarness 检查、同步与归档工具")
|
||||
parser = argparse.ArgumentParser(description="DevHarness 检查、同步与历史快照兼容工具")
|
||||
sub = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
p_check = sub.add_parser("check", help="检查 DevHarness 项目结构")
|
||||
@@ -698,7 +705,7 @@ def main() -> int:
|
||||
)
|
||||
p_sync.set_defaults(func=run_sync)
|
||||
|
||||
p_archive = sub.add_parser("archive", help="在 Gitea Wiki 创建任务归档")
|
||||
p_archive = sub.add_parser("archive", help="按明确要求在 Gitea Wiki 创建历史任务快照")
|
||||
p_archive.add_argument("issue_number", help="Gitea 工单号,例如 123")
|
||||
p_archive.add_argument("title", help="简短任务标题")
|
||||
p_archive.add_argument(
|
||||
@@ -706,7 +713,7 @@ def main() -> int:
|
||||
)
|
||||
p_archive.set_defaults(func=run_archive)
|
||||
|
||||
p_export = sub.add_parser("export", help="人工按需导出 Gitea Wiki 任务归档")
|
||||
p_export = sub.add_parser("export", help="按明确要求导出 Gitea Wiki 历史任务快照")
|
||||
p_export.add_argument(
|
||||
"--all",
|
||||
action="store_true",
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Project-Profile
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Project-Profile.-
|
||||
wiki_revision: 8d5cdac0cee22efe667718393466c59255c6dd17
|
||||
synchronized_at: 2026-08-24T03:36:48Z
|
||||
wiki_revision: 5392ab80c7789a793ee271c85d2aca875bedc7f2
|
||||
synchronized_at: 2026-08-24T07:59:16Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 项目档案
|
||||
@@ -137,7 +137,7 @@ synchronized_at: 2026-08-24T03:36:48Z
|
||||
| `admin-ui/` | 固定 go-admin-ui 导入代码与定制页 | 运行时依赖 `D:\github\goadmin` |
|
||||
| `migrations/` | 全部生产表结构与配置种子 SQL | 测试数据、AutoMigrate、不可逆一次性修数 |
|
||||
| `docs/` | 核心长期文档的 Wiki 只读镜像 | 人工直接维护的最终事实 |
|
||||
| `docs/task/` | 人工按需导出的任务归档快照 | 讨论过程和默认自动导出 |
|
||||
| `docs/task/` | 历史兼容:仅按用户明确要求导出的 Wiki 任务快照 | 新任务的标准完成证据和默认自动导出 |
|
||||
| `prototypes/` | 按工单/版本保存 HTML 审核快照 | 凭据、个人信息、生产数据 |
|
||||
| `scripts/` | Chorus 本地开发与运行辅助脚本 | DevHarness 工具、凭据和生产数据 |
|
||||
| `dev_scripts/` | DevHarness 工具 | 产品业务脚本 |
|
||||
|
||||
+49
-53
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Development-Workflow
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Development-Workflow.-
|
||||
wiki_revision: e65f6f00510ab961909d638f7271a2de64f8bf38
|
||||
synchronized_at: 2026-08-20T03:29:22Z
|
||||
wiki_revision: 2226a80884a2363522cf856a0edafe42f74df8a3
|
||||
synchronized_at: 2026-08-24T07:59:22Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 开发工作流
|
||||
@@ -11,7 +11,7 @@ synchronized_at: 2026-08-20T03:29:22Z
|
||||
## 事实来源边界
|
||||
|
||||
- Gitea 工单记录任务状态、讨论、阻塞、方案变化、验证和验收。
|
||||
- Gitea Wiki 保存架构说明、开发规范、操作手册和完成后的任务归档。
|
||||
- Gitea Wiki 只保存长期有效的架构说明、开发规范和操作手册;单次任务结果留在 Gitea 工单。
|
||||
- Git 保存源码、与特定代码版本强绑定的文档,以及 Wiki 的本地镜像。
|
||||
- 本地 `docs/` 仅供浏览和审查,不是长期文档编辑入口。
|
||||
|
||||
@@ -33,16 +33,29 @@ Gitea 暂时不可用时可以准备工单和 Wiki 草稿,但不得把本地
|
||||
|
||||
### 先判断是否需要工单
|
||||
|
||||
只有纯界面显示文案同时满足以下全部条件时,才可以免工单、免原型:
|
||||
以下改动必须建立单元任务工单:
|
||||
|
||||
- 新功能、数据库迁移、API 或运行时配置契约变化;
|
||||
- 权限、安全、凭据、并发、数据删除、发布或其他高风险操作;
|
||||
- 跨模块行为变化、重构、重大 UI、交互或导航变化;
|
||||
- 无法确定影响范围、风险或是否改变既有行为的修改。
|
||||
|
||||
以下修改同时满足“范围明确、容易回退、不涉及上述必须建单项”时可以直接提交:
|
||||
|
||||
- 错别字、注释、文档措辞、格式化、导入排序、单文件内部变量改名;
|
||||
- 不改变产品行为的类型标注、文档字符串、测试或已确认死代码清理;
|
||||
- 单文件低风险缺陷,且只是恢复已有明确行为,不改变接口、数据库、状态、权限、安全、并发、流程、布局或可访问性;
|
||||
- 纯界面显示文案,并满足本页的全部文案豁免条件。
|
||||
|
||||
直接提交仍要保留无关工作区改动、执行受影响的最小验证并写清提交说明。有任何不确定就建单。
|
||||
|
||||
纯界面显示文案豁免还必须同时满足:
|
||||
|
||||
- 只修改用户看到的组件显示名称、按钮文字、标题、提示语或其他文案;
|
||||
- 不改变业务含义、操作流程、权限、状态、接口、数据和验收结果;
|
||||
- 不涉及法律条款、安全提示、支付、金额、单位或其他高风险含义;
|
||||
- 不修改国际化键、代码组件名、类名、变量、API 字段、数据库字段或其他程序标识符;
|
||||
- 不造成明显布局、截断、换行、可访问性或支持平台问题;
|
||||
- 有任何不确定时不使用豁免。
|
||||
|
||||
豁免修改只执行与受影响界面相称的最小检查,确认文字正确且没有明显布局或可访问性问题,然后停止。只要任一条件不满足,或涉及用户行为、样式布局、交互和导航,就建立单元任务工单。
|
||||
- 不造成明显布局、截断、换行、可访问性或支持平台问题。
|
||||
|
||||
### 再判断设计证据
|
||||
|
||||
@@ -124,57 +137,40 @@ Gitea 暂时不可用时可以准备工单和 Wiki 草稿,但不得把本地
|
||||
|
||||
Agent 检查分支和工作区,只修改工单范围内的文件。发现新问题时先记录到工单;如果不影响当前验收,则另建工单,不扩大当前任务。
|
||||
|
||||
重要进度及时写回工单:
|
||||
工单以两次集中更新为默认节奏:
|
||||
|
||||
- 已确认的根因;
|
||||
- 方案或范围变化;
|
||||
- 测试结果;
|
||||
- 阻塞和未验证内容;
|
||||
- Git 提交哈希;
|
||||
- 相关 Wiki 页面及 revision。
|
||||
1. 开始实施时将状态改为“进行中”,记录已确认方案、依赖和范围;只有根因、范围、方案、阻塞或风险发生重要变化时追加更新。
|
||||
2. 实现与测试完成后集中写入最终差异、测试结果、未验证内容、提交哈希和长期 Wiki 页面 revision,并改为“待验收”。
|
||||
|
||||
长期核心文档遵循唯一顺序:
|
||||
长期核心文档仅在启动、部署、架构、接口、数据结构、业务规则、安全边界等长期事实变化时更新。需要更新时遵循:
|
||||
|
||||
```text
|
||||
修改 Wiki → 读取确认 → 导出核心 docs → 校验差异 → 提交镜像
|
||||
修改 Wiki → 在线回读 revision → sync 导出 docs → sync --check → 提交镜像
|
||||
```
|
||||
|
||||
任务归档默认只更新 Wiki,不自动导出到 `docs/task/`。不得先编辑本地镜像再反向覆盖 Wiki。
|
||||
无长期文档影响的任务不运行 Wiki 同步。不得先编辑本地镜像再反向覆盖 Wiki。
|
||||
|
||||
### 4. 待验收
|
||||
|
||||
实现和测试完成后,Agent 提交实现代码并将工单更新为“待验收”。用户验收前工单保持开启。
|
||||
|
||||
### 5. 归档和关闭
|
||||
### 5. 验收和关闭
|
||||
|
||||
使用以下命令只在 Wiki 创建任务归档页:
|
||||
用户明确验收通过后,在工单记录验收结论,关闭单元工单,并勾选所属 MVP 和 Epic 的任务索引。验收时不重复抄写已经记录的测试和提交证据,也不再次同步没有变化的 Wiki 页面。
|
||||
|
||||
```powershell
|
||||
python dev_scripts/harness.py archive 123 "修复登录超时"
|
||||
```
|
||||
|
||||
归档内容以 Wiki 页面为事实来源。默认不修改 `wiki-docs.json`,也不写入 `docs/task/`。把 Wiki 页面、revision 和实现提交哈希写回工单;用户明确验收通过后,关闭单元工单并勾选父工单中的任务。
|
||||
|
||||
只有用户明确提出时才导出任务归档:
|
||||
|
||||
```powershell
|
||||
python dev_scripts/harness.py export # 增量:新增或 revision 变化
|
||||
python dev_scripts/harness.py export --all # 全量:读取全部线上任务归档
|
||||
```
|
||||
|
||||
导出不得自动删除本地文件。`docs/task/` 只是人工按需生成的只读快照,可能不是完整或最新的任务历史。
|
||||
历史兼容命令 `archive`、`export` 和 `export --all` 仅在用户明确要求保留专项快照时使用,不属于标准任务完成流程。既有 Wiki 任务归档和 `docs/task/` 快照继续保留,不自动删除、改名或补齐。
|
||||
|
||||
## 文档同步规则
|
||||
|
||||
- 核心页面映射保存在 `wiki-docs.json`;普通同步只处理这些核心长期文档。
|
||||
- 任务归档不逐页登记映射,由按需导出工具根据 `Task-<编号>-<标题>` 动态发现;已有镜像优先按镜像头匹配原页面。
|
||||
- 历史任务归档不逐页登记映射;用户明确要求导出时,由兼容工具根据 `Task-<编号>-<标题>` 动态发现,已有镜像优先按镜像头匹配原页面。
|
||||
- 所有同步和导出只实现 Wiki → `docs/`,不提供反向同步。
|
||||
- 镜像头必须记录页面名、页面地址、revision 和同步时间。
|
||||
- 已跟踪镜像存在未提交改动时,同步必须停止;确认改动来源后再处理。
|
||||
- 核心同步的 `--check` 只检查核心镜像,不要求线上任务归档全部存在于本地。
|
||||
- 只有长期文档发生变化时才运行核心同步;一次 `sync` 后运行一次 `sync --check`,不因归档或验收重复执行。`--check` 不要求历史任务归档全部存在于本地。
|
||||
- 已经导出的任务镜像仍必须具有来源页面、revision 和同步时间,并通过 Harness 格式检查。
|
||||
- 页面删除和重命名不会自动传播,必须先更新工单并人工确认映射变化。
|
||||
- Wiki 更新成功而导出失败时,在工单记录部分完成状态,不得把任务标为完成。
|
||||
- Wiki 更新成功而核心镜像导出失败时,在工单记录部分完成状态,不得把任务标为待验收。
|
||||
- 与具体代码版本强绑定的接口或迁移资料可直接随代码维护,但必须在 Wiki 提供入口或适用版本说明。
|
||||
|
||||
## 面向初级维护者的修改边界
|
||||
@@ -228,20 +224,20 @@ python dev_scripts/harness.py export --all # 全量:读取全部线上任务
|
||||
| 关键原始需求、确认后的单次任务需求 | Gitea 单元任务工单 | 无 |
|
||||
| 讨论、决定和需求变化 | Gitea 工单正文或评论 | 无 |
|
||||
| 长期有效的产品需求、业务规则和系统边界 | 对应 Gitea Wiki 主题页 | `docs/` |
|
||||
| 完成后的实现、验证和遗留问题 | Wiki 任务归档 | 人工按需导出的 `docs/task/` 快照(可能不完整) |
|
||||
| 完成后的实现、验证、提交和遗留问题 | Gitea 单元任务工单 | 无 |
|
||||
|
||||
任务产生长期结论时,先更新对应 Wiki 主题页,再导出本地镜像。Gitea 工单全文不导出到仓库,避免形成第二份任务过程记录。
|
||||
|
||||
## 稳定文档与任务归档
|
||||
## 稳定文档与历史任务快照
|
||||
|
||||
- Home、项目档案、代码地图、业务规则、开发验证、常见修改和故障排查描述项目现在怎样工作。
|
||||
- 工单和 Wiki 任务归档解释某次为什么修改、实际改了什么以及如何验证;本地任务快照不是完整历史。
|
||||
- 新人先读稳定主题页,只有追查历史原因时才读任务归档。
|
||||
- 任务产生的长期结论必须合并到主题页,不能只留在归档。
|
||||
- Gitea 工单解释某次为什么修改、实际改了什么以及如何验证,是单次任务证据的事实来源。
|
||||
- 既有 Wiki 任务归档与 `docs/task/` 仅是历史或人工专项快照,不要求为新任务创建;新人先读稳定主题页,追查历史时优先读工单。
|
||||
- 任务产生的长期结论必须合并到对应主题页,不能只留在工单。
|
||||
|
||||
## 效率与范围控制
|
||||
|
||||
本节用于减少无关工作和重复检查,不得削弱安全规则、已确认方案、工单范围、必要测试、Wiki 同步、Git 提交和验收归档要求。
|
||||
本节用于减少无关工作和重复检查,不得削弱安全规则、已确认方案、工单范围、必要测试、按需 Wiki 同步、Git 提交和人工验收要求。
|
||||
|
||||
### 严格控制范围
|
||||
|
||||
@@ -268,7 +264,7 @@ python dev_scripts/harness.py export --all # 全量:读取全部线上任务
|
||||
### 明确停止条件
|
||||
|
||||
- 完成用户确认的验收标准和仓库规定的必要闭环后立即停止,不主动继续优化。
|
||||
- “最小验收条件”包括当前工单要求的实现、必要测试、文档影响处理、Wiki 镜像检查、提交和证据回写,不等同于功能第一次运行成功。
|
||||
- “最小验收条件”包括当前工单要求的实现、必要测试、文档影响处理、按需 Wiki 镜像检查、提交和证据回写,不等同于功能第一次运行成功。
|
||||
- 未影响当前验收的相邻问题只提示或建单,不顺手处理。
|
||||
|
||||
## 自然语言快捷指令
|
||||
@@ -279,23 +275,23 @@ python dev_scripts/harness.py export --all # 全量:读取全部线上任务
|
||||
|---|---|---|
|
||||
| `只分析` | 只读检查需求、代码、日志和文档,区分事实与假设并给出方案 | 输出方案并等待确认;不建单、不修改 |
|
||||
| `建工单` | 根据已经确认的方案创建单元任务工单 | 工单创建并记录完成;不修改代码 |
|
||||
| `执行工单 #N` | 读取工单和前置依赖,实施、测试、提交、更新 Wiki、导出镜像、推送并回写证据 | 工单保持“待验收” |
|
||||
| `执行工单 #N` | 读取工单和前置依赖,实施、测试、提交;仅在长期文档变化时更新 Wiki 并同步镜像;集中回写完成证据 | 工单保持“待验收” |
|
||||
| `建工单并做` | 依次执行“建工单”和“执行工单”;`建工单,做`、`建工单,做` 含义相同 | 工单保持“待验收” |
|
||||
| `继续工单 #N` | 核对工单、Git 和 Wiki 证据,从首个未完成步骤继续,不重复仍然有效的检查 | 到达该工单当前流程的停止条件 |
|
||||
| `检查工单 #N` | 只读对照范围、验收标准、测试和证据,报告通过项、缺失项及未验证部分 | 输出检查报告;不自动修复 |
|
||||
| `同步文档` | 读取 Wiki,导出核心长期文档镜像并检查一致性,不处理任务归档 | 显示结果和差异;不修改 Wiki、不自动提交 |
|
||||
| `导出任务归档` | 人工触发增量导出,只写入新增或 revision 已变化的任务归档 | 显示导出或跳过结果;不删除本地文件、不自动提交 |
|
||||
| `导出全部任务归档` | 人工触发全量读取并导出线上全部任务归档 | 显示导出结果;不删除本地文件、不自动提交 |
|
||||
| `#N 验收通过` | 记录明确验收,更新 Wiki 归档为“已完成”,同步必要的核心文档,推送、同步父工单并关闭任务;不自动导出任务归档 | 工单“已完成”并关闭 |
|
||||
| `导出任务归档` | 兼容指令;仅按用户明确要求增量导出历史 Wiki 任务归档 | 显示导出或跳过结果;不删除本地文件、不自动提交 |
|
||||
| `导出全部任务归档` | 兼容指令;仅按用户明确要求全量导出历史 Wiki 任务归档 | 显示导出结果;不删除本地文件、不自动提交 |
|
||||
| `#N 验收通过` | 在工单记录验收结论,按需推送尚未推送的提交,勾选父工单并关闭任务;不创建归档,不重复同步无变化的 Wiki | 工单“已完成”并关闭 |
|
||||
|
||||
补充边界:
|
||||
|
||||
- 方案未确认时,`建工单`、`建工单并做` 和 `执行工单 #N` 不得绕过确认;Agent 应停在方案确认。
|
||||
- 前置依赖未满足且不允许并行时,实施类指令停在“待实施”。
|
||||
- `#N 验收通过` 必须来自用户明确表达;其他快捷指令不得关闭待验收工单。
|
||||
- `同步文档` 或任务归档导出发现目标镜像有未提交改动时停止,不覆盖现有修改。
|
||||
- `导出任务归档` 和 `导出全部任务归档` 必须由用户明确提出,其他快捷指令不隐式执行。
|
||||
- Gitea 工单保留讨论和过程,不把工单全文导出到本地;`docs/task/` 只保存人工按需导出的 Wiki 最终任务归档快照。
|
||||
- `同步文档` 或历史任务归档导出发现目标镜像有未提交改动时停止,不覆盖现有修改。
|
||||
- `导出任务归档` 和 `导出全部任务归档` 是历史兼容能力,必须由用户明确提出,其他快捷指令不隐式创建或导出任务归档。
|
||||
- Gitea 工单保留讨论、完成证据和验收,不把工单全文导出到本地;`docs/task/` 只保存人工按需导出的历史 Wiki 任务快照。
|
||||
|
||||
## 什么时候重新确认方案
|
||||
|
||||
@@ -317,6 +313,6 @@ python dev_scripts/harness.py export --all # 全量:读取全部线上任务
|
||||
| 讨论过程和临时方案 | 是 | 否 | 否 |
|
||||
| 实施进度和阻塞 | 是 | 否 | 否 |
|
||||
| 长期有效的最终方案 | 链接 | 是 | 镜像 |
|
||||
| 测试结果与未验证内容 | 是 | 任务归档 | 按需镜像 |
|
||||
| 提交哈希 | 是 | 任务归档 | 按需镜像 |
|
||||
| 测试结果与未验证内容 | 是 | 否 | 否 |
|
||||
| 提交哈希与验收结论 | 是 | 否 | 否 |
|
||||
| 与具体代码版本绑定的说明 | 可链接 | 提供入口 | 是 |
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Common-Changes
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Common-Changes.-
|
||||
wiki_revision: d7d778dd5f6e2a2b007371c6ce07f8adc4469638
|
||||
synchronized_at: 2026-08-20T08:30:34Z
|
||||
wiki_revision: af13a8db3609a2b85b9dc46441bc3bd716b93c8e
|
||||
synchronized_at: 2026-08-24T07:59:44Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 常见修改指南
|
||||
@@ -14,11 +14,11 @@ synchronized_at: 2026-08-20T08:30:34Z
|
||||
|
||||
| 级别 | 例子 | 处理方式 |
|
||||
|---|---|---|
|
||||
| 低 | 不改变含义/布局/可访问性的显示文案,注释,文档措辞 | 最小验证;符合豁免时可不建单 |
|
||||
| 中 | 已确认页面的小样式、只读字段、普通日志、mock Provider 配置 | 建单并运行受影响测试 |
|
||||
| 高 | retryable、SSRF、加密/轮换、迁移、租约/CAS、身份权限、点数写入、删除/清理 | 停止,Agent 分析并等待人工确认 |
|
||||
| 低 | 文案、注释、文档措辞;不改变产品行为的测试;单文件且只恢复已有明确行为的小缺陷 | 满足免单条件时直接提交,执行受影响的最小验证 |
|
||||
| 中 | 已确认页面的小样式、只读字段、普通日志、mock Provider 配置、跨文件行为修改 | 建单并运行受影响测试 |
|
||||
| 高 | retryable、SSRF、密钥、迁移、租约/CAS、身份权限、删除/清理、发布和不可逆操作 | 必须建单;停止实施,由 Agent 分析并等待人工确认 |
|
||||
|
||||
风险按影响判断,不按行数判断。`internal/core` 新增 Gin/go-admin/gobreaker/imaging import 也是高风险边界破坏。
|
||||
新功能、API 或配置契约、数据库、权限、安全、并发、跨模块变化和重大 UI 必须建单。免单修改不得改变接口、数据库、状态、权限、安全、并发、流程、布局或可访问性;无法确定时建单。风险按影响判断,不按行数判断。`internal/core` 新增 Gin/go-admin/gobreaker/imaging import 也是高风险边界破坏。
|
||||
|
||||
## 修改用户端显示文案
|
||||
|
||||
@@ -65,7 +65,7 @@ synchronized_at: 2026-08-20T08:30:34Z
|
||||
|
||||
## 修改 Wiki 文案
|
||||
|
||||
长期文档以 Gitea Wiki 为事实来源:
|
||||
只有长期事实发生变化时才修改 Wiki;Gitea Wiki 是长期文档事实来源:
|
||||
|
||||
```text
|
||||
修改 Wiki → 在线回读 revision → sync 导出 docs → sync --check → 提交
|
||||
@@ -90,7 +90,7 @@ python -m unittest discover -s tests -v
|
||||
python dev_scripts/harness.py check --strict
|
||||
```
|
||||
|
||||
不要为了让检查变绿而削弱安全、Wiki 主源或任务归档边界。
|
||||
不要为了让检查变绿而削弱安全、Wiki 主源或工单事实来源边界。archive/export 只用于用户明确要求的历史快照,不属于标准任务闭环。
|
||||
|
||||
## 看懂 Agent 的修改
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Existing-Project-Adoption-Guide
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Existing-Project-Adoption-Guide.-
|
||||
wiki_revision: 2b20998dd7751c6fe3edfc26922722e44bf8496b
|
||||
synchronized_at: 2026-08-20T03:29:39Z
|
||||
wiki_revision: 6882d8c6a20375ad07999dd48daa2fc33fd3641a
|
||||
synchronized_at: 2026-08-24T08:00:02Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 已有项目接入 DevHarness 指南
|
||||
@@ -23,7 +23,7 @@ synchronized_at: 2026-08-20T03:29:39Z
|
||||
| 文档 | 创建核心主题页 | 逐页判断保留、迁移、合并或停止维护 |
|
||||
| 工单和 Wiki | 新建并开始使用 | 先检查已有工单、Wiki 和状态体系 |
|
||||
| Git 历史 | 允许一次引导提交 | 保留全部历史,不使用引导提交例外 |
|
||||
| 任务归档 | 从新项目任务开始 | 不复制 DevHarness 或其他项目的历史归档 |
|
||||
| 历史任务快照 | 默认不创建;按明确需要保留兼容能力 | 不复制 DevHarness 或其他项目的历史归档 |
|
||||
| 接入方式 | 一次建立最小骨架 | 分阶段增量接入并逐步验收 |
|
||||
|
||||
从模板创建全新仓库时使用[新项目文档初始化](New-Project-Documentation-Setup.-);项目已有业务提交、用户或维护历史时使用本页。
|
||||
@@ -71,7 +71,7 @@ Agent 在提出方案前只读检查:
|
||||
- 多个应用共同完成一条产品或业务链路;
|
||||
- 由同一团队维护,仓库权限基本一致;
|
||||
- 接口变更需要在一个工单中同步修改或验证多端;
|
||||
- 共享契约、业务规则和任务归档放在一起更容易保持一致;
|
||||
- 共享契约、业务规则和长期文档放在一起更容易保持一致;
|
||||
- 仓库体积、测试时间和工具性能尚未明显影响开发;
|
||||
- 初级维护者和 Agent 能通过目录、子目录 `AGENTS.md` 和文档入口清楚定位。
|
||||
|
||||
@@ -131,7 +131,7 @@ Agent 在提出方案前只读检查:
|
||||
|
||||
### 7. 提交和验收
|
||||
|
||||
提交只包含当前接入工单相关文件。记录测试、未验证部分、Wiki revision 和提交哈希,创建任务归档并保持工单“待验收”,等待用户明确验收后再关闭。
|
||||
提交只包含当前接入工单相关文件。记录测试、未验证部分、按需 Wiki revision 和提交哈希,并保持工单“待验收”,等待用户明确验收后再关闭。
|
||||
|
||||
## 后续升级
|
||||
|
||||
@@ -210,7 +210,7 @@ Agent 在提出方案前只读检查:
|
||||
|
||||
严格按工单范围增量接入 DevHarness,保留当前项目已有规则、历史、
|
||||
任务状态和无关改动。长期文档先更新 Gitea Wiki,读取确认后再导出
|
||||
本地 docs 镜像。执行必要测试,提交实现和任务归档,然后把工单保持
|
||||
本地 docs 镜像。执行必要测试,提交实现,并把完成证据集中回写工单,然后保持
|
||||
为“待验收”;未经我明确验收,不关闭工单。
|
||||
```
|
||||
|
||||
@@ -227,7 +227,7 @@ Agent 在提出方案前只读检查:
|
||||
- [ ] 已为每类长期文档明确事实来源和迁移状态。
|
||||
- [ ] Wiki-first 页面已经读取确认并具有显式镜像映射。
|
||||
- [ ] Harness 检查已按目标项目调整并通过。
|
||||
- [ ] 必要测试、未验证部分、提交和归档证据已记录。
|
||||
- [ ] 必要测试、未验证部分、提交和验收证据已记录在工单。
|
||||
- [ ] 工单处于待验收,未提前关闭。
|
||||
|
||||
## 回退原则
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Product-Requirements-Overview
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Product-Requirements-Overview.-
|
||||
wiki_revision: 88fff047d243ac3d7637ae4dfaa46559881000e1
|
||||
synchronized_at: 2026-08-24T03:49:28Z
|
||||
wiki_revision: b9376419b0451024cbff90d3e2f9888d033a1ef8
|
||||
synchronized_at: 2026-08-24T08:00:09Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 产品需求总览
|
||||
@@ -25,7 +25,7 @@ synchronized_at: 2026-08-24T03:49:28Z
|
||||
| 项目目标、用户、范围和技术基线 | Project-Profile | 链接和一句话摘要 |
|
||||
| 长期功能需求、业务规则和系统边界 | 对应 Wiki 主题页 | 需求领域和详情链接 |
|
||||
| 单次实现范围、变化和验收标准 | Gitea 单元任务工单 | 工单编号和当前状态 |
|
||||
| 已完成方案、测试和遗留问题 | Wiki 任务归档 | 验收入口 |
|
||||
| 已完成方案、测试、提交和遗留问题 | Gitea 单元任务工单 | 验收入口 |
|
||||
| 与版本绑定的原型、设计图或交互稿 | Git 中的 `design/` 或 `prototypes/` | 路径、版本和确认状态 |
|
||||
| 外部原型 | 原型平台 | 链接、版本或确认日期;重要版本保留可追溯快照 |
|
||||
|
||||
@@ -185,7 +185,7 @@ MVP-2 的 API Key 存哈希、身份仍属于 `users`。提交、查询、幂等
|
||||
- 唯一的详细 Wiki 页面;
|
||||
- 当前或主要实施工单;
|
||||
- 原型状态或明确写“无”;
|
||||
- 已交付时的任务归档或验收入口。
|
||||
- 已交付时的 Gitea 工单与验收入口。
|
||||
|
||||
需求正文、接口细节、业务规则和验收标准只在各自事实来源修改。本页使用一至两句话摘要并链接过去,不复制大段内容。
|
||||
|
||||
|
||||
+6
-6
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Home
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Home
|
||||
wiki_revision: 3d6efad79056ff85f7532e28a90c80f2c710c332
|
||||
synchronized_at: 2026-08-20T07:00:57Z
|
||||
wiki_revision: bf4f622133bfa31a595a5c57a62d6bcb0ed4189c
|
||||
synchronized_at: 2026-08-24T07:59:09Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# chorus 文档中心
|
||||
@@ -22,7 +22,7 @@ chorus 是从 cmhub 设计中抽取并用 Go 重写的独立生图生文服务
|
||||
6. [常见修改指南](Common-Changes.-):修改步骤和停止条件。
|
||||
7. [故障排查](Troubleshooting):按证据定位环境、队列、上游和生成器问题。
|
||||
8. [部署与运维](Deployment-and-Operations.-):生产迁移、服务、健康、备份和回退。
|
||||
9. [开发工作流](Development-Workflow.-):建单、确认、实施、验收与归档。
|
||||
9. [开发工作流](Development-Workflow.-):建单、确认、实施、验收与关闭。
|
||||
|
||||
## 五分钟开始
|
||||
|
||||
@@ -57,7 +57,7 @@ retryable、SSRF、密钥、迁移、租约/CAS、身份权限、点数写入、
|
||||
|---|---|
|
||||
| 单元任务状态、讨论、阻塞和验收 | Gitea 工单 |
|
||||
| 长期需求导航 | Product-Requirements-Overview |
|
||||
| 架构、规则、开发、排错、部署、归档 | Gitea Wiki |
|
||||
| 架构、规则、开发、排错和部署等长期文档 | Gitea Wiki |
|
||||
| 生产数据库结构和配置种子 | `migrations/` 可逆 SQL |
|
||||
| 源码和固定版本资料 | chorus Git;外部来源提交记录在 Project-Profile |
|
||||
| 已确认界面与交互 | `prototypes/<工单号>/<版本>/index.html` |
|
||||
@@ -73,7 +73,7 @@ retryable、SSRF、密钥、迁移、租约/CAS、身份权限、点数写入、
|
||||
- [代码仓库](https://git.ilapage.cn/OPC/chorus)
|
||||
- [新项目文档初始化](New-Project-Documentation-Setup.-)
|
||||
- [交付文档指南](Delivery-Documentation-Guide.-)
|
||||
- [任务归档模板](Task-Archive-Template.-)
|
||||
- [历史任务快照模板(兼容)](Task-Archive-Template.-)
|
||||
|
||||
## 同步原则
|
||||
|
||||
@@ -81,7 +81,7 @@ retryable、SSRF、密钥、迁移、租约/CAS、身份权限、点数写入、
|
||||
修改 Wiki → 在线回读 revision → 导出 docs → 校验差异 → 提交镜像
|
||||
```
|
||||
|
||||
- `wiki-docs.json` 显式映射核心和项目专用页面,普通同步不处理任务归档。
|
||||
- `wiki-docs.json` 显式映射核心和项目专用页面;仅在长期文档变化时同步,普通同步不处理历史任务快照。
|
||||
- 带 `generated: true` 的文件不得手工编辑;有未提交镜像修改时同步停止。
|
||||
- 页面删除、重命名和事实源变化必须先更新工单并确认。
|
||||
- 凭据、个人数据、真实 prompt、生成文件和生产数据不得进入文档、工单或原型。
|
||||
|
||||
Vendored
+4
-2
@@ -2,12 +2,14 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-Archive-Template
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Task-Archive-Template.-
|
||||
wiki_revision: 41240e7746990f3132201ad27c8f8c3a59240189
|
||||
synchronized_at: 2026-08-20T03:29:51Z
|
||||
wiki_revision: f4225cd1a9595591a5758b4e1d9cf5fd8954e06e
|
||||
synchronized_at: 2026-08-24T08:00:36Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# <工单号> <标题>
|
||||
|
||||
> 历史兼容模板:标准任务以 Gitea 工单保存实现、测试、提交和验收证据,不再创建 Wiki 任务归档。仅在用户明确要求专项历史快照时使用本模板。
|
||||
|
||||
- 类型:需求 / 缺陷 / 重构
|
||||
- 所属 Epic:#
|
||||
- 所属 MVP / 版本:#
|
||||
|
||||
@@ -177,6 +177,18 @@ class TaskTemplateTests(unittest.TestCase):
|
||||
errors,
|
||||
)
|
||||
|
||||
def test_task_template_requires_completion_evidence(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", encoding="utf-8")
|
||||
errors: list[str] = []
|
||||
check_task_template(errors, root)
|
||||
self.assertIn("单元任务模板缺少:## 完成证据", errors)
|
||||
self.assertIn("单元任务模板缺少:- 未验证部分:", errors)
|
||||
self.assertIn("单元任务模板缺少:- 提交哈希:", errors)
|
||||
|
||||
def test_task_template_requires_design_and_prototype_gate(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
|
||||
Reference in New Issue
Block a user